lib/roi_data/fast_rcnn_rel.py [373:403]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        unique_rel_roi_obj = rois_obj[rel_keep_inds_obj]

    # create potential relationships by considering all pairs
    rel_all_rois_sbj = np.repeat(unique_rel_roi_sbj, len(unique_rel_roi_obj), axis=0)
    rel_all_rois_obj = np.tile(unique_rel_roi_obj, (len(unique_rel_roi_sbj), 1))
    rel_all_rois_prd = box_union(rel_all_rois_sbj, rel_all_rois_obj)

    rel_overlaps_sbj = box_utils.bbox_overlaps(
        rel_all_rois_sbj[:, 1:5].astype(dtype=np.float32, copy=False),
        sbj_gt_boxes[:, :4].astype(dtype=np.float32, copy=False))

    rel_overlaps_obj = box_utils.bbox_overlaps(
        rel_all_rois_obj[:, 1:5].astype(dtype=np.float32, copy=False),
        obj_gt_boxes[:, :4].astype(dtype=np.float32, copy=False))

    # sample foreground candidates
    overlaps_pair_min = np.minimum(rel_overlaps_sbj, rel_overlaps_obj)
    max_overlaps_pair_min = overlaps_pair_min.max(axis=1)
    gt_assignment_pair_min = overlaps_pair_min.argmax(axis=1)
    rel_gt_inds = np.where((max_overlaps_pair_min >= 0.99999))[0]
    rel_pos_inds = np.where((max_overlaps_pair_min >= cfg.TRAIN.FG_THRESH) &
                            (max_overlaps_pair_min < 0.99999))[0]
    rel_fg_rois_per_this_image = min(int(fg_rois_per_image),
                                     rel_gt_inds.size + rel_pos_inds.size)
    if rel_pos_inds.size > 0 and \
       rel_pos_inds.size > fg_rois_per_image - rel_gt_inds.size:
        rel_pos_inds = npr.choice(rel_pos_inds,
                                  size=(rel_fg_rois_per_this_image - rel_gt_inds.size),
                                  replace=False)

    rel_fg_inds = np.append(rel_pos_inds, rel_gt_inds)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



lib/roi_data/fast_rcnn_rel.py [583:613]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    unique_rel_roi_obj = rois_obj[rel_keep_inds_obj]

    # create potential relationships by considering all pairs
    rel_all_rois_sbj = np.repeat(unique_rel_roi_sbj, len(unique_rel_roi_obj), axis=0)
    rel_all_rois_obj = np.tile(unique_rel_roi_obj, (len(unique_rel_roi_sbj), 1))
    rel_all_rois_prd = box_union(rel_all_rois_sbj, rel_all_rois_obj)

    rel_overlaps_sbj = box_utils.bbox_overlaps(
        rel_all_rois_sbj[:, 1:5].astype(dtype=np.float32, copy=False),
        sbj_gt_boxes[:, :4].astype(dtype=np.float32, copy=False))

    rel_overlaps_obj = box_utils.bbox_overlaps(
        rel_all_rois_obj[:, 1:5].astype(dtype=np.float32, copy=False),
        obj_gt_boxes[:, :4].astype(dtype=np.float32, copy=False))

    # sample foreground candidates
    overlaps_pair_min = np.minimum(rel_overlaps_sbj, rel_overlaps_obj)
    max_overlaps_pair_min = overlaps_pair_min.max(axis=1)
    gt_assignment_pair_min = overlaps_pair_min.argmax(axis=1)
    rel_gt_inds = np.where((max_overlaps_pair_min >= 0.99999))[0]
    rel_pos_inds = np.where((max_overlaps_pair_min >= cfg.TRAIN.FG_THRESH) &
                            (max_overlaps_pair_min < 0.99999))[0]
    rel_fg_rois_per_this_image = min(int(fg_rois_per_image),
                                     rel_gt_inds.size + rel_pos_inds.size)
    if rel_pos_inds.size > 0 and \
       rel_pos_inds.size > fg_rois_per_image - rel_gt_inds.size:
        rel_pos_inds = npr.choice(rel_pos_inds,
                                  size=(rel_fg_rois_per_this_image - rel_gt_inds.size),
                                  replace=False)

    rel_fg_inds = np.append(rel_pos_inds, rel_gt_inds)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



