Windows下实现将Pascal VOC转化为TFRecords
前言
由于TensorFlow常用TFrecords作为输入格式,我们需要将制作好的PascalVOC转为TFrecords格式。使用objectdetectionAPI内提供的脚本。
TFRecords格式如下:
-uint64length
-uint32masked_crc32_of_length
-bytedata[length]
-uint32masked_crc32_of_data
前置要求:
Anaconda3(使用python3.x)
制作好的PascalVOC数据集
1、配置protobuf
Google的protobuf是一种轻便高效的结构化数据存储格式,结构扩展性高,速度快,密度大。我们下载对应的protoc-3.4.0-win32.zip版本。解压之后的文件内容如下:
将bin文件夹所在路径添加到环境变量PATH,再将bin下的protoc.exe移动到C:\Windows\System32目录下。
cmd下进入~models/reseach目录下,输入:
protocobject_detection/protos/*.proto--python_out=.
2、设置搜索路径
Windows下的API使用时会出现图示bug,需要创建xx.pth文件,将以下两条路径添加进去:
~\models\research
~\models\research\slim
接着,将pth文件移动到python安装目录的site-packages下。
最后,我们利用cmd运行model_builder_test.py文件,测试环境是否搭建成功。
3、修改pascal_label_map.pbtxt
打开~models/research/object_detection/data/pascal_label_map.pbtxt,修改其中的name为自己的分类名。
如图所示,这里我要识别分类的是图片数字0~3,所以修改了对应的name。
4、修改create_pascal_tf_record.py文件
(1)47行:根据自己的VOC数据集格式,修改年份,如果是2007,则保持默认;
(2)49行:将data/pascal_label_map.pbtxt改为绝对路径
(3)81行:改为img_path=os.path.join('JPEGImages',data['filename'])
(4)82行:改为full_path=os.path.join(dataset_directory,'VOC2012',img_path+'.jpg')
(5)163行:改为examples_path=os.path.join(data_dir,year,'ImageSets','Main','xx'+FLAGES.set+'.txt')
xx里的内容是~VOCdevkit\VOC2012\ImageSets\Main目录下的文件前缀名称,如果没有,留空就可以。
5、运行
cmd下输入:
python~/models/research/object_detection/dataset_tools/create_pascal_tf_record.py\
--data_dir=~/VOCdevkit\
--year=VOC2012\
--output_path=~/xx.record
其中,波浪线的地方分别为自己的py文件位置、VOC数据位置、转换的record文件存储位置。
注:
1、protoc必须使用3.4版本而非3.5,否则会出现找不到*.proto的bug;
2、运行时出现很多bug,根据bug一步一步回推代码修改。
以上这篇Windows下实现将PascalVOC转化为TFRecords就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。