open-mmlab / mmyolo

OpenMMLab YOLO series toolbox and benchmark. Implemented RTMDet, RTMDet-Rotated,YOLOv5, YOLOv6, YOLOv7, YOLOv8,YOLOX, PPYOLOE, etc.
https://mmyolo.readthedocs.io/zh_CN/dev/
GNU General Public License v3.0
2.97k stars 537 forks source link

train.py 使用--resume继续跑示例中的cat数据集时,报错KeyError: 'message_hub' #470

Closed 1092281350 closed 1 year ago

1092281350 commented 1 year ago

Prerequisite

🐞 Describe the bug

我按照哔哩哔哩视频“自定义数据集从标注到部署保姆级教程(三)”中的步骤训练的数据集,当我使用--resume继续训练时报错如下:Traceback (most recent call last): File "tools/train.py", line 106, in main() File "tools/train.py", line 102, in main runner.train() File "/home/qzh/anaconda3/envs/pytorch/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1670, in train self.load_or_resume() File "/home/qzh/anaconda3/envs/pytorch/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1616, in load_or_resume self.resume(resume_from) File "/home/qzh/anaconda3/envs/pytorch/lib/python3.8/site-packages/mmengine/runner/runner.py", line 1971, in resume self.message_hub.load_state_dict(checkpoint['message_hub']) KeyError: 'message_hub'

Environment

环境如下: sys.platform: linux Python: 3.8.13 (default, Mar 28 2022, 11:38:47) [GCC 7.5.0] CUDA available: True numpy_random_seed: 2147483648 GPU 0: NVIDIA GeForce RTX 3060 CUDA_HOME: /usr/local/cuda NVCC: Cuda compilation tools, release 11.3, V11.3.58 GCC: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 PyTorch: 1.10.0+cu113 PyTorch compiling details: PyTorch built with:

TorchVision: 0.11.1+cu113 OpenCV: 4.6.0 MMEngine: 0.4.0 MMCV: 2.0.0rc3 MMDetection: 3.0.0rc5 MMYOLO: 0.3.0+unknown

配置文件如下,从mmyolo-main下的projects/misc/拉下来的,没有改变。 default_scope = 'mmyolo' default_hooks = dict( timer=dict(type='IterTimerHook'), logger=dict(type='LoggerHook', interval=10), param_scheduler=dict( type='YOLOv5ParamSchedulerHook', scheduler_type='linear', lr_factor=0.01, max_epochs=100), checkpoint=dict( type='CheckpointHook', interval=2, save_best='auto', max_keep_ckpts=5), sampler_seed=dict(type='DistSamplerSeedHook'), visualization=dict(type='mmdet.DetVisualizationHook')) env_cfg = dict( cudnn_benchmark=True, mp_cfg=dict(mp_start_method='fork', opencv_num_threads=0), dist_cfg=dict(backend='nccl')) vis_backends = [dict(type='LocalVisBackend')] visualizer = dict( type='mmdet.DetLocalVisualizer', vis_backends=[dict(type='LocalVisBackend')], name='visualizer') log_processor = dict(type='LogProcessor', window_size=50, by_epoch=True) log_level = 'INFO' load_from = 'https://download.openmmlab.com/mmyolo/v0/yolov5/yolov5_s-v61_syncbn_fast_8xb16-300e_coco/yolov5_s-v61_syncbn_fast_8xb16-300e_coco_20220918_084700-86e02187.pth' resume = True file_client_args = dict(backend='disk') data_root = './data/cat/' dataset_type = 'YOLOv5CocoDataset' num_classes = 1 img_scale = (640, 640) deepen_factor = 0.33 widen_factor = 0.5 max_epochs = 100 save_epoch_intervals = 2 train_batch_size_per_gpu = 8 train_num_workers = 4 val_batch_size_per_gpu = 1 val_num_workers = 2 persistent_workers = True base_lr = 0.0025 batch_shapes_cfg = dict( type='BatchShapePolicy', batch_size=1, img_size=640, size_divisor=32, extra_pad_ratio=0.5) anchors = [[(68, 69), (154, 91), (143, 162)], [(242, 160), (189, 287), (391, 207)], [(353, 337), (539, 341), (443, 432)]] strides = [8, 16, 32] num_det_layers = 3 model = dict( type='YOLODetector', data_preprocessor=dict( type='YOLOv5DetDataPreprocessor', mean=[0.0, 0.0, 0.0], std=[255.0, 255.0, 255.0], bgr_to_rgb=True), backbone=dict( type='YOLOv5CSPDarknet', deepen_factor=0.33, widen_factor=0.5, norm_cfg=dict(type='BN', momentum=0.03, eps=0.001), act_cfg=dict(type='SiLU', inplace=True)), neck=dict( type='YOLOv5PAFPN', deepen_factor=0.33, widen_factor=0.5, in_channels=[256, 512, 1024], out_channels=[256, 512, 1024], num_csp_blocks=3, norm_cfg=dict(type='BN', momentum=0.03, eps=0.001), act_cfg=dict(type='SiLU', inplace=True)), bbox_head=dict( type='YOLOv5Head', head_module=dict( type='YOLOv5HeadModule', num_classes=1, in_channels=[256, 512, 1024], widen_factor=0.5, featmap_strides=[8, 16, 32], num_base_priors=3), prior_generator=dict( type='mmdet.YOLOAnchorGenerator', base_sizes=[[(68, 69), (154, 91), (143, 162)], [(242, 160), (189, 287), (391, 207)], [(353, 337), (539, 341), (443, 432)]], strides=[8, 16, 32]), loss_cls=dict( type='mmdet.CrossEntropyLoss', use_sigmoid=True, reduction='mean', loss_weight=0.006250000000000001), loss_bbox=dict( type='IoULoss', iou_mode='ciou', bbox_format='xywh', eps=1e-07, reduction='mean', loss_weight=0.05, return_iou=True), loss_obj=dict( type='mmdet.CrossEntropyLoss', use_sigmoid=True, reduction='mean', loss_weight=1.0), prior_match_thr=4.0, obj_level_weights=[4.0, 1.0, 0.4]), test_cfg=dict( multi_label=True, nms_pre=30000, score_thr=0.001, nms=dict(type='nms', iou_threshold=0.65), max_per_img=300)) albu_train_transforms = [ dict(type='Blur', p=0.01), dict(type='MedianBlur', p=0.01), dict(type='ToGray', p=0.01), dict(type='CLAHE', p=0.01) ] pre_transform = [ dict(type='LoadImageFromFile', file_client_args=dict(backend='disk')), dict(type='LoadAnnotations', with_bbox=True) ] train_pipeline = [ dict(type='LoadImageFromFile', file_client_args=dict(backend='disk')), dict(type='LoadAnnotations', with_bbox=True), dict( type='Mosaic', img_scale=(640, 640), pad_val=114.0, pre_transform=[ dict( type='LoadImageFromFile', file_client_args=dict(backend='disk')), dict(type='LoadAnnotations', with_bbox=True) ]), dict( type='YOLOv5RandomAffine', max_rotate_degree=0.0, max_shear_degree=0.0, scaling_ratio_range=(0.5, 1.5), border=(-320, -320), border_val=(114, 114, 114)), dict( type='mmdet.Albu', transforms=[ dict(type='Blur', p=0.01), dict(type='MedianBlur', p=0.01), dict(type='ToGray', p=0.01), dict(type='CLAHE', p=0.01) ], bbox_params=dict( type='BboxParams', format='pascal_voc', label_fields=['gt_bboxes_labels', 'gt_ignore_flags']), keymap=dict(img='image', gt_bboxes='bboxes')), dict(type='YOLOv5HSVRandomAug'), dict(type='mmdet.RandomFlip', prob=0.5), dict( type='mmdet.PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'flip', 'flip_direction')) ] train_dataloader = dict( batch_size=8, num_workers=4, persistent_workers=True, pin_memory=True, sampler=dict(type='DefaultSampler', shuffle=True), dataset=dict( type='RepeatDataset', times=5, dataset=dict( type='YOLOv5CocoDataset', data_root='./data/cat/', metainfo=dict(classes=('cat', ), palette=[(220, 20, 60)]), ann_file='annotations/trainval.json', data_prefix=dict(img='images/'), filter_cfg=dict(filter_empty_gt=False, min_size=32), pipeline=[ dict( type='LoadImageFromFile', file_client_args=dict(backend='disk')), dict(type='LoadAnnotations', with_bbox=True), dict( type='Mosaic', img_scale=(640, 640), pad_val=114.0, pre_transform=[ dict( type='LoadImageFromFile', file_client_args=dict(backend='disk')), dict(type='LoadAnnotations', with_bbox=True) ]), dict( type='YOLOv5RandomAffine', max_rotate_degree=0.0, max_shear_degree=0.0, scaling_ratio_range=(0.5, 1.5), border=(-320, -320), border_val=(114, 114, 114)), dict( type='mmdet.Albu', transforms=[ dict(type='Blur', p=0.01), dict(type='MedianBlur', p=0.01), dict(type='ToGray', p=0.01), dict(type='CLAHE', p=0.01) ], bbox_params=dict( type='BboxParams', format='pascal_voc', label_fields=['gt_bboxes_labels', 'gt_ignore_flags']), keymap=dict(img='image', gt_bboxes='bboxes')), dict(type='YOLOv5HSVRandomAug'), dict(type='mmdet.RandomFlip', prob=0.5), dict( type='mmdet.PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'flip', 'flip_direction')) ])), collate_fn=dict(type='yolov5_collate')) test_pipeline = [ dict(type='LoadImageFromFile', file_client_args=dict(backend='disk')), dict(type='YOLOv5KeepRatioResize', scale=(640, 640)), dict( type='LetterResize', scale=(640, 640), allow_scale_up=False, pad_val=dict(img=114)), dict(type='LoadAnnotations', with_bbox=True, scope='mmdet'), dict( type='mmdet.PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor', 'pad_param')) ] val_dataloader = dict( batch_size=1, num_workers=2, persistent_workers=True, pin_memory=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False), dataset=dict( type='YOLOv5CocoDataset', data_root='./data/cat/', test_mode=True, data_prefix=dict(img='images/'), ann_file='annotations/trainval.json', pipeline=[ dict( type='LoadImageFromFile', file_client_args=dict(backend='disk')), dict(type='YOLOv5KeepRatioResize', scale=(640, 640)), dict( type='LetterResize', scale=(640, 640), allow_scale_up=False, pad_val=dict(img=114)), dict(type='LoadAnnotations', with_bbox=True, scope='mmdet'), dict( type='mmdet.PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor', 'pad_param')) ], batch_shapes_cfg=dict( type='BatchShapePolicy', batch_size=1, img_size=640, size_divisor=32, extra_pad_ratio=0.5), metainfo=dict(classes=('cat', ), palette=[(220, 20, 60)]))) test_dataloader = dict( batch_size=1, num_workers=2, persistent_workers=True, pin_memory=True, drop_last=False, sampler=dict(type='DefaultSampler', shuffle=False), dataset=dict( type='YOLOv5CocoDataset', data_root='./data/cat/', test_mode=True, data_prefix=dict(img='images/'), ann_file='annotations/trainval.json', pipeline=[ dict( type='LoadImageFromFile', file_client_args=dict(backend='disk')), dict(type='YOLOv5KeepRatioResize', scale=(640, 640)), dict( type='LetterResize', scale=(640, 640), allow_scale_up=False, pad_val=dict(img=114)), dict(type='LoadAnnotations', with_bbox=True, scope='mmdet'), dict( type='mmdet.PackDetInputs', meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'scale_factor', 'pad_param')) ], batch_shapes_cfg=dict( type='BatchShapePolicy', batch_size=1, img_size=640, size_divisor=32, extra_pad_ratio=0.5), metainfo=dict(classes=('cat', ), palette=[(220, 20, 60)]))) param_scheduler = None optim_wrapper = dict( type='OptimWrapper', optimizer=dict( type='SGD', lr=0.0025, momentum=0.937, weight_decay=0.0005, nesterov=True, batch_size_per_gpu=16), constructor='YOLOv5OptimizerConstructor') custom_hooks = [ dict( type='EMAHook', ema_type='ExpMomentumEMA', momentum=0.0001, update_buffers=True, strict_load=False, priority=49) ] val_evaluator = dict( type='mmdet.CocoMetric', proposal_nums=(100, 1, 10), ann_file='./data/cat/annotations/trainval.json', metric='bbox') test_evaluator = dict( type='mmdet.CocoMetric', proposal_nums=(100, 1, 10), ann_file='./data/cat/annotations/trainval.json', metric='bbox') train_cfg = dict( type='EpochBasedTrainLoop', max_epochs=100, val_interval=2, val_begin=20) val_cfg = dict(type='ValLoop') test_cfg = dict(type='TestLoop') work_dir = 'myworkdir/' class_name = ('cat', ) metainfo = dict(classes=('cat', ), palette=[(220, 20, 60)]) launcher = 'none'

Additional information

No response

mm-assistant[bot] commented 1 year ago

We recommend using English or English & Chinese for issues so that we could have broader discussion.

hhaAndroid commented 1 year ago

@1092281350 Did you solve the problem?