tensorflow object detection API 使用记录2
使用API训练自己的数据
- 使用API训练自己的数据
- 说明
- 实际使用
- 总结
说明
本文仍然使用谷歌API提供的网络模型框架,有了框架,现在要解决的是如何让网络训练自己的数据,而数据要提供两个东西给配置文件:一是对应的TFrecord文件,二是对应的.pbtxt文件
.pbtxt文件:很简单,照着object_detection/data文件夹下的示例写就好了,注意id: 0代表背景,自己的类别对应的id应为非0数
TFrecord文件:那么如何得到TFrecord文件,官网提供了转换TFrecord文件的小demo: preparing your inputs,思路大概就是通过tf.train.Features写到tf.train.Example中,然后就可以写到一个TFrecord文件中, 但是这个小demo只是一张图片的例子,要整合自己的数据让他一起转换总感觉好麻烦(最重要的是数据还要自己标定!!!),所以怎么做哩,该API又提供了已经写好的两个转换TFrecord的文件(记录1里面用过),一个是对VOC数据转,一个是对pet数据转,所以考虑将自己的数据标定成这些有现成代码的形式就行了。好在VOC数据格式有现成的标定工具LabelImg:工具github(但标的还是好想吐)
该工具有一点要注意的地方,最新版本的不知道改没改,具体见github以及实际使用情况啦,这里推荐一个将自己的数据集转成VOC数据格式的博客,写的超详细,就不再赘述:好博客
实际使用
将自己的数据准备好之后,就可以按照官方的使用示例,利用现有代码:create_pascal_tf_record.py转换成TFrecord文件,然后改好模型的配置文件里面的路径就可以开始训练了
要改的有相关的路径,以及类别数
但是实际的使用中,还是因为数据出了一点问题,记录如下:
转TFrecord的时候报找不到图片的错:
查找原因发现是因为:在生成TFrecord文件的时候,利用了annotation中xml文件的Folder关键字去遍历图片,由于我自己标定数据的Folder关键字与VOC数据存放的文件夹格式不匹配,所以出错了,在宿舍没有图片展示下,贴下相关代码好了:
所以干脆把data[‘folder’]这里改成了VOC2007,因为我的数据都在这个文件夹下面,视具体情况修改
转TFrecord报错找不到关键字difficult
查看了一下自己用工具生成的xml文件,发现difficult关键字确实不同,工具产生的关键字是大写,所以要么把xml文件中关键字改掉,要么在程序中处理一下,我是在程序中处理一下:
这里把difficult这里改一下,要么找大写的要么找小写的。
终于转成功了,但是训练的时候又出错了,总是训练了若干步之后突然停止训练(绝望脸)
查找原因,在stackoverflow上面有类似问题的说是.pbtxt中标号为0的问题,联系我自己的.pbtxt文件,我因为只做一类物体的检测,这一类物体在VOC的类别里面有,所以我将VOC的那个.pbtxt文件的其他我不要的类别都设成了0, 但好像就是这样导致出问题了,因为我用的数据除了自己找的数据,还把VOC数据里面相关的都用了,而在这些数据里,可能有其他类别的标注信息,而我又将这些框的id对应到了0,这些框有ground truth但id又是背景(貌似产生矛盾),反正就这样报错了,最后我采取在程序中改代码,只要不是我需要的类别就不把它写到TFrecord文件中去(很简单,通过name关键字判断跳过与否即可),就避免了出错,最后终于正常训练了。
总结
目录下的create_pascal_tf_record.py文件还是很值得好好看一下,本文涉及到的程序就只是这一个啦。
tensorflow object detection API 使用记录2相关推荐
- Tensorflow object detection API 搭建自己的目标检测模型并迁移到Android上
参考链接:https://blog.csdn.net/dy_guox/article/details/79111949 之前参考上述一系列博客在Windows10下面成功运行了TensorFlow A ...
- 转 TensorFlow Object Detection API 多GPU 卡平行计算,加速模型训练速度教学
本篇记录如何使用多张GPU 显示卡,加速TensorFlow Object Detection API 模型训练的过程. 虽然TensorFlow Object Detection API 已经有支援 ...
- TensorFlow Object Detection API 多GPU 卡平行计算,加速模型训练速度教学
本篇记录如何使用多张GPU 显示卡,加速TensorFlow Object Detection API 模型训练的过程. 虽然TensorFlow Object Detection API 已经有支援 ...
- TensorFlow Object Detection API 超详细教程和踩坑过程
安装Anacond:https://blog.csdn.net/ITLearnHall/article/details/81708148 安装Pycharm:https://blog.csdn.net ...
- TensorFlow Object Detection API入门例子 (小浣熊检测上)
玩了一周的TensorFlow Object Detection API了,是时候记录一下,踩过的坑都快忘记了~ 首先,总结一下检测的流程,实验分以下几步完成: 收集并标注数据 数据格式转换 确定训练 ...
- Tensorflow object detection API 搭建属于自己的物体识别模型(转载修改)
Tensorflow object detection API 搭建属于自己的物体识别模型 电脑配置信息 开始搭建环境 测试自带案例 准备训练图片 配置文件与模型 开始训练模型 生成最终的训练文件 测 ...
- Tensorflow object detection API 搭建属于自己的物体识别模型1环境搭建与测试
https://blog.csdn.net/dy_guox/article/details/79111949 后续博客地址(附带视频教程) ------------------------------ ...
- Tensorflow object detection API 搭建物体识别模型
----------------------------------------------------先把别人博客教程跑通-------------------------------------- ...
- ubunu16.04 TensorFlow object detection API 应用配置
TensorFlow object detection API应用–配置 主要参考 : https://github.com/tensorflow/models/blob/master/researc ...
最新文章
- 为什么要进行图学习?谈一谈逆势而上的图神经网络
- Oracle 用数据泵导入导出数据
- IOS学习之路--OC的基础知识
- 从u盘设备启动arc-livecd
- 二叉树(遍历、建立、深度)
- 部署yum仓库与NFS服务
- 《数据库SQL实战》获取所有非manager的员工emp_no
- 关于 PHP 5.4 你所需要知道的
- STM32开发板入门教程(十三) - SPI模式读写SD卡
- rest api_REST API的演变
- oracle sqlldr详解,sqlldr详解
- MyBatis→优缺点、select延迟加载、接口式MyBatis编程、一级缓存、二级缓存、集成Redis自定义缓存、Log4j
- 孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理
- MacOS上如何将MOV文件转换为MP4
- 互联网企业安全建设之路:互联网企业为什么要做安全?
- 知网靠论文一年收费10多亿
- 基于Android开发的仿网易云播放器
- 练习一万小时成天才?
- matlab仿真plant函数,(整理)matlab预测控制工具箱函数.
- linux系统终端用户名和密码忘记了,主机大师(Linux)登录账户密码忘记的解决办法...
热门文章
- c语言区间,C 语言实例 – 循环输出区间范围内的奇数/偶数 | 菜鸟教程
- oracle 判断是否错误_Oracle中的并行系列(二):你设置的并行真的生效了吗?...
- ORM单表查询,跨表查询,分组查询
- Morph 3D拥有近千名艺术家,欲打造全球最大的VR虚拟化身服装库
- 虚幻4视频笔记002:精简StarterContent文件夹体积
- Edraw Max(亿图图示)案例:产品经理如何用亿图绘制流程图?
- Mysql跨机房同步方案
- 使用Python统计Linux系统内存
- 解决 yum时 Error: Protected multilib versions报错
- 《Delphi 算法与数据结构》学习与感悟[3]: 获取一个字节中非空位的个数