【已解决】ValueError:need at least array to concatenate

项目场景:

使用MMdetection复现论文,出现报错:ValueError:need at least array to concatenate

问题描述:

在这里插入图片描述

解决方案:

1.annotations(JSON文件)中设置的CLASSES类别与 mmdet/datasets/coco.py 的cocodataset函数中CLASSES不一致,可能两个位置的单词写的不一样,或者数量不同,将两者改成一致的就行。如下图,JSON文件使用的是单数的nuclei,但coco.py文件中使用的是复数的nucleus,将coco.py中的改成单数就行。
Attention!!!
如果已经保证JSON文件中的CLASSES与coco.py文件的中的CLASSES一致,但依旧报错,请进入你的环境中(/home/***/anaconda3/envs/hongmoumou/lib/python3.7/site-packages/mmdet-2.11.0-py3.7.egg/mmdet/datasets)去检查环境中的coco.py中的CLASSES是否同样与JSON文件中一致。我曾经在这里多次犯错。

JASON文件:
JSON文件

coco.py文件:
在这里插入图片描述

2.annotations(JSON文件)中设置的categories类别与你的模型配置文件(/home//mmdetection-2.11.0/mmdetection-2.11.0/configs/***)设置的类别数量不一致。MMdetection中默认的num_classes=80,因为coco数据集包含80种类别数据,但如果你自己使用的数据集种类没那么多,就会造成JSON文件与配置文件中的类别不匹配,只需要将配置文件中的num_classes改为正确值即可。如下图,我使用医学图像进行细胞核分割实验,类别数为1,只需将msrk_rcnn中所有的num_classes改为1。

JASON文件:
在这里插入图片描述

配置文件:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/fengbao24/article/details/126697544