Tianhao-Qi / BACL

Balanced Classification: A Unified Framework for Long-Tailed Object Detection (TMM 2023)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

ButoneDream opened this issue · comments

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

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

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

感谢!根据您的建议,已训练完毕。模型在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')])
从评估结果来看,是否是我训练的时候,超参数没有修改的原因??

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

第一阶段测试结果:
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
看起来似乎不太正常

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

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

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