def compute_targets(proposals, gt_rois, iou_threshold, normalize_means, normalize_stds): """Compute bounding-box regression targets for an image.""" if len(gt_rois) == 0: # Bail if the image has no ground-truth ROIs return np.zeros((proposals.shape[0], 6), dtype=np.float32) # Get IoU overlap between each ex ROI and gt ROI ex_gt_overlaps = bbox_overlaps( np.ascontiguousarray(proposals, dtype=np.float), np.ascontiguousarray(gt_rois, dtype=np.float)) # Indices of examples for which we try to make predictions ex_inds = np.where( ex_gt_overlaps >= iou_threshold)[0] # cfg.TRAIN.BBOX_THRESH # Find which gt ROI each ex ROI has max overlap with: # this will be the ex ROI's gt target gt_assignment_inds = ex_gt_overlaps.argmax(axis=1) gt_assignment_rois = gt_rois[gt_assignment_inds, :] regression_targets = bbox_transform(proposals[ex_inds], gt_assignment_rois[ex_inds]) # Optionally normalize targets by a precomputed mean and stdev if normalize_means is not None: regression_targets = (regression_targets - normalize_means) / normalize_stds targets = np.zeros((proposals.shape[0], 6), dtype=np.float32) targets[ex_inds, :4] = regression_targets targets[ex_inds, 4] = gt_rois[gt_assignment_inds[ex_inds], 4] targets[ex_inds, 5] = 1 # bbiw return targets
def compute_targets(proposals, gt_rois, iou_threshold, normalize_means, normalize_stds): """Compute bounding-box regression targets for an image.""" if len(gt_rois) == 0: # Bail if the image has no ground-truth ROIs return np.zeros((proposals.shape[0], 6), dtype=np.float32) # Get IoU overlap between each ex ROI and gt ROI ex_gt_overlaps = bbox_overlaps( np.ascontiguousarray(proposals, dtype=np.float), np.ascontiguousarray(gt_rois, dtype=np.float)) # Indices of examples for which we try to make predictions ex_inds = np.where(ex_gt_overlaps >= iou_threshold)[0] # cfg.TRAIN.BBOX_THRESH # Find which gt ROI each ex ROI has max overlap with: # this will be the ex ROI's gt target gt_assignment_inds = ex_gt_overlaps.argmax(axis=1) gt_assignment_rois = gt_rois[gt_assignment_inds, :] regression_targets = bbox_transform(proposals[ex_inds], gt_assignment_rois[ex_inds]) # Optionally normalize targets by a precomputed mean and stdev if normalize_means is not None: regression_targets = (regression_targets - normalize_means) / normalize_stds targets = np.zeros((proposals.shape[0], 6), dtype=np.float32) targets[ex_inds, :4] = regression_targets targets[ex_inds, 4] = gt_rois[gt_assignment_inds[ex_inds], 4] targets[ex_inds, 5] = 1 # bbiw return targets
def _compute_targets(ex_rois, gt_rois): """Compute bounding-box regression targets for an image.""" assert ex_rois.shape[0] == gt_rois.shape[0] assert ex_rois.shape[1] == 4 assert gt_rois.shape[1] == 5 return bbox_transform(ex_rois, gt_rois[:, :4]).astype(np.float32, copy=False)
def _compute_targets(ex_rois, gt_rois, labels): """Compute bounding-box regression targets for an image.""" assert ex_rois.shape[0] == gt_rois.shape[0] assert ex_rois.shape[1] == 4 assert gt_rois.shape[1] == 4 targets = bbox_transform(ex_rois, gt_rois) return np.hstack((labels[:, np.newaxis], targets)).astype(np.float32, copy=False)
def _compute_targets(ex_rois, gt_rois, labels): """Compute bounding-box regression targets for an image.""" assert ex_rois.shape[0] == gt_rois.shape[0] assert ex_rois.shape[1] == 4 assert gt_rois.shape[1] == 4 targets = bbox_transform(ex_rois, gt_rois) if cfg.TRAIN.BBOX_NORMALIZE_TARGETS_PRECOMPUTED: # Optionally normalize targets by a precomputed mean and stdev targets = ((targets - np.array(cfg.TRAIN.BBOX_NORMALIZE_MEANS)) / np.array(cfg.TRAIN.BBOX_NORMALIZE_STDS)) return np.hstack((labels[:, np.newaxis], targets)).astype(np.float32, copy=False)
def _compute_targets(self, ex_rois, gt_rois, labels): """Compute bounding-box regression targets for an image.""" assert ex_rois.shape[0] == gt_rois.shape[0] assert ex_rois.shape[1] == 4 assert gt_rois.shape[1] == 4 targets = bbox_transform(ex_rois, gt_rois) if self._normalize_targets: # Optionally normalize targets by a precomputed mean and stdev targets = ((targets - np.array(self._normalize_means)) / np.array(self._normalize_stds)) return np.hstack((labels[:, np.newaxis], targets)).astype(np.float32, copy=False)