filaPro / oneformer3d

[CVPR2024] OneFormer3D: One Transformer for Unified Point Cloud Segmentation
Other
357 stars 33 forks source link

AttributeError: 'PointData' object has no attribute 'pts_semantic_mask' #99

Open MelodyXXX opened 1 day ago

MelodyXXX commented 1 day ago

root@ea607ab0c950:/workspace# PYTHONPATH=.:$PYTHONPATH python tools/test.py configs/oneformer3d_1xb4_scannet.py work_dirs/oneformer3d_1xb4_scannet/oneformer3d_1xb4_scannet.pth --show --task lidar_seg /opt/conda/lib/python3.10/site-packages/mmdet3d/evaluation/functional/kitti_utils/eval.py:10: NumbaDeprecationWarning: The 'nopython' keyword argument was not supplied to the 'numba.jit' decorator. The implicit default value for this argument is currently False, but it will be changed to True in Numba 0.59.0. See https://numba.readthedocs.io/en/stable/reference/deprecation.html#deprecation-of-object-mode-fall-back-behaviour-when-using-jit for details. def get_thresholds(scores: np.ndarray, num_gt, num_sample_pts=41): 12/02 10:01:06 - mmengine - INFO -

System environment: sys.platform: linux Python: 3.10.8 (main, Nov 4 2022, 13:48:29) [GCC 11.2.0] CUDA available: True numpy_random_seed: 720987765 GPU 0: NVIDIA GeForce RTX 3060 CUDA_HOME: /opt/conda NVCC: Cuda compilation tools, release 11.6, V11.6.124 GCC: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 PyTorch: 1.13.1 PyTorch compiling details: PyTorch built with:

Runtime environment: cudnn_benchmark: False mp_cfg: {'mp_start_method': 'fork', 'opencv_num_threads': 0} dist_cfg: {'backend': 'nccl'} seed: None Distributed launcher: none Distributed training: False GPU number: 1

12/02 10:01:08 - mmengine - INFO - Config: default_scope = 'mmdet3d' default_hooks = dict( timer=dict(type='IterTimerHook', scope='mmdet3d'), logger=dict(type='LoggerHook', interval=50, scope='mmdet3d'), param_scheduler=dict(type='ParamSchedulerHook', scope='mmdet3d'), checkpoint=dict( type='CheckpointHook', interval=32, scope='mmdet3d', max_keep_ckpts=8), sampler_seed=dict(type='DistSamplerSeedHook', scope='mmdet3d'), visualization=dict( type='Det3DVisualizationHook', scope='mmdet3d', draw=True, show=True, wait_time=2, vis_task='lidar_seg', score_thr=0.1)) env_cfg = dict( cudnn_benchmark=False, mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0), dist_cfg=dict(backend='nccl')) log_processor = dict( type='LogProcessor', window_size=50, by_epoch=True, scope='mmdet3d') log_level = 'INFO' load_from = 'work_dirs/oneformer3d_1xb4_scannet/oneformer3d_1xb4_scannet.pth' resume = False class_names = [ 'wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'showercurtrain', 'toilet', 'sink', 'bathtub', 'otherfurniture', 'unlabeled' ] metainfo = dict( classes=('wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'showercurtrain', 'toilet', 'sink', 'bathtub', 'otherfurniture')) datasettype = 'ScanNetSegDataset' data_root = 'data/scannet/' input_modality = dict(use_lidar=True, use_camera=False) data_prefix = dict( pts='points', pts_instance_mask='instance_mask', pts_semantic_mask='semantic_mask', sp_pts_mask='super_points') backend_args = None num_points = 8192 train_pipeline = [ dict( type='LoadPointsFromFile', coord_type='DEPTH', shift_height=False, use_color=True, load_dim=6, usedim=[0, 1, 2, 3, 4, 5]), dict( type='LoadAnnotations3D', with_bbox_3d=False, with_label_3d=False, with_mask_3d=True, with_seg_3d=True, with_sp_mask_3d=True), dict(type='PointSegClassMapping'), dict( type='RandomFlip3D', sync_2d=False, flip_ratio_bev_horizontal=0.5, flip_ratio_bev_vertical=0.5), dict( type='GlobalRotScaleTrans', rot_range=[-3.14, 3.14], scale_ratio_range=[0.8, 1.2], translation_std=[0.1, 0.1, 0.1], shiftheight=False), dict(type='NormalizePointsColor', color_mean=[127.5, 127.5, 127.5]), dict( type='AddSuperPointAnnotations', num_classes=20, stuff_classes=[0, 1], merge_non_stuff_cls=False), dict( type='ElasticTransfrom', gran=[6, 20], mag=[40, 160], voxelsize=0.02, p=0.5), dict( type='Pack3DDetInputs', keys=[ 'points', 'gt_labels_3d', 'pts_semantic_mask', 'pts_instance_mask', 'sp_pts_mask', 'gt_sp_masks', 'elastic_coords' ]) ] test_pipeline = [ dict( type='LoadPointsFromFile', coord_type='DEPTH', shift_height=False, use_color=True, load_dim=6, usedim=[0, 1, 2, 3, 4, 5]), dict( type='LoadAnnotations3D', with_bbox_3d=False, with_label_3d=False, with_mask_3d=True, with_seg_3d=True, with_sp_mask_3d=True), dict(type='PointSegClassMapping'), dict( type='MultiScaleFlipAug3D', img_scale=(1333, 800), pts_scaleratio=1, flip=False, transforms=[ dict( type='NormalizePointsColor', color_mean=[127.5, 127.5, 127.5]), dict( type='AddSuperPointAnnotations', num_classes=20, stuff_classes=[0, 1], merge_non_stuffcls=False) ]), dict(type='Pack3DDetInputs', keys=['points', 'sp_pts_mask']) ] eval_pipeline = [ dict( type='LoadPointsFromFile', coord_type='DEPTH', shift_height=False, use_color=True, load_dim=6, use_dim=[0, 1, 2, 3, 4, 5], backend_args=None, scope='mmdet3d'), dict(type='NormalizePointsColor', color_mean=None, scope='mmdet3d'), dict(type='Pack3DDetInputs', keys=['points'], scope='mmdet3d') ] tta_pipeline = [ dict( type='LoadPointsFromFile', coord_type='DEPTH', shift_height=False, use_color=True, load_dim=6, use_dim=[0, 1, 2, 3, 4, 5], backend_args=None, scope='mmdet3d'), dict( type='LoadAnnotations3D', with_bbox_3d=False, with_label_3d=False, with_mask_3d=False, with_seg_3d=True, backend_args=None, scope='mmdet3d'), dict(type='NormalizePointsColor', color_mean=None, scope='mmdet3d'), dict( type='TestTimeAug', transforms=[[{ 'type': 'RandomFlip3D', 'sync_2d': False, 'flip_ratio_bev_horizontal': 0.0, 'flip_ratio_bev_vertical': 0.0 }], [{ 'type': 'Pack3DDetInputs', 'keys': ['points'] }]], scope='mmdet3d') ] train_dataloader = dict( batch_size=4, num_workers=6, persistent_workers=True, sampler=dict(type='DefaultSampler', shuffle=True, scope='mmdet3d'), dataset=dict( type='ScanNetSegDataset_', data_root='data/scannet/', ann_file='scannet_oneformer3d_infos_train.pkl', metainfo=dict( classes=('wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'showercurtrain', 'toilet', 'sink', 'bathtub', 'otherfurniture')), data_prefix=dict( pts='points', pts_instance_mask='instance_mask', pts_semantic_mask='semantic_mask', sp_pts_mask='super_points'), pipeline=[ dict( type='LoadPointsFromFile', coord_type='DEPTH', shift_height=False, use_color=True, load_dim=6, usedim=[0, 1, 2, 3, 4, 5]), dict( type='LoadAnnotations3D', with_bbox_3d=False, with_label_3d=False, with_mask_3d=True, with_seg_3d=True, with_sp_mask_3d=True), dict(type='PointSegClassMapping'), dict( type='RandomFlip3D', sync_2d=False, flip_ratio_bev_horizontal=0.5, flip_ratio_bev_vertical=0.5), dict( type='GlobalRotScaleTrans', rot_range=[-3.14, 3.14], scale_ratio_range=[0.8, 1.2], translation_std=[0.1, 0.1, 0.1], shiftheight=False), dict( type='NormalizePointsColor', color_mean=[127.5, 127.5, 127.5]), dict( type='AddSuperPointAnnotations', num_classes=20, stuff_classes=[0, 1], merge_non_stuff_cls=False), dict( type='ElasticTransfrom', gran=[6, 20], mag=[40, 160], voxelsize=0.02, p=0.5), dict( type='Pack3DDetInputs', keys=[ 'points', 'gt_labels_3d', 'pts_semantic_mask', 'pts_instance_mask', 'sp_pts_mask', 'gt_sp_masks', 'elastic_coords' ]) ], modality=dict(use_lidar=True, use_camera=False), ignore_index=20, scene_idxs=None, test_mode=False, backend_args=None, scope='mmdet3d')) test_dataloader = dict( batch_size=1, num_workers=1, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False, scope='mmdet3d'), dataset=dict( type='ScanNetSegDataset_', data_root='data/scannet/', ann_file='scannet_oneformer3d_infos_val.pkl', metainfo=dict( classes=('wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'showercurtrain', 'toilet', 'sink', 'bathtub', 'otherfurniture')), data_prefix=dict( pts='points', pts_instance_mask='instance_mask', pts_semantic_mask='semantic_mask', sp_pts_mask='super_points'), pipeline=[ dict( type='LoadPointsFromFile', coord_type='DEPTH', shift_height=False, use_color=True, load_dim=6, usedim=[0, 1, 2, 3, 4, 5]), dict( type='LoadAnnotations3D', with_bbox_3d=False, with_label_3d=False, with_mask_3d=True, with_seg_3d=True, with_sp_mask_3d=True), dict(type='PointSegClassMapping'), dict( type='MultiScaleFlipAug3D', img_scale=(1333, 800), pts_scaleratio=1, flip=False, transforms=[ dict( type='NormalizePointsColor', color_mean=[127.5, 127.5, 127.5]), dict( type='AddSuperPointAnnotations', num_classes=20, stuff_classes=[0, 1], merge_non_stuffcls=False) ]), dict(type='Pack3DDetInputs', keys=['points', 'sp_pts_mask']) ], modality=dict(use_lidar=True, use_camera=False), ignore_index=20, test_mode=True, backend_args=None, scope='mmdet3d')) val_dataloader = dict( batch_size=1, num_workers=1, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False, scope='mmdet3d'), dataset=dict( type='ScanNetSegDataset_', data_root='data/scannet/', ann_file='scannet_oneformer3d_infos_val.pkl', metainfo=dict( classes=('wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'showercurtrain', 'toilet', 'sink', 'bathtub', 'otherfurniture')), data_prefix=dict( pts='points', pts_instance_mask='instance_mask', pts_semantic_mask='semantic_mask', sp_pts_mask='super_points'), pipeline=[ dict( type='LoadPointsFromFile', coord_type='DEPTH', shift_height=False, use_color=True, load_dim=6, usedim=[0, 1, 2, 3, 4, 5]), dict( type='LoadAnnotations3D', with_bbox_3d=False, with_label_3d=False, with_mask_3d=True, with_seg_3d=True, with_sp_mask_3d=True), dict(type='PointSegClassMapping'), dict( type='MultiScaleFlipAug3D', img_scale=(1333, 800), pts_scaleratio=1, flip=False, transforms=[ dict( type='NormalizePointsColor', color_mean=[127.5, 127.5, 127.5]), dict( type='AddSuperPointAnnotations', num_classes=20, stuff_classes=[0, 1], merge_non_stuffcls=False) ]), dict(type='Pack3DDetInputs', keys=['points', 'sp_pts_mask']) ], modality=dict(use_lidar=True, use_camera=False), ignore_index=20, test_mode=True, backend_args=None, scope='mmdet3d')) val_evaluator = dict( type='UnifiedSegMetric', scope='mmdet3d', stuff_class_inds=[0, 1], thing_class_inds=[ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ], min_num_points=1, id_offset=65536, sem_mapping=[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 24, 28, 33, 34, 36, 39 ], inst_mapping=[ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 24, 28, 33, 34, 36, 39 ], metric_meta=dict( label2cat=dict({ 0: 'wall', 1: 'floor', 2: 'cabinet', 3: 'bed', 4: 'chair', 5: 'sofa', 6: 'table', 7: 'door', 8: 'window', 9: 'bookshelf', 10: 'picture', 11: 'counter', 12: 'desk', 13: 'curtain', 14: 'refrigerator', 15: 'showercurtrain', 16: 'toilet', 17: 'sink', 18: 'bathtub', 19: 'otherfurniture', 20: 'unlabeled' }), ignore_index=[20], classes=[ 'wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'showercurtrain', 'toilet', 'sink', 'bathtub', 'otherfurniture', 'unlabeled' ], dataset_name='ScanNet')) test_evaluator = dict( type='UnifiedSegMetric', scope='mmdet3d', stuff_class_inds=[0, 1], thing_class_inds=[ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ], min_num_points=1, id_offset=65536, sem_mapping=[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 24, 28, 33, 34, 36, 39 ], inst_mapping=[ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 24, 28, 33, 34, 36, 39 ], metric_meta=dict( label2cat=dict({ 0: 'wall', 1: 'floor', 2: 'cabinet', 3: 'bed', 4: 'chair', 5: 'sofa', 6: 'table', 7: 'door', 8: 'window', 9: 'bookshelf', 10: 'picture', 11: 'counter', 12: 'desk', 13: 'curtain', 14: 'refrigerator', 15: 'showercurtrain', 16: 'toilet', 17: 'sink', 18: 'bathtub', 19: 'otherfurniture', 20: 'unlabeled' }), ignore_index=[20], classes=[ 'wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'showercurtrain', 'toilet', 'sink', 'bathtub', 'otherfurniture', 'unlabeled' ], dataset_name='ScanNet')) vis_backends = [dict(type='LocalVisBackend', scope='mmdet3d')] visualizer = dict( type='Det3DLocalVisualizer', vis_backends=[dict(type='LocalVisBackend')], name='visualizer', scope='mmdet3d') tta_model = dict(type='Seg3DTTAModel', scope='mmdet3d') custom_imports = dict(imports=['oneformer3d']) num_channels = 32 num_instance_classes = 18 num_semantic_classes = 20 model = dict( type='ScanNetOneFormer3D', datapreprocessor=dict(type='Det3DDataPreprocessor'), in_channels=6, num_channels=32, voxel_size=0.02, num_classes=18, min_spatial_shape=128, query_thr=0.5, backbone=dict( type='SpConvUNet', num_planes=[32, 64, 96, 128, 160], return_blocks=True), decoder=dict( type='ScanNetQueryDecoder', num_layers=6, num_instance_queries=0, num_semantic_queries=0, num_instance_classes=18, num_semantic_classes=20, num_semantic_linears=1, in_channels=32, d_model=256, num_heads=8, hidden_dim=1024, dropout=0.0, activation_fn='gelu', iter_pred=True, attn_mask=True, fix_attention=True, objectness_flag=False), criterion=dict( type='ScanNetUnifiedCriterion', num_semantic_classes=20, sem_criterion=dict( type='ScanNetSemanticCriterion', ignore_index=20, loss_weight=0.2), inst_criterion=dict( type='InstanceCriterion', matcher=dict( type='SparseMatcher', costs=[ dict(type='QueryClassificationCost', weight=0.5), dict(type='MaskBCECost', weight=1.0), dict(type='MaskDiceCost', weight=1.0) ], topk=1), loss_weight=[0.5, 1.0, 1.0, 0.5], num_classes=18, non_object_weight=0.1, fix_dice_loss_weight=True, iter_matcher=True, fix_mean_loss=True)), train_cfg=dict(), test_cfg=dict( topk_insts=600, inst_score_thr=0.0, pan_score_thr=0.5, npoint_thr=100, obj_normalization=True, sp_score_thr=0.4, nms=True, matrix_nms_kernel='linear', stuff_classes=[0, 1])) label2cat = dict({ 0: 'wall', 1: 'floor', 2: 'cabinet', 3: 'bed', 4: 'chair', 5: 'sofa', 6: 'table', 7: 'door', 8: 'window', 9: 'bookshelf', 10: 'picture', 11: 'counter', 12: 'desk', 13: 'curtain', 14: 'refrigerator', 15: 'showercurtrain', 16: 'toilet', 17: 'sink', 18: 'bathtub', 19: 'otherfurniture', 20: 'unlabeled' }) metric_meta = dict( label2cat=dict({ 0: 'wall', 1: 'floor', 2: 'cabinet', 3: 'bed', 4: 'chair', 5: 'sofa', 6: 'table', 7: 'door', 8: 'window', 9: 'bookshelf', 10: 'picture', 11: 'counter', 12: 'desk', 13: 'curtain', 14: 'refrigerator', 15: 'showercurtrain', 16: 'toilet', 17: 'sink', 18: 'bathtub', 19: 'otherfurniture', 20: 'unlabeled' }), ignore_index=[20], classes=[ 'wall', 'floor', 'cabinet', 'bed', 'chair', 'sofa', 'table', 'door', 'window', 'bookshelf', 'picture', 'counter', 'desk', 'curtain', 'refrigerator', 'showercurtrain', 'toilet', 'sink', 'bathtub', 'otherfurniture', 'unlabeled' ], dataset_name='ScanNet') sem_mapping = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 24, 28, 33, 34, 36, 39 ] inst_mapping = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 24, 28, 33, 34, 36, 39 ] optim_wrapper = dict( type='OptimWrapper', optimizer=dict(type='AdamW', lr=0.0001, weight_decay=0.05), clip_grad=dict(max_norm=10, norm_type=2)) param_scheduler = dict(type='PolyLR', begin=0, end=512, power=0.9) custom_hooks = [dict(type='EmptyCacheHook', after_iter=True)] train_cfg = dict( type='EpochBasedTrainLoop', max_epochs=512, dynamic_intervals=[(1, 16), (496, 1)]) val_cfg = dict(type='ValLoop') test_cfg = dict(type='TestLoop') launcher = 'none' work_dir = './work_dirs/oneformer3d_1xb4_scannet'

12/02 10:01:14 - mmengine - INFO - Distributed training is not used, all SyncBatchNorm (SyncBN) layers in the model will be automatically reverted to BatchNormXd layers if they are used. /opt/conda/lib/python3.10/site-packages/mmdet3d/engine/hooks/visualization_hook.py:67: UserWarning: The show is True, it means that only the prediction results are visualized without storing data, so vis_backends needs to be excluded. warnings.warn('The show is True, it means that only ' 12/02 10:01:14 - mmengine - INFO - Hooks will be executed in the following order: before_run: (VERY_HIGH ) RuntimeInfoHook (BELOW_NORMAL) LoggerHook

before_train: (VERY_HIGH ) RuntimeInfoHook (NORMAL ) IterTimerHook (VERY_LOW ) CheckpointHook

before_train_epoch: (VERY_HIGH ) RuntimeInfoHook (NORMAL ) IterTimerHook (NORMAL ) DistSamplerSeedHook (NORMAL ) EmptyCacheHook

before_train_iter: (VERY_HIGH ) RuntimeInfoHook (NORMAL ) IterTimerHook

after_train_iter: (VERY_HIGH ) RuntimeInfoHook (NORMAL ) IterTimerHook (NORMAL ) EmptyCacheHook (BELOW_NORMAL) LoggerHook (LOW ) ParamSchedulerHook (VERY_LOW ) CheckpointHook

after_train_epoch: (NORMAL ) IterTimerHook (NORMAL ) EmptyCacheHook (LOW ) ParamSchedulerHook (VERY_LOW ) CheckpointHook

before_val_epoch: (NORMAL ) IterTimerHook (NORMAL ) EmptyCacheHook

before_val_iter: (NORMAL ) IterTimerHook

after_val_iter: (NORMAL ) IterTimerHook (NORMAL ) Det3DVisualizationHook (NORMAL ) EmptyCacheHook (BELOW_NORMAL) LoggerHook

after_val_epoch: (VERY_HIGH ) RuntimeInfoHook (NORMAL ) IterTimerHook (NORMAL ) EmptyCacheHook (BELOW_NORMAL) LoggerHook (LOW ) ParamSchedulerHook (VERY_LOW ) CheckpointHook

after_train: (VERY_LOW ) CheckpointHook

before_test_epoch: (NORMAL ) IterTimerHook (NORMAL ) EmptyCacheHook

before_test_iter: (NORMAL ) IterTimerHook

after_test_iter: (NORMAL ) IterTimerHook (NORMAL ) Det3DVisualizationHook (NORMAL ) EmptyCacheHook (BELOW_NORMAL) LoggerHook

after_test_epoch: (VERY_HIGH ) RuntimeInfoHook (NORMAL ) IterTimerHook (NORMAL ) EmptyCacheHook (BELOW_NORMAL) LoggerHook

after_run: (BELOW_NORMAL) LoggerHook

12/02 10:01:16 - mmengine - WARNING - The prefix is not set in metric class UnifiedSegMetric. Loads checkpoint by local backend from path: work_dirs/oneformer3d_1xb4_scannet/oneformer3d_1xb4_scannet.pth 12/02 10:01:19 - mmengine - INFO - Load checkpoint from work_dirs/oneformer3d_1xb4_scannet/oneformer3d_1xb4_scannet.pth /opt/conda/lib/python3.10/site-packages/mmdet3d/structures/points/base_points.py:136: UserWarning: point got color value beyond [0, 255] warnings.warn('point got color value beyond [0, 255]') Traceback (most recent call last): File "/workspace/tools/test.py", line 149, in main() File "/workspace/tools/test.py", line 145, in main runner.test() File "/opt/conda/lib/python3.10/site-packages/mmengine/runner/runner.py", line 1767, in test metrics = self.test_loop.run() # type: ignore File "/opt/conda/lib/python3.10/site-packages/mmengine/runner/loops.py", line 435, in run self.run_iter(idx, data_batch) File "/opt/conda/lib/python3.10/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context return func(args, kwargs) File "/opt/conda/lib/python3.10/site-packages/mmengine/runner/loops.py", line 456, in run_iter self.runner.call_hook( File "/opt/conda/lib/python3.10/site-packages/mmengine/runner/runner.py", line 1783, in call_hook getattr(hook, fn_name)(self, kwargs) File "/opt/conda/lib/python3.10/site-packages/mmdet3d/engine/hooks/visualization_hook.py", line 207, in after_test_iter self._visualizer.add_datasample( File "/opt/conda/lib/python3.10/site-packages/mmengine/dist/utils.py", line 366, in wrapper return func(args, **kwargs) File "/opt/conda/lib/python3.10/site-packages/mmdet3d/visualization/local_visualizer.py", line 891, in add_datasample self._draw_pts_sem_seg(data_input['points'], File "/opt/conda/lib/python3.10/site-packages/mmdet3d/visualization/local_visualizer.py", line 733, in _draw_pts_sem_seg pts_sem_seg = tensor2ndarray(pts_seg.pts_semantic_mask) AttributeError: 'PointData' object has no attribute 'pts_semantic_mask'

When I run the command, the error shows like upside: PYTHONPATH=.:$PYTHONPATH python tools/test.py configs/oneformer3d_1xb4_scannet.py work_dirs/oneformer3d_1xb4_scannet/oneformer3d_1xb4_scannet.pth --show --task lidar_seg

How can I fix it?

filaPro commented 1 day ago

Unfortunately we don't support visualization in this repo. Please check other issues e.g. #57.