コード例 #1
0
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
コード例 #2
0
ファイル: fast_rcnn.py プロジェクト: caiPactera/Detectron
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
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
ファイル: fast_rcnn.py プロジェクト: Jakaria08/Detectron
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