open-mmlab / mmpose

OpenMMLab Pose Estimation Toolbox and Benchmark.
https://mmpose.readthedocs.io/en/latest/
Apache License 2.0
5.65k stars 1.22k forks source link

[Bug] KeyError: 'PoseLocalVisualizer is not in the mmdet::visualizer registry. #3025

Closed yanglixin123 closed 5 months ago

yanglixin123 commented 5 months ago

Prerequisite

Environment

python 3.8

Reproduces the problem - code sample

base = ['../../configs/base/default_runtime.py', '../../configs/base/datasets/coco_body27.py' ]

default_scope = 'mmdet'

runtime

train_cfg = dict(max_epochs=120, val_interval=10)

optimizer

optim_wrapper = dict(optimizer=dict( type='Adam', lr=5e-4, ))

learning policy

param_scheduler = [ dict( type='LinearLR', begin=0, end=500, start_factor=0.001, by_epoch=False), # warm-up dict( type='MultiStepLR', begin=0, end=210, milestones=[170, 200], gamma=0.1, by_epoch=True) ]

automatically scaling LR based on the actual training batch size

auto_scale_lr = dict(base_batch_size=512)

hooks

default_hooks = dict( checkpoint=dict(save_best='coco-body27/AP', rule='greater'))

codec settings

codec = dict( type='MSRAHeatmap', input_size=(192, 256), heatmap_size=(48, 64), sigma=2, unbiased=True)

model settings

model = dict( type='TopdownPoseEstimator', data_preprocessor=dict( type='PoseDataPreprocessor', mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], bgr_to_rgb=True), backbone=dict(type='ViPNAS_MobileNetV3'), head=dict( type='ViPNASHead', in_channels=160, out_channels=133, deconv_out_channels=(160, 160, 160), deconv_num_groups=(160, 160, 160), loss=dict(type='KeypointMSELoss', use_target_weight=True), decoder=codec), test_cfg=dict( flip_test=True, flip_mode='heatmap', shift_heatmap=True, ))

base dataset settings

dataset_type = 'CocoWholeBodyDataset' data_mode = 'topdown' data_root = 'data/coco/'

pipelines

train_pipeline = [ dict(type='LoadImage'), dict(type='GetBBoxCenterScale'), dict(type='RandomFlip', direction='horizontal'), dict(type='RandomHalfBody'), dict( type='RandomBBoxTransform', rotate_factor=60, scale_factor=(0.75, 1.25)), dict(type='TopdownAffine', input_size=codec['input_size']), dict(type='GenerateTarget', encoder=codec), dict(type='PackPoseInputs') ] val_pipeline = [ dict(type='LoadImage'), dict(type='GetBBoxCenterScale'), dict(type='TopdownAffine', input_size=codec['input_size']), dict(type='PackPoseInputs') ]

data loaders

train_dataloader = dict( batch_size=64, num_workers=2, persistent_workers=True, sampler=dict(type='DefaultSampler', shuffle=True), dataset=dict( type=dataset_type, data_root=data_root, data_mode=data_mode, ann_file='annotations/coco_wholebody_train_v1.0.json', data_prefix=dict(img='train2017/'), pipeline=train_pipeline, metainfo=dict(from_file='/home/sda_1T/pp/ylx/mmpose-main/configs/base/datasets/coco_body27.py'),

))

val_dataloader = dict( batch_size=32, num_workers=2, persistent_workers=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False, round_up=False), dataset=dict( type=dataset_type, data_root=data_root, data_mode=data_mode, ann_file='annotations/coco_wholebody_val_v1.0.json', data_prefix=dict(img='val2017/'), test_mode=True, bbox_file='data/coco/person_detection_results/' 'COCO_val2017_detections_AP_H_56_person.json', pipeline=val_pipeline, metainfo=dict(from_file='/home/sda_1T/pp/ylx/mmpose-main/configs/base/datasets/coco_body27.py'),

))

test_dataloader = val_dataloader

val_evaluator = dict( type='CocoWholeBodyMetric', ann_file=data_root + 'annotations/coco_wholebody_val_v1.0.json') test_evaluator = val_evaluator

Reproduces the problem - command or script

我使用自己的27个关键点训练,但是在运行这个代码时Lab-210-A:~/mmpose-main$ python tools/train.py /home/ylx/mmpose-main/configs/body27/td-hm_vipnas-mbv3_dark-8xb64-210e_coco-wholebody-256x192.py

Reproduces the problem - error message

(mmpose) ylx@Lab-210-A:~/mmpose-main$ python tools/train.py /home/ylx/mmpose-main/configs/body27/td-hm_vipnas-mbv3_dark-8xb64-210e_coco-wholebody-256x192.py 04/22 14:44:23 - mmengine - INFO -

System environment: sys.platform: linux Python: 3.8.19 (default, Mar 20 2024, 19:58:24) [GCC 11.2.0] CUDA available: False MUSA available: False numpy_random_seed: 62087564 GCC: gcc (GCC) 13.2.1 20231205 (Red Hat 13.2.1-6) PyTorch: 2.2.2 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: 62087564 Distributed launcher: none Distributed training: False GPU number: 1

04/22 14:44:24 - mmengine - INFO - Config: auto_scale_lr = dict(base_batch_size=512) backend_args = dict(backend='local') codec = dict( heatmap_size=( 48, 64, ), input_size=( 192, 256, ), sigma=2, type='MSRAHeatmap', unbiased=True) custom_hooks = [ dict(type='SyncBuffersHook'), ] data_mode = 'topdown' data_root = 'data/coco/' dataset_info = dict( dataset_name='coco_body27', joint_weights=[ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, ], keypoint_info=dict({ 0: dict( color=[ 51, 153, 255, ], id=0, name='vertex', swap='', type='upper'), 1: dict( color=[ 51, 153, 255, ], id=1, name='left eye', swap='right eye', type='upper'), 10: dict( color=[ 255, 128, 0, ], id=10, name='right elbow', swap='left elbow', type='upper'), 11: dict( color=[ 0, 255, 0, ], id=11, name='left wrist', swap='right wrist', type='upper'), 12: dict( color=[ 255, 128, 0, ], id=12, name='left pinky knuckle', swap='right pinky knuckle', type='upper'), 13: dict( color=[ 0, 255, 0, ], id=13, name='left index knuckle', swap='right index knuckle', type='upper'), 14: dict( color=[ 0, 255, 0, ], id=14, name='left thumb knuckle', swap='right thumb knuckle', type='upper'), 15: dict( color=[ 0, 255, 0, ], id=15, name='right wrist', swap='left wrist', type='upper'), 16: dict( color=[ 0, 255, 0, ], id=16, name='rigth pinky knuckle', swap='left pinky knuckle', type='upper'), 17: dict( color=[ 255, 128, 0, ], id=17, name='right index knuckle', swap='left index knuckle', type='upper'), 18: dict( color=[ 0, 255, 0, ], id=18, name='right thumb knuckle', swap='left thumb knuckle', type='upper'), 19: dict( color=[ 255, 128, 0, ], id=19, name='left hip', swap='right hip', type='lower'), 2: dict( color=[ 51, 153, 255, ], id=2, name='right eye', swap='left eye', type='upper'), 20: dict( color=[ 0, 255, 0, ], id=20, name='left knee', swap='right knee', type='lower'), 21: dict( color=[ 255, 128, 0, ], id=21, name='right hip', swap='left hip', type='lower'), 22: dict( color=[ 0, 255, 0, ], id=22, name='right knee', swap='left knee', type='lower'), 23: dict( color=[ 255, 128, 0, ], id=23, name='left ankle', swap='right ankle', type='lower'), 24: dict( color=[ 0, 255, 0, ], id=24, name='left foot index', swap='right foot index', type='lower'), 25: dict( color=[ 255, 128, 0, ], id=25, name='right ankle', swap='left ankle', type='lower'), 26: dict( color=[ 255, 128, 0, ], id=26, name='right foot index', swap='left foot index ', type='lower'), 3: dict(color=[ 51, 153, 255, ], id=3, name='nose', swap='', type='upper'), 4: dict( color=[ 51, 153, 255, ], id=4, name='left ear', swap='right ear', type='upper'), 5: dict( color=[ 0, 255, 0, ], id=5, name='right ear', swap='left ear', type='upper'), 6: dict(color=[ 255, 128, 0, ], id=6, name='neck', swap='', type='upper'), 7: dict( color=[ 0, 255, 0, ], id=7, name='left shoulder', swap='right shoulder', type='upper'), 8: dict( color=[ 255, 128, 0, ], id=8, name='left elbow', swap='right elbow', type='upper'), 9: dict( color=[ 0, 255, 0, ], id=9, name='right shoulder', swap='left shoulder', type='upper') }), paper_info=dict( author= 'Jin, Sheng and Xu, Lumin and Xu, Jin and Wang, Can and Liu, Wentao and Qian, Chen and Ouyang, Wanli and Luo, Ping', container= 'Proceedings of the European Conference on Computer Vision (ECCV)', homepage='https://github.com/jin-s13/COCO-WholeBody/', title='Whole-Body Human Pose Estimation in the Wild', year='2020'), sigmas=[ 0.025, 0.025, 0.025, 0.026, 0.035, 0.035, 0.035, 0.079, 0.072, 0.079, 0.072, 0.062, 0.066, 0.066, 0.089, 0.062, 0.066, 0.066, 0.089, 0.107, 0.087, 0.107, 0.087, 0.089, 0.068, 0.089, 0.068, ], skeleton_info=dict({ 0: dict(color=[ 0, 255, 0, ], id=0, link=( 'vertex', 'nose', )), 1: dict(color=[ 0, 255, 0, ], id=1, link=( 'left eye', 'nose', )), 10: dict( color=[ 51, 153, 255, ], id=10, link=( 'left elbow', ' left wrist', )), 11: dict( color=[ 51, 153, 255, ], id=11, link=( 'right shoulder', 'right elbow', )), 12: dict( color=[ 51, 153, 255, ], id=12, link=( 'right shoulder', ' right hip', )), 13: dict( color=[ 255, 128, 0, ], id=13, link=( 'right elbow', 'right wrist', )), 14: dict( color=[ 51, 153, 255, ], id=14, link=( 'left wrist', 'left pinky knuckle', )), 15: dict( color=[ 0, 255, 0, ], id=15, link=( 'left wrist', ' left index knuckle', )), 16: dict( color=[ 255, 128, 0, ], id=16, link=( 'left wrist', ' left thumb knuckle', )), 17: dict( color=[ 0, 255, 0, ], id=17, link=( 'left pinky knuckle', 'left index knuckle', )), 18: dict( color=[ 255, 128, 0, ], id=18, link=( 'right wrist', 'right index knuckle', )), 19: dict( color=[ 51, 153, 255, ], id=19, link=( 'right wrist', 'right thumb knuckle', )), 2: dict(color=[ 255, 128, 0, ], id=2, link=( 'left eye', 'left ear', )), 20: dict( color=[ 51, 153, 255, ], id=20, link=( 'right wrist', 'right pinky knuckle', )), 21: dict( color=[ 51, 153, 255, ], id=21, link=( 'right pinky knuckle', 'right index knuckle', )), 22: dict(color=[ 51, 153, 255, ], id=22, link=( 'left hip', ' left knee', )), 23: dict(color=[ 51, 153, 255, ], id=23, link=( 'left hip', 'right hip', )), 24: dict(color=[ 0, 255, 0, ], id=24, link=( 'left knee', ' left ankle', )), 25: dict( color=[ 255, 128, 0, ], id=25, link=( 'right hip', ' right knee', )), 26: dict(color=[ 0, 255, 0, ], id=26, link=( 'right knee', 'right ankle', )), 27: dict( color=[ 255, 128, 0, ], id=27, link=( 'left ankle', ' left foot index', )), 28: dict( color=[ 51, 153, 255, ], id=28, link=( '(right ankle', 'right foot index', )), 3: dict(color=[ 255, 128, 0, ], id=3, link=( 'right eye', 'nose', )), 4: dict(color=[ 51, 153, 255, ], id=4, link=( 'right eye', 'right ear', )), 5: dict(color=[ 0, 255, 0, ], id=5, link=( 'nose', ' neck', )), 6: dict(color=[ 255, 128, 0, ], id=6, link=( 'neck', ' left shoulder', )), 7: dict(color=[ 0, 255, 0, ], id=7, link=( 'neck', 'right shoulder', )), 8: dict( color=[ 255, 128, 0, ], id=8, link=( 'left shoulder', 'left elbow', )), 9: dict( color=[ 51, 153, 255, ], id=9, link=( 'left shoulder', 'left hip', )) })) dataset_type = 'CocoWholeBodyDataset' default_hooks = dict( badcase=dict( badcase_thr=5, enable=False, metric_type='loss', out_dir='badcase', type='BadCaseAnalysisHook'), checkpoint=dict( interval=10, rule='greater', save_best='coco-body27/AP', type='CheckpointHook'), logger=dict(interval=50, type='LoggerHook'), param_scheduler=dict(type='ParamSchedulerHook'), sampler_seed=dict(type='DistSamplerSeedHook'), timer=dict(type='IterTimerHook'), visualization=dict(enable=False, type='PoseVisualizationHook')) default_scope = 'mmdet' env_cfg = dict( cudnn_benchmark=False, dist_cfg=dict(backend='nccl'), mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0)) launcher = 'none' load_from = None log_level = 'INFO' log_processor = dict( by_epoch=True, num_digits=6, type='LogProcessor', window_size=50) model = dict( backbone=dict(type='ViPNAS_MobileNetV3'), data_preprocessor=dict( bgr_to_rgb=True, mean=[ 123.675, 116.28, 103.53, ], std=[ 58.395, 57.12, 57.375, ], type='PoseDataPreprocessor'), head=dict( decoder=dict( heatmap_size=( 48, 64, ), input_size=( 192, 256, ), sigma=2, type='MSRAHeatmap', unbiased=True), deconv_num_groups=( 160, 160, 160, ), deconv_out_channels=( 160, 160, 160, ), in_channels=160, loss=dict(type='KeypointMSELoss', use_target_weight=True), out_channels=133, type='ViPNASHead'), test_cfg=dict(flip_mode='heatmap', flip_test=True, shift_heatmap=True), type='TopdownPoseEstimator') optim_wrapper = dict(optimizer=dict(lr=0.0005, type='Adam')) param_scheduler = [ dict( begin=0, by_epoch=False, end=500, start_factor=0.001, type='LinearLR'), dict( begin=0, by_epoch=True, end=210, gamma=0.1, milestones=[ 170, 200, ], type='MultiStepLR'), ] resume = False test_cfg = dict() test_dataloader = dict( batch_size=32, dataset=dict( ann_file='annotations/coco_wholebody_val_v1.0.json', bbox_file= 'data/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json', data_mode='topdown', data_prefix=dict(img='val2017/'), data_root='data/coco/', metainfo=dict( from_file= '/home/sda_1T/pp/ylx/mmpose-main/configs/base/datasets/coco_body27.py' ), pipeline=[ dict(type='LoadImage'), dict(type='GetBBoxCenterScale'), dict(input_size=( 192, 256, ), type='TopdownAffine'), dict(type='PackPoseInputs'), ], test_mode=True, type='CocoWholeBodyDataset'), drop_last=False, num_workers=2, persistent_workers=True, sampler=dict(round_up=False, shuffle=False, type='DefaultSampler')) test_evaluator = dict( ann_file='data/coco/annotations/coco_wholebody_val_v1.0.json', type='CocoWholeBodyMetric') train_cfg = dict(by_epoch=True, max_epochs=120, val_interval=10) train_dataloader = dict( batch_size=64, dataset=dict( ann_file='annotations/coco_wholebody_train_v1.0.json', data_mode='topdown', data_prefix=dict(img='train2017/'), data_root='data/coco/', metainfo=dict( from_file= '/home/sda_1T/pp/ylx/mmpose-main/configs/base/datasets/coco_body27.py' ), pipeline=[ dict(type='LoadImage'), dict(type='GetBBoxCenterScale'), dict(direction='horizontal', type='RandomFlip'), dict(type='RandomHalfBody'), dict( rotate_factor=60, scale_factor=( 0.75, 1.25, ), type='RandomBBoxTransform'), dict(input_size=( 192, 256, ), type='TopdownAffine'), dict( encoder=dict( heatmap_size=( 48, 64, ), input_size=( 192, 256, ), sigma=2, type='MSRAHeatmap', unbiased=True), type='GenerateTarget'), dict(type='PackPoseInputs'), ], type='CocoWholeBodyDataset'), num_workers=2, persistent_workers=True, sampler=dict(shuffle=True, type='DefaultSampler')) train_pipeline = [ dict(type='LoadImage'), dict(type='GetBBoxCenterScale'), dict(direction='horizontal', type='RandomFlip'), dict(type='RandomHalfBody'), dict( rotate_factor=60, scale_factor=( 0.75, 1.25, ), type='RandomBBoxTransform'), dict(input_size=( 192, 256, ), type='TopdownAffine'), dict( encoder=dict( heatmap_size=( 48, 64, ), input_size=( 192, 256, ), sigma=2, type='MSRAHeatmap', unbiased=True), type='GenerateTarget'), dict(type='PackPoseInputs'), ] val_cfg = dict() val_dataloader = dict( batch_size=32, dataset=dict( ann_file='annotations/coco_wholebody_val_v1.0.json', bbox_file= 'data/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json', data_mode='topdown', data_prefix=dict(img='val2017/'), data_root='data/coco/', metainfo=dict( from_file= '/home/sda_1T/pp/ylx/mmpose-main/configs/base/datasets/coco_body27.py' ), pipeline=[ dict(type='LoadImage'), dict(type='GetBBoxCenterScale'), dict(input_size=( 192, 256, ), type='TopdownAffine'), dict(type='PackPoseInputs'), ], test_mode=True, type='CocoWholeBodyDataset'), drop_last=False, num_workers=2, persistent_workers=True, sampler=dict(round_up=False, shuffle=False, type='DefaultSampler')) val_evaluator = dict( ann_file='data/coco/annotations/coco_wholebody_val_v1.0.json', type='CocoWholeBodyMetric') val_pipeline = [ dict(type='LoadImage'), dict(type='GetBBoxCenterScale'), dict(input_size=( 192, 256, ), type='TopdownAffine'), dict(type='PackPoseInputs'), ] vis_backends = [ dict(type='LocalVisBackend'), ] visualizer = dict( name='visualizer', type='PoseLocalVisualizer', vis_backends=[ dict(type='LocalVisBackend'), ]) work_dir = './work_dirs/td-hm_vipnas-mbv3_dark-8xb64-210e_coco-wholebody-256x192'

Traceback (most recent call last): File "tools/train.py", line 162, in main() File "tools/train.py", line 155, in main runner = Runner.from_cfg(cfg) File "/home/ylx/anaconda3/envs/mmpose/lib/python3.8/site-packages/mmengine/runner/runner.py", line 462, in from_cfg runner = cls( File "/home/ylx/anaconda3/envs/mmpose/lib/python3.8/site-packages/mmengine/runner/runner.py", line 416, in init self.visualizer = self.build_visualizer(visualizer) File "/home/ylx/anaconda3/envs/mmpose/lib/python3.8/site-packages/mmengine/runner/runner.py", line 803, in build_visualizer return VISUALIZERS.build(visualizer) File "/home/ylx/anaconda3/envs/mmpose/lib/python3.8/site-packages/mmengine/registry/registry.py", line 570, in build return self.build_func(cfg, *args, **kwargs, registry=self) File "/home/ylx/anaconda3/envs/mmpose/lib/python3.8/site-packages/mmengine/registry/build_functions.py", line 100, in build_from_cfg raise KeyError( KeyError: 'PoseLocalVisualizer is not in the mmdet::visualizer registry. Please check whether the value of PoseLocalVisualizer is correct or it was registered as expected. More details can be found at https://mmengine.readthedocs.io/en/latest/advanced_tutorials/config.html#import-the-custom-module'

Additional information

No response