我在利用训练SSD源码进行训练时,报了如下错误
FileNotFoundError: [Errno 2] No such file or directory: 'voc_demo/VOCdevkit/VOC2007/JPEGImages/pitted_surface_97'
,我本以为是这张图片不存在导致的报错,所以我去数据集中寻找此文件,发现这个文件正常存在。
仔细一看,文件后缀有问题,应该是.jpg,但是经过我调试,有的文件可以正常读取(有正常后缀),有的不行。这让我感觉很奇怪。
然后我看出了读取图片的代码,发现是用xml的filename读取文件的,但是原标注的xml的filename不标准。有一说一,用xml提取图片地址不太可取,因为xml的filename感觉经常写的有问题。
如图,正常读取的xml
异常读取的xml
发现其filename没有.jpg
的后缀。
所以在数据读取文件中改变一下代码
img_name = data["filename"]
if not data["filename"].endswith(".jpg"):
img_name += ".jpg"
img_path = os.path.join(self.img_root, img_name)