Windows下实现将Pascal VOC转化为TFRecords


Posted in Python onFebruary 17, 2020

前言

由于TensorFlow常用TFrecords作为输入格式,我们需要将制作好的Pascal VOC转为TFrecords格式。使用 object detection API 内提供的脚本。

TFRecords格式如下:

-uint64 length

-uint32 masked_crc32_of_length

-byte data[length]

-uint32 masked_crc32_of_data

前置要求:

Anaconda3(使用python3.x)

制作好的Pascal VOC数据集

1、配置protobuf

Google的protobuf是一种轻便高效的结构化数据存储格式,结构扩展性高,速度快,密度大。我们下载对应的protoc-3.4.0-win32.zip版本。解压之后的文件内容如下:

Windows下实现将Pascal VOC转化为TFRecords

将bin文件夹所在路径添加到环境变量PATH,再将bin下的protoc.exe移动到C:\Windows\System32目录下。

cmd下进入~models/reseach目录下,输入:

protoc object_detection/protos/*.proto --python_out=.

2、设置搜索路径

Windows下的API使用时会出现图示bug,需要创建xx.pth文件,将以下两条路径添加进去:

~\models\research

~\models\research\slim

接着,将pth文件移动到python安装目录的site-packages下。

Windows下实现将Pascal VOC转化为TFRecords

最后,我们利用cmd运行model_builder_test.py文件,测试环境是否搭建成功。

Windows下实现将Pascal VOC转化为TFRecords

3、修改pascal_label_map.pbtxt

打开~models/research/object_detection/data/pascal_label_map.pbtxt,修改其中的name为自己的分类名。

如图所示,这里我要识别分类的是图片数字0~3,所以修改了对应的name。

Windows下实现将Pascal VOC转化为TFRecords

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下实现将Pascal VOC转化为TFRecords就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python操作RabbitMQ服务器消息队列的远程结果返回
Jun 30 Python
python使用super()出现错误解决办法
Aug 14 Python
python机器学习实战之K均值聚类
Dec 20 Python
Java及python正则表达式详解
Dec 27 Python
教你用一行Python代码实现并行任务(附代码)
Feb 02 Python
Django之提交表单与前后端交互的方法
Jul 19 Python
python读写文件write和flush的实现方式
Feb 21 Python
Windows系统下pycharm中的pip换源
Feb 23 Python
Python urllib库如何添加headers过程解析
Oct 05 Python
Python之京东商品秒杀的实现示例
Jan 06 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 Python
Python语言规范之Pylint的详细用法
Jun 24 Python
tensorflow生成多个tfrecord文件实例
Feb 17 #Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 #Python
Python 读取有公式cell的结果内容实例方法
Feb 17 #Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 #Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 #Python
将自己的数据集制作成TFRecord格式教程
Feb 17 #Python
tensorflow 实现数据类型转换
Feb 17 #Python
You might like
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
php实现的操作excel类详解
2016/01/15 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
JS获取html对象的几种方式介绍
2013/12/05 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
Node.js异步I/O学习笔记
2014/11/04 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
js运动应用实例解析
2015/12/28 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
详解webpack打包vue时提取css
2017/05/26 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
pyramid配置session的方法教程
2013/11/27 Python
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python解析json代码实例解析
2019/11/25 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
python实现井字棋小游戏
2020/03/04 Python
澳大利亚儿童和婴儿产品在线商店:Lime Tree Kids
2017/10/05 全球购物
金讯Java笔试题目
2013/06/18 面试题
幸福家庭事迹材料
2014/02/03 职场文书
文案策划求职信
2014/03/18 职场文书
植树节标语
2014/06/27 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript