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
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