def add_fast_rcnn_blobs(blobs, im_scales, roidb): """Add blobs needed for training Fast R-CNN style models.""" global label_code if label_code == None: f = open('/data/dataset/AVA/preproc/annotations/ava_label_codes.json', 'r') label_code = json.load(f) # Sample training RoIs from each image and append them to the blob lists for im_i, entry in enumerate(roidb): frcn_blobs = _sample_rois(entry, im_scales[im_i], im_i, label_code) for k, v in frcn_blobs.items(): blobs[k].append(v) # Concat the training blob lists into tensors for k, v in blobs.items(): if isinstance(v, list) and len(v) > 0: blobs[k] = np.concatenate(v) # Add FPN multilevel training RoIs, if configured if cfg.FPN.FPN_ON and cfg.FPN.MULTILEVEL_ROIS: _add_multilevel_rois(blobs) # Perform any final work and validity checks after the collating blobs for # all minibatch images valid = True if cfg.MODEL.KEYPOINTS_ON: valid = keypoint_rcnn_roi_data.finalize_keypoint_minibatch( blobs, valid) return valid
def add_fast_rcnn_blobs(blobs, im_scales, roidb): """Add blobs needed for training Fast R-CNN style models.""" # Sample training RoIs from each image and append them to the blob lists blobs['fg_num'] = [0.] for im_i, entry in enumerate(roidb): frcn_blobs = _sample_rois(entry, im_scales[im_i], im_i) for k, v in frcn_blobs.items(): if k == 'fg_num': blobs[k] += v else: blobs[k].append(v) # Concat the training blob lists into tensors # for k, v in blobs.items(): if isinstance(v, list) and len(v) > 0: blobs[k] = np.concatenate(v) # Add FPN multilevel training RoIs, if configured if cfg.FPN.FPN_ON and cfg.FPN.MULTILEVEL_ROIS: _add_multilevel_rois(blobs) # Perform any final work and validity checks after the collating blobs for # all minibatch images valid = True if cfg.MODEL.KEYPOINTS_ON: valid = keypoint_rcnn_roi_data.finalize_keypoint_minibatch(blobs, valid) return valid
def add_cascade_rcnn_blobs(blobs, im_scales, roidb, stage): """Add blobs needed for training Cascade R-CNN style models.""" # Sample training RoIs from each image and append them to the blob lists for im_i, entry in enumerate(roidb): frcn_blobs = _sample_rois(entry, im_scales[im_i], im_i, stage) for k, v in frcn_blobs.items(): if 'mask' not in k and 'keypoint' not in k: k += "_{}".format(stage) blobs[k].append(v) # Concat the training blob lists into tensors for k, v in blobs.items(): if isinstance(v, list) and len(v) > 0: blobs[k] = np.concatenate(v) # Add FPN multilevel training RoIs, if configured if cfg.FPN.FPN_ON and cfg.FPN.MULTILEVEL_ROIS: _add_multilevel_rois(blobs, stage) # Perform any final work and validity checks after the collating blobs for # all minibatch images valid = True if cfg.MODEL.KEYPOINTS_ON and cfg.KRCNN.AT_STAGE == stage: valid = keypoint_rcnn_roi_data.finalize_keypoint_minibatch( blobs, valid) return valid
def add_fast_rcnn_blobs(blobs, im_scales, roidb): """Add blobs needed for training Fast R-CNN style models.""" # Sample training RoIs from each image and append them to the blob lists # # by Jerome: make sure the roi batch is equally divisible by IMGS_PER_BATCH by decreasing the rois per img to # # the amount of the image in the batch with the least of them # min_rois_per_img = min(len(entry['gt_classes']) for entry in roidb) # if min_rois_per_img < int(cfg.TRAIN.BATCH_SIZE_PER_IM): # print('rois per img pruned to', min_rois_per_img) for im_i, entry in enumerate(roidb): if True or (cfg.TRAIN.DOMAIN_ADAPTATION and entry['is_source']) or not cfg.TRAIN.DOMAIN_ADAPTATION: frcn_blobs = _sample_rois(entry, im_scales[im_i], im_i) #, max_rois=min_rois_per_img) for k, v in frcn_blobs.items(): blobs[k].append(v) if cfg.TRAIN.DOMAIN_ADAPTATION: da_blobs = _sample_da_rois(entry, im_scales[im_i], im_i) for k, v in da_blobs.items(): blobs[k].append(v) # Concat the training blob lists into tensors for k, v in blobs.items(): if isinstance(v, list) and len(v) > 0: blobs[k] = np.concatenate(v) # Add FPN multilevel training RoIs, if configured if cfg.FPN.FPN_ON and cfg.FPN.MULTILEVEL_ROIS: _add_multilevel_rois(blobs) if cfg.TRAIN.PADA: # Cancel out the large gradients from loss-averaging over small roi proposal batches. # loss-averaging for regular batches means dividing the instance losses by the regular batch size. # we correct small batch loss-averaging by multiplying by the small batch size, and dividing by the regular batch size. regular_rois_batch_size = cfg.TRAIN.IMS_PER_BATCH * cfg.TRAIN.BATCH_SIZE_PER_IM pada_weights = blobs['pada_roi_weights'] rois = len(pada_weights) pada_weights *= rois / regular_rois_batch_size # lower pada_weights means lower learning rate. blobs['pada_roi_weights'] = pada_weights # Perform any final work and validity checks after the collating blobs for # all minibatch images valid = True if cfg.MODEL.KEYPOINTS_ON: valid = keypoint_rcnn_roi_data.finalize_keypoint_minibatch( blobs, valid) return valid
def add_fast_rcnn_blobs(blobs, im_scales, roidb): """Add blobs needed for training Fast R-CNN style models.""" # Sample training RoIs from each image and append them to the blob lists for im_i, entry in enumerate(roidb): frcn_blobs = _sample_rois(entry, im_scales[im_i], im_i) for k, v in frcn_blobs.items(): blobs[k].append(v) # Concat the training blob lists into tensors for k, v in blobs.items(): if isinstance(v, list) and len(v) > 0: blobs[k] = np.concatenate(v) # Add FPN multilevel training RoIs, if configured if cfg.FPN.FPN_ON and cfg.FPN.MULTILEVEL_ROIS: _add_multilevel_rois(blobs) # Perform any final work and validity checks after the collating blobs for # all minibatch images valid = True if cfg.MODEL.KEYPOINTS_ON: valid = keypoint_rcnn_roi_data.finalize_keypoint_minibatch(blobs, valid) return valid