cv2.error: color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘

该文章主要解决使用coco格式数据报错!
将标注完成的数据集通过xml2coco(转换代码)后生成coco数据集格式。运行train.py,出现标题的报错,出现该错误的原因和解决办法如下:

1.打开该数据集的xml文件,具体信息如下图所示:
cv2.error: color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘_第1张图片
发现filename该项只有一个数字1,并没有图片后缀(jpg、bmp、png等)信息,而对应的图片名为1.jpg,因此需要在该项添加后缀jpg,由于图片共有三千多张,对应的xml文件也有这么多个,工作量巨大,而使用coco格式读取的代码最终只会读取xml生成的.json文件,故只需要在其内添加则可。
使用notepad++打开.json文件,将", “width"替换成.jpg”, “width”,选择全部替换,因为每一个图片对应字符width,上述替换的方法可保证100%准确率。

2.替换之后运行代码仍旧报错,原因在于有的图片本身自带了.jpg信息,如下:cv2.error: color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function ‘cv::cvtColor‘_第2张图片
因此选择删除或若数量多的话,使用.jpg替换.jpg.jpg即可。

3.在一个epoch迭代的6%的时候仍旧出现上述错误,此时我心态还是有点崩的,然后对代码debug,发现有的xml信息里面的filename序号和其本身不对应,比如我是一个2840.xml文件,打开之后发现其filename是2841.jpg,因此将该文件删除可正常运行。

总结针对上面三个问题,其主要原因在于标注数据集时不规范,导致该有的信息丢失或重复,最后使得运行的代码找不到图片而出错。

你可能感兴趣的:(深度学习,pytorch)