def test_inference_multi_modality_detector(): # these two multi-modality models both only have GPU implementations if not torch.cuda.is_available(): pytest.skip('test requires GPU and torch+cuda') # indoor scene pcd = 'tests/data/sunrgbd/points/000001.bin' img = 'tests/data/sunrgbd/sunrgbd_trainval/image/000001.jpg' ann_file = 'tests/data/sunrgbd/sunrgbd_infos.pkl' detector_cfg = 'configs/imvotenet/imvotenet_stage2_'\ '16x8_sunrgbd-3d-10class.py' detector = init_model(detector_cfg, device='cuda:0') results = inference_multi_modality_detector(detector, pcd, img, ann_file) bboxes_3d = results[0][0]['boxes_3d'] scores_3d = results[0][0]['scores_3d'] labels_3d = results[0][0]['labels_3d'] assert bboxes_3d.tensor.shape[0] >= 0 assert bboxes_3d.tensor.shape[1] == 7 assert scores_3d.shape[0] >= 0 assert labels_3d.shape[0] >= 0 # outdoor scene pcd = 'tests/data/kitti/training/velodyne_reduced/000000.bin' img = 'tests/data/kitti/training/image_2/000000.png' ann_file = 'tests/data/kitti/kitti_infos_train.pkl' detector_cfg = 'configs/mvxnet/dv_mvx-fpn_second_secfpn_adamw_' \ '2x8_80e_kitti-3d-3class.py' detector = init_model(detector_cfg, device='cuda:0') results = inference_multi_modality_detector(detector, pcd, img, ann_file) bboxes_3d = results[0][0]['pts_bbox']['boxes_3d'] scores_3d = results[0][0]['pts_bbox']['scores_3d'] labels_3d = results[0][0]['pts_bbox']['labels_3d'] assert bboxes_3d.tensor.shape[0] >= 0 assert bboxes_3d.tensor.shape[1] == 7 assert scores_3d.shape[0] >= 0 assert labels_3d.shape[0] >= 0
def main(): parser = ArgumentParser() parser.add_argument('pcd', help='Point cloud file') parser.add_argument('config', help='Config file') parser.add_argument('checkpoint', help='Checkpoint file') parser.add_argument('--device', default='cuda:0', help='Device used for inference') parser.add_argument('--out-dir', type=str, default='demo', help='dir to save results') parser.add_argument('--show', action='store_true', help='show online visuliaztion results') parser.add_argument('--snapshot', action='store_true', help='whether to save online visuliaztion results') args = parser.parse_args() # build the model from a config file and a checkpoint file model = init_model(args.config, args.checkpoint, device=args.device) # test a single image result, data = inference_segmentor(model, args.pcd) # show the results show_result_meshlab(data, result, args.out_dir, show=args.show, snapshot=args.snapshot, task='seg', palette=model.PALETTE)
def test_inference_segmentor(): # PN2 only has GPU implementations if not torch.cuda.is_available(): pytest.skip('test requires GPU and torch+cuda') pcd = 'tests/data/scannet/points/scene0000_00.bin' segmentor_cfg = 'configs/pointnet2/pointnet2_ssg_' \ '16x2_cosine_200e_scannet_seg-3d-20class.py' segmentor = init_model(segmentor_cfg, device='cuda:0') results = inference_segmentor(segmentor, pcd) seg_3d = results[0][0]['semantic_mask'] assert seg_3d.shape == torch.Size([100]) assert seg_3d.min() >= 0 assert seg_3d.max() <= 19
def test_inference_detector(): pcd = 'tests/data/kitti/training/velodyne_reduced/000000.bin' detector_cfg = 'configs/pointpillars/hv_pointpillars_secfpn_' \ '6x8_160e_kitti-3d-3class.py' detector = init_model(detector_cfg, device='cpu') results = inference_detector(detector, pcd) bboxes_3d = results[0][0]['boxes_3d'] scores_3d = results[0][0]['scores_3d'] labels_3d = results[0][0]['labels_3d'] assert bboxes_3d.tensor.shape[0] >= 0 assert bboxes_3d.tensor.shape[1] == 7 assert scores_3d.shape[0] >= 0 assert labels_3d.shape[0] >= 0
def test_inference_detector(): if not torch.cuda.is_available(): pytest.skip('test requires GPU and torch+cuda') pcd = 'tests/data/kitti/training/velodyne_reduced/000000.bin' detector_cfg = 'configs/pointpillars/hv_pointpillars_secfpn_' \ '6x8_160e_kitti-3d-3class.py' detector = init_model(detector_cfg, device='cuda:0') results = inference_detector(detector, pcd) bboxes_3d = results[0][0]['boxes_3d'] scores_3d = results[0][0]['scores_3d'] labels_3d = results[0][0]['labels_3d'] assert bboxes_3d.tensor.shape[0] >= 0 assert bboxes_3d.tensor.shape[1] == 7 assert scores_3d.shape[0] >= 0 assert labels_3d.shape[0] >= 0
def test_inference_mono_3d_detector(): # FCOS3D only has GPU implementations if not torch.cuda.is_available(): pytest.skip('test requires GPU and torch+cuda') img = 'tests/data/nuscenes/samples/CAM_BACK_LEFT/' \ 'n015-2018-07-18-11-07-57+0800__CAM_BACK_LEFT__1531883530447423.jpg' ann_file = 'tests/data/nuscenes/nus_infos_mono3d.coco.json' detector_cfg = 'configs/fcos3d/fcos3d_r101_caffe_fpn_gn-head_dcn_' \ '2x8_1x_nus-mono3d.py' detector = init_model(detector_cfg, device='cuda:0') results = inference_mono_3d_detector(detector, img, ann_file) bboxes_3d = results[0][0]['img_bbox']['boxes_3d'] scores_3d = results[0][0]['img_bbox']['scores_3d'] labels_3d = results[0][0]['img_bbox']['labels_3d'] assert bboxes_3d.tensor.shape[0] >= 0 assert bboxes_3d.tensor.shape[1] == 9 assert scores_3d.shape[0] >= 0 assert labels_3d.shape[0] >= 0
def main(): parser = ArgumentParser() parser.add_argument('pcd', help='Point cloud file') parser.add_argument('image', help='image file') parser.add_argument('ann', help='ann file') parser.add_argument('config', help='Config file') parser.add_argument('checkpoint', help='Checkpoint file') parser.add_argument('--device', default='cuda:0', help='Device used for inference') parser.add_argument('--score-thr', type=float, default=0.0, help='bbox score threshold') parser.add_argument('--out-dir', type=str, default='demo', help='dir to save results') parser.add_argument('--show', action='store_true', help='show online visualization results') parser.add_argument('--snapshot', action='store_true', help='whether to save online visualization results') args = parser.parse_args() # build the model from a config file and a checkpoint file model = init_model(args.config, args.checkpoint, device=args.device) # test a single image result, data = inference_multi_modality_detector(model, args.pcd, args.image, args.ann) # show the results show_result_meshlab(data, result, args.out_dir, args.score_thr, show=args.show, snapshot=args.snapshot, task='multi_modality-det')