BACL icon indicating copy to clipboard operation
BACL copied to clipboard

您好!我使用新的数据集训练模型,在classifier训练阶段,第一个epoch训练完之后无法继续训练。下面是日志,请问是遇到了什么问题?

Open ButoneDream opened this issue 1 year ago • 9 comments

ButoneDream avatar Oct 12 '23 10:10 ButoneDream

根据img_meta[img_id]['batch_input_shape'] = tuple(img.size()[-2:])处的报错信息TypeError: 'DataContainer' object is not subscriptable,应该检查一下使用数据集的img_meta是什么,我合理推测是因为这个不能被索引导致的

Tianhao-Qi avatar Oct 12 '23 10:10 Tianhao-Qi

您好,首先十分感谢解答。我使用的数据集是food-recognition-2022 ,且以coco格式标注。数据集的文件目录按照您readme中的说明创建。使用了两张3060显卡训练。img_meta 我理解的是mmdet自动创建的,用来管理图像相关的元信息。 但是在representation阶段的训练没有问题。我发现第一个epoch训练结束后,评估evaluate bbox时代码中断并报该错误。但是我不知道如何修改。您能帮我分析下吗?

ButoneDream avatar Oct 12 '23 11:10 ButoneDream

如果想快速避免这个问题,可以将config里面的evaluation = dict(metric=['bbox'], interval=1, save_best='auto', rule='greater')改成evaluation = dict(metric=['bbox'], interval=12),这样可以保证训练能结束,最后再单独拎出来测试,遇到问题debug就行

Tianhao-Qi avatar Oct 18 '23 09:10 Tianhao-Qi

感谢!根据您的建议,已训练完毕。模型在food recognition 2022 /kaggle 数据集上的性能指标: Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.026 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=1000 ] = 0.073 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=1000 ] = 0.013 Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=1000 ] = 0.000 Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=1000 ] = 0.031 Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=1000 ] = 0.026 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.157 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=300 ] = 0.157 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=1000 ] = 0.157 Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=1000 ] = 0.000 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=1000 ] = 0.060 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=1000 ] = 0.163 OrderedDict([('bbox_mAP', 0.026), ('bbox_mAP_50', 0.073), ('bbox_mAP_75', 0.013), ('bbox_mAP_s', 0.0), ('bbox_mAP_m', 0.031), ('bbox_mAP_l', 0.026), ('bbox_mAP_copypaste', '0.026 0.073 0.013 0.000 0.031 0.026')]) 从评估结果来看,是否是我训练的时候,超参数没有修改的原因??

ButoneDream avatar Oct 23 '23 15:10 ButoneDream

第一阶段的测试结果是正常的吗

Tianhao-Qi avatar Oct 23 '23 15:10 Tianhao-Qi

第一阶段测试结果: 2023-10-12 04:49:57,901 - mmdet - INFO - Epoch(val) [12][2499] bbox_mAP: 0.0230, bbox_mAP_50: 0.0670, bbox_mAP_75: 0.0090, bbox_mAP_s: 0.0000, bbox_mAP_m: 0.0120, bbox_mAP_l: 0.0240, bbox_mAP_copypaste: 0.023 0.067 0.009 0.000 0.012 0.024 看起来似乎不太正常

ButoneDream avatar Oct 24 '23 05:10 ButoneDream

作者 这种情况跟分布式训练有关吗 我用的单卡训练 没有改动您的代码中关于分布式的部分

ButoneDream avatar Oct 30 '23 05:10 ButoneDream

你可以在仓库中faster rcnn的原生config上使用你的数据集配置跑组实验,以此判断问题来源

Tianhao-Qi avatar Oct 30 '23 06:10 Tianhao-Qi

感谢! dict( type='Resize', img_scale=[(1333, 640), (1333, 672), (1333, 704), (1333, 736), (1333, 768), (1333, 800)], multiscale_mode='value', keep_ratio=True), 我的错误是把这里的多尺度训练设太小了。。

ButoneDream avatar Nov 01 '23 14:11 ButoneDream