Esempio n. 1
0
 def _distribute_rois_over_fpn_levels(rois_blob_name):
     """Distribute rois over the different FPN levels."""
     # Get target level for each roi
     # Recall blob rois are in (batch_idx, x1, y1, x2, y2) format, hence take
     # the box coordinates from columns 1:5
     rois_blob_name_copy = rois_blob_name
     if rois_blob_name == 'rois_hg':
         rois_blob_name_copy = 'rois'
     if rois_blob_name == 'mask_rois':
         target_lvls = fpn.map_mask_rois_to_fpn_levels(
             blobs[rois_blob_name_copy][:, 1:5], lvl_min, lvl_max)
     else:
         target_lvls = fpn.map_rois_to_fpn_levels(
             blobs[rois_blob_name_copy][:, 1:5], lvl_min, lvl_max)
     # Add per FPN level roi blobs named like: <rois_blob_name>_fpn<lvl>
     fpn.add_multilevel_roi_blobs(blobs, rois_blob_name,
                                  blobs[rois_blob_name], target_lvls,
                                  lvl_min, lvl_max)
Esempio n. 2
0
def _add_multilevel_rois_for_test(blobs, name):
    """Distributes a set of RoIs across FPN pyramid levels by creating new level
    specific RoI blobs.

    Arguments:
        blobs (dict): dictionary of blobs
        name (str): a key in 'blobs' identifying the source RoI blob

    Returns:
        [by ref] blobs (dict): new keys named by `name + 'fpn' + level`
            are added to dict each with a value that's an R_level x 5 ndarray of
            RoIs (see _get_rois_blob for format)
    """
    lvl_min = cfg.FPN.ROI_MIN_LEVEL
    lvl_max = cfg.FPN.ROI_MAX_LEVEL
    if name == 'mask_rois':
        lvls = fpn.map_mask_rois_to_fpn_levels(blobs[name][:, 1:5], lvl_min,
                                               lvl_max)
    else:
        lvls = fpn.map_rois_to_fpn_levels(blobs[name][:, 1:5], lvl_min,
                                          lvl_max)
    fpn.add_multilevel_roi_blobs(blobs, name, blobs[name], lvls, lvl_min,
                                 lvl_max)