图像标注后,用了自己的图像名字,报错如下:(最终还是采用原文件命名格式)
_sys.exit(main(argv))
File "D:/work/SSD-Tensorflow-master/tf_convert_data.py", line 58, in main
pascalvoc_to_tfrecords.run(FLAGS.dataset_dir, FLAGS.output_dir, FLAGS.output_name)
File "D:\work\SSD-Tensorflow-master\datasets\pascalvoc_to_tfrecords.py", line 218, in run
_add_to_tfrecord(dataset_dir, img_name, tfrecord_writer)
File "D:\work\SSD-Tensorflow-master\datasets\pascalvoc_to_tfrecords.py", line 177, in _add_to_tfrecord
_process_image(dataset_dir, name)
File "D:\work\SSD-Tensorflow-master\datasets\pascalvoc_to_tfrecords.py", line 103, in _process_image
labels.append(int(VOC_LABELS[label][0]))
KeyError: 'Photovoltaic'
这个错误是因为程序里分类的标签都没改。按照博客修改相关文件里的数据就成功了。
参考修改博客:https://blog.csdn.net/comway_Li/article/details/85239484
将xml转变为txt文件,不知道对图像有没有影响:https://blog.csdn.net/w5688414/article/details/78395177/
然后报错:
Dataset directory: ./VOC2007/test/
Output directory: ./tfrecords
>> Converting image 156/158Traceback (most recent call last):
File "D:/work/SSD-Tensorflow-master/tf_convert_data.py", line 63, in <module>
tf.app.run()
File "C:\Users\11327\AppData\Roaming\Python\Python36\site-packages\tensorflow\python\platform\app.py", line 125, in run
_sys.exit(main(argv))
File "D:/work/SSD-Tensorflow-master/tf_convert_data.py", line 58, in main
pascalvoc_to_tfrecords.run(FLAGS.dataset_dir, FLAGS.output_dir, FLAGS.output_name)
File "D:\work\SSD-Tensorflow-master\datasets\pascalvoc_to_tfrecords.py", line 218, in run
_add_to_tfrecord(dataset_dir, img_name, tfrecord_writer)
File "D:\work\SSD-Tensorflow-master\datasets\pascalvoc_to_tfrecords.py", line 177, in _add_to_tfrecord
_process_image(dataset_dir, name)
File "D:\work\SSD-Tensorflow-master\datasets\pascalvoc_to_tfrecords.py", line 116, in _process_image
bboxes.append((float(bbox.find('ymin').text) / shape[0],
ZeroDivisionError: float division by zero
最终查到原因:
看报错信息:总是在156这一张图上报错,标注图像里这一张是存在问题的(现在还没查出来为什么读不出这个图片的高和宽)。就是xml文件图片高宽都是0,但是标注框是有数据的,于是有0被除的错误产生,另外还有数据集里不要放其他数据,比如数据集的压缩包,这样读数据什么的是会报错的。
我就手动把宽高都加上了,然后问题就解决了。转化为tf_recored文件程序不报错了。