使用https://my.oschina.net/u/876354/blog/1927351的方法制作了数据集,途中遇到几个问题。
问题1:
python SSD-Tensorflow-master/tf_convert_data.py --dataset_name=pascalvoc --dataset_dir=./voc2007 --output_name=voc_2007_train --output_dir=./tfrecord
转换后提示:
路径不对,并给出地址,
解决办法:
文件夹后面没有添加/,应该为:
python SSD-Tensorflow-master/tf_convert_data.py --dataset_name=pascalvoc --dataset_dir=./voc2007/ --output_name=voc_2007_train --output_dir=./tfrecord/
问题2:
python SSD-Tensorflow-master/tf_convert_data.py --dataset_name=pascalvoc --dataset_dir=./voc2007/ --output_name=voc_2007_train --output_dir=./tfrecord/
提示:
unicodedecodeerror 'utf-8' codec can't decode byte 0xff in position 0 invalid start byte
查找issue项,发现:
fix:
pascalvoc_to_tfrecords.py
image_data = tf.gfile.FastGFile(filename, 'r').read()
change that to:
image_data = tf.gfile.FastGFile(filename, 'rb').read()
解决问题
问题3:
python SSD-Tensorflow-master/tf_convert_data.py --dataset_name=pascalvoc --dataset_dir=./voc2007/ --output_name=voc_2007_train --output_dir=./tfrecord/
提示:
File "E:\object_detection_learning\SSD-Tensorflow-master\datasets\pascalvoc_to_tfrecords.py",line 104, in _process_image
labels.append<int<VOC_LABELS[label][0]>>
KeyError: 'sign'
解决办法:
直接检索labels.append<int<VOC_LABELS[label][0]>>这块儿有很多探讨
打开datasets文件夹下的pascalvoc_to_tfrecords.py文件,修改它的第103行
注释掉原来的, 括号内改为1,即可。
#labels.append(int(VOC_LABELS[label][0]))
labels.append(1)#int(VOC_LABELS[label][0])label对应的类别编号,此处直接使用1.没什么特殊意义
参考
[1]https://github.com/balancap/SSD-Tensorflow/issues/108
[2]https://blog.youkuaiyun.com/qigeyonghuming_1/article/details/89205690