labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)

参考文献:1.https://www.cnblogs.com/leedaily/p/8286981.html
2.https://www.jianshu.com/p/3b472539b88a
create_pet_tf_record.py自动提30%样本作为验证样本,比create_pascal_tf_record.py简洁。
中间遇到了好多麻烦(proto和slim没装,用到物体分类,必须装这两个。而且object_detection\protos文件夹下的所有proto文件都得一个一个的转成.py文件),没有合适的标注资源,最后在这两篇的指导下用tensorflow自带的pet_label_map.pbtxt(在object_detection\data文件夹里,内容见图1)和trainval.txt(文献2的资源里带的,内容见图2,tesorflow里没找到这个,https://blog.csdn.net/c2a2o2/article/details/78447784玩具检查给的资源里缺这个,没发转,另外他弄的名字都没下划线是步行的)加上参考文献2提供的资源获得了成功(注意,pet_label_map.pbtxt里面的类不要删,测试会出错误)。并自己手动改了手头的一例资源,也成功了!
labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第1张图片图1
labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第2张图片图2
新建PETSSelf文件夹(图3),把从文献2下载下来的资源(标注好的文件包括.jpg和.xml;其中.jpg在images文件夹中,.xml在annotations文件夹的xmls子文件夹中,trainval.txt在annotations文件夹下)都放在这下面(图4),注意结构不能变。
labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第3张图片图3
图4
图4
images文件夹内容如下:labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第4张图片图5
annotations文件夹内容如图6:
labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第5张图片图6
xmls文件夹内放的就是标注时生成的xml文件(记载着文件名和ROI区域) 如图7 labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第6张图片图7
其中的一个xml展开如图8:labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第7张图片图8(这里面有用的只有filename段和bndbox段,其它不用管。包括labelImg标注时还自动生产一个path段,也不用管它,不会产生任何影响)
接下来pet_label_map.pbtxt(大小2KB)放到新建的data文件夹下面,如图9所示:
labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第8张图片图9

用到的主函数create_pet_tf_record.py在object_detection\dataset_tools文件夹下,拷贝到object_detection文件夹同一级运行。参数如图10所示。
在这里插入图片描述图10
create_pet_tf_record.py --label_map_path=data/pet_label_map.pbtxt --data_dir=PETSSelf --output_dir=PETSSelf
成功以后输出如图11
在这里插入图片描述图11
PETSSelf文件夹里多处两个record文件,说明成功,如图12
labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第9张图片图12
通过上面的例子,本人总结如下:
1. annotations 和images文件夹要放在同一个父文件夹下,输入输出的参数指定到这个父文件夹即可。
2. trainval.txt必不可少,且要放在annotations文件夹下
3. 像参考文献1说的那样,所有名字包括jpg图片和xml文件都得加下划线,标注时要注意命名规则
4. annotations 和images文件夹里的文件要同样多,且一一对应
5. pbtxt文件必不可少,用几个类写几个类不能少也不要多
6. xml文件不能直接放在annotations文件夹下,要放在其中建一个子文件夹xmls,放到此子文件夹下
7. 参数三个分别是pbtxt文件,输入路径( annotations 和images文件夹的父文件夹),输出路径(随意,一般同前)。
我自己动手弄的例子也转成功了。主要区别部分截图如下:
labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第10张图片
labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第11张图片上图xml文件跟例子不同,多了path段(之所以说,是因为labelImg出来的xml都有路径段,不用管它的),其实这是别人的,我电脑上也没此路径,我没管它,可以的。
labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数)_第12张图片就一类的识别。
输入指令(注意我自己建的pbtxt):create_pet_tf_record.py --label_map_path=data/toy_label_map.pbtxt --data_dir=PETSSelf --output_dir=PETSSelf
大功告成。
一个训练集一个测试集数据,写到config文件中,再带上coo模型,就可以开始训练了,当然还有前面的pbtxt文件。

你可能感兴趣的:(labelImg之后的文件转成TFrecord格式供tensorflow调用(create_pet_tf_record.py函数))