Ejemplo n.º 1
0
    def show_train_res(self, img, gt_bboxes, img_metas, outs, score_threshold):
          from configs.common import DIM_PARSE
          img = img[0].permute(1,2,0).cpu().data.numpy()
          _gt_bboxes = [g.cpu().data.numpy() for g in gt_bboxes][0:1]
          rescale = False
          bbox_inputs = outs + (img_metas, self.test_cfg, rescale)
          bbox_list = self.bbox_head.get_bboxes(*bbox_inputs)
          det_bboxes, det_labels, _ = bbox_list[0]
          _det_bboxes0 = det_bboxes.cpu().data.numpy()
          assert not 'background' in img_metas[0]['classes']
          dim_parse = DIM_PARSE( self.obj_rep, len(img_metas[0]['classes'])+1 )
          _det_bboxes1 = dim_parse.clean_bboxes_out(_det_bboxes0,'final', 'line_ave' )
          _det_bboxes = [_det_bboxes1]
          ngt = len(_gt_bboxes[0])
          ndt = len(_det_bboxes[0])
          print(f'gt num={ngt}, det num={ndt}')

          mask0 = _det_bboxes[0][:,5] >= score_threshold[0]
          mask1 = _det_bboxes[0][:,5] <= score_threshold[1]
          mask =  mask0 * mask1

          #debug_utils._show_lines_ls_points_ls((512,512), _det_bboxes)
          #debug_utils._show_lines_ls_points_ls((512,512), _gt_bboxes)
          _show_objs_ls_points_ls((512,512),
                                  objs_ls = [_gt_bboxes[0][:,:5], _det_bboxes[0][mask][:,:5]],
                                  obj_scores_ls = [None, _det_bboxes[0][mask][:,5]],
                                  obj_colors=['red','green'],  obj_rep=self.obj_rep )
          _show_objs_ls_points_ls(img[:,:,0], [_gt_bboxes[0]], obj_rep=self.obj_rep)
          pass
Ejemplo n.º 2
0
    def simple_test(self, img, img_meta, rescale=False, gt_bboxes=None, gt_labels=None, gt_relations=None):
        from configs.common import DIM_PARSE
        record_time = DEBUG_CFG.RECORD_TEST_TIME
        if record_time:
          t0 = time.time()
        if DEBUG_CFG.DISABLE_RESCALE:
          rescale = False
        #_show_objs_ls_points_ls(img[0].permute(1,2,0).cpu().data.numpy(), [gt_bboxes[0][0].cpu().data.numpy()], 'RoLine2D_UpRight_xyxy_sin2a')
        x = self.extract_feat(img, gt_bboxes)
        if record_time:
          t1 = time.time()
        self.update_dynamic_shape(x, img_meta)
        #update_img_shape_for_pcl(x, img_meta[0], self.point_strides)
        outs = self.bbox_head(x)
        if record_time:
          t2 = time.time()
        bbox_inputs = outs + (img_meta, self.test_cfg, rescale)
        bbox_list = self.bbox_head.get_bboxes(*bbox_inputs)
        bbox_results = [
            bbox2result(det_bboxes, det_labels, self.bbox_head.num_classes)
            for det_bboxes, det_labels ,_ in bbox_list
        ]
        if bbox_list[0][2] is not None:
          relation_scores = [self.bbox_head.get_relations(relation_scores).cpu().numpy() for _,_, relation_scores in bbox_list]
        else:
          relation_scores = [None]

        results = dict( det_bboxes=bbox_results[0], gt_bboxes=gt_bboxes, gt_labels=gt_labels, img = img, det_relations = relation_scores[0])
        if record_time:
          t3 = time.time()
          print(f'\nTime\nbackbone:\t {t1-t0:.4f}')
          print(f'head prediction:\t {t2-t1:.4f}')
          print(f'NMS: {t3-t2:.4f}')
          pass
        if 0:
          dim_parse = DIM_PARSE( len(img_meta[0]['classes'])+1 )
          det_bboxes = dim_parse.clean_bboxes_out( bbox_results[0][0],'final', 'line_ave' )[:,:5]
          _show_objs_ls_points_ls(img[0].permute(1,2,0).cpu().data.numpy(), [gt_bboxes[0][0].cpu().data.numpy(), det_bboxes], 'RoLine2D_UpRight_xyxy_sin2a')
          _show_objs_ls_points_ls(img[0].permute(1,2,0).cpu().data.numpy(), [gt_bboxes[0][0].cpu().data.numpy(), ], 'RoLine2D_UpRight_xyxy_sin2a')
        return results