在mmdetection中有時候訓(xùn)練模型會出現(xiàn)ValueError: need at least one array to concatenate的錯誤,詳情如下圖所示。
很多人都說是mmdet/dataset下coco.py或voc.py中CLASSES設(shè)置與數(shù)據(jù)集對應(yīng)不上,博主不以為然。因為在mmdetection2中,不需要到mmdet/dataset中修改CLASSES,只需要在訓(xùn)練配置文件中中設(shè)置一下就行了。config解釋器會通過繼承自動修改CLASSES的值,具體可見下圖,或參考mmdetection2的使用教程從數(shù)據(jù)處理、配置文件到訓(xùn)練與測試(支持coco數(shù)據(jù)和pascal_voc數(shù)據(jù))_萬里鵬程轉(zhuǎn)瞬至的博客-CSDN博客_mmdetection2https://hpg123.blog.csdn.net/article/details/124617894
?只要配置文件中classes設(shè)置正確了,voc數(shù)據(jù)就不會出現(xiàn)上述的報錯。
但是,coco數(shù)據(jù)集會因此數(shù)據(jù)轉(zhuǎn)化時設(shè)置有誤,而導(dǎo)致出現(xiàn)上述錯誤。博主的數(shù)據(jù)集只有shoot一個類別,在數(shù)據(jù)集轉(zhuǎn)換時,通過下列方式在tools\dataset_converters\pascal_voc.py文件設(shè)置類別。【錯誤方式】
?然后生成的coco數(shù)據(jù)存在問題,本來只有一個shoot類別的coco數(shù)據(jù),結(jié)果出現(xiàn)了?20余個supercategory項目。這就是導(dǎo)致報錯的根源。
在轉(zhuǎn)換數(shù)據(jù)集時,需要通過在tools\dataset_converters\pascal_voc.py文件按照以下標(biāo)準(zhǔn)以下設(shè)置修改自定義類別
?通過該方式生成的coco數(shù)據(jù)集才是嚴(yán)格正確的,其categories的格式如下圖所示。如果是通過第三方項目生成的coco數(shù)據(jù),則請檢查categories內(nèi)的數(shù)據(jù)與數(shù)據(jù)集的類別是否正常。
?在修改coco數(shù)據(jù)集的錯誤后,現(xiàn)在mmdetection可以正常訓(xùn)練數(shù)據(jù)了。
文章來源:http://www.zghlxwxcb.cn/news/detail-410371.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-410371.html
到了這里,關(guān)于mmdetection ValueError: need at least one array to concatenate解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!