def _generate_proposals(self, box): """ Generates proposals by adding noise to the input box args: box - input box returns: torch.Tensor - Array of shape (num_proposals, 4) containing proposals torch.Tensor - Array of shape (num_proposals,) containing IoU overlap of each proposal with the input box. The IoU is mapped to [-1, 1] """ # Generate proposals num_proposals = self.proposal_params['boxes_per_frame'] proposal_method = self.proposal_params.get('proposal_method', 'default') if proposal_method == 'default': proposals = torch.zeros((num_proposals, 4)) gt_iou = torch.zeros(num_proposals) for i in range(num_proposals): proposals[i, :], gt_iou[i] = prutils.perturb_box( box, min_iou=self.proposal_params['min_iou'], sigma_factor=self.proposal_params['sigma_factor']) elif proposal_method == 'gmm': proposals, _, _ = prutils.sample_box_gmm( box, self.proposal_params['proposal_sigma'], num_samples=num_proposals) gt_iou = prutils.iou(box.view(1, 4), proposals.view(-1, 4)) # Map to [-1, 1] gt_iou = gt_iou * 2 - 1 return proposals, gt_iou
def _generate_proposals(self, box, rng): """ Generates proposals by adding noise to the input box args: box - input box returns: array - Array of shape (num_proposals, 4) containing proposals array - Array of shape (num_proposals,) containing IoU overlap of each proposal with the input box. The IoU is mapped to [-1, 1] """ # Generate proposals num_proposals = self.proposal_params['boxes_per_frame'] proposals = np.zeros((num_proposals, 4)) gt_iou = np.zeros(num_proposals) for i in range(num_proposals): proposals[i, :], gt_iou[i] = prutils.perturb_box( box, min_iou=self.proposal_params['min_iou'], sigma_factor=self.proposal_params['sigma_factor'], rng=rng) # Map to [-1, 1] gt_iou = gt_iou * 2 - 1 return proposals, gt_iou