modes: reproject_centroid,
(
self,
camX_T_origin=None,
obj_center_camX0_=None,
object_category=None,
rgb=None,
score_threshold=0.0,
object_id=None,
sampling='center'
)
| 729 | return scores |
| 730 | |
| 731 | def get_2D_point( |
| 732 | self, |
| 733 | camX_T_origin=None, |
| 734 | obj_center_camX0_=None, |
| 735 | object_category=None, |
| 736 | rgb=None, |
| 737 | score_threshold=0.0, |
| 738 | object_id=None, |
| 739 | sampling='center' |
| 740 | ): |
| 741 | ''' |
| 742 | modes: reproject_centroid, |
| 743 | ''' |
| 744 | |
| 745 | if not self.use_gt_objecttrack: # first use detector? |
| 746 | if self.use_mask_rcnn_pred: |
| 747 | pred_boxes_or_masks_, pred_labels_, pred_scores_ = self.get_maskrcnn_predictions() |
| 748 | pred_boxes_or_masks, pred_labels, pred_scores = [], [], [] |
| 749 | for i in range(len(pred_labels_)): |
| 750 | if object_category is None or self.id_to_name[pred_labels_[i]]==object_category: |
| 751 | pred_boxes_or_masks.append(pred_boxes_or_masks_[i]) |
| 752 | pred_labels.append(pred_labels_[i]) |
| 753 | pred_scores.append(pred_scores_[i]) |
| 754 | if len(pred_boxes_or_masks)>0: |
| 755 | pred_boxes_or_masks = np.stack(pred_boxes_or_masks, axis=0) |
| 756 | pred_labels = np.asarray(pred_labels) |
| 757 | pred_scores = np.asarray(pred_scores) |
| 758 | if object_id is not None: |
| 759 | pred_scores_sorted = self.sort_masks_by_reprojected_from_ID(pred_boxes_or_masks, object_id, return_idxs=True) |
| 760 | else: |
| 761 | pred_scores_sorted = np.argsort(-pred_scores) |
| 762 | elif self.use_odin: |
| 763 | self.odin_input_dict['images'].append(rgb.copy()) |
| 764 | self.odin_input_dict['depths'].append(self.navigation.task.get_observations()["depth"]) |
| 765 | self.odin_input_dict['poses'].append(self.world_t_weird @ self.navigation.explorer.get_camX0_T_camX()) |
| 766 | self.odin_input_dict['intrinsics'].append(self.pix_T_camX) |
| 767 | pred_boxes_or_masks, pred_labels, pred_scores, _, _ = self.multiview_detector.get_masks( |
| 768 | self.odin_input_dict, |
| 769 | target_class=object_category, |
| 770 | score_threshold=score_threshold, |
| 771 | id_to_mapped_id=self.id_to_mapped_id, |
| 772 | ) |
| 773 | pred_boxes_or_masks = pred_boxes_or_masks[:,-1] |
| 774 | if len(pred_boxes_or_masks)>0: |
| 775 | keep = np.sum(pred_boxes_or_masks.reshape(pred_boxes_or_masks.shape[0], -1), axis=1)>0 |
| 776 | pred_boxes_or_masks, pred_labels, pred_scores = pred_boxes_or_masks[keep], pred_labels[keep], pred_scores[keep] |
| 777 | if object_id is not None: |
| 778 | pred_scores_sorted = self.sort_masks_by_reprojected_from_ID(pred_boxes_or_masks, object_id, return_idxs=True) |
| 779 | else: |
| 780 | pred_scores_sorted = np.argsort(-pred_scores) |
| 781 | else: |
| 782 | with torch.no_grad(): |
| 783 | # first see if detector has it |
| 784 | out = check_for_detections( |
| 785 | rgb, self.ddetr, self.W, self.H, |
| 786 | self.score_labels_name, self.score_boxes_name, |
| 787 | score_threshold_ddetr=score_threshold, do_nms=False, return_features=False, |
| 788 | solq=self.use_solq, return_masks=self.do_masks, nms_threshold=self.nms_threshold, id_to_mapped_id=self.id_to_mapped_id, |
no test coverage detected