使用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相关推荐

  1. Tensorflow object detection API 搭建自己的目标检测模型并迁移到Android上

    参考链接:https://blog.csdn.net/dy_guox/article/details/79111949 之前参考上述一系列博客在Windows10下面成功运行了TensorFlow A ...

  2. 转 TensorFlow Object Detection API 多GPU 卡平行计算,加速模型训练速度教学

    本篇记录如何使用多张GPU 显示卡,加速TensorFlow Object Detection API 模型训练的过程. 虽然TensorFlow Object Detection API 已经有支援 ...

  3. TensorFlow Object Detection API 多GPU 卡平行计算,加速模型训练速度教学

    本篇记录如何使用多张GPU 显示卡,加速TensorFlow Object Detection API 模型训练的过程. 虽然TensorFlow Object Detection API 已经有支援 ...

  4. TensorFlow Object Detection API 超详细教程和踩坑过程

    安装Anacond:https://blog.csdn.net/ITLearnHall/article/details/81708148 安装Pycharm:https://blog.csdn.net ...

  5. TensorFlow Object Detection API入门例子 (小浣熊检测上)

    玩了一周的TensorFlow Object Detection API了,是时候记录一下,踩过的坑都快忘记了~ 首先,总结一下检测的流程,实验分以下几步完成: 收集并标注数据 数据格式转换 确定训练 ...

  6. Tensorflow object detection API 搭建属于自己的物体识别模型(转载修改)

    Tensorflow object detection API 搭建属于自己的物体识别模型 电脑配置信息 开始搭建环境 测试自带案例 准备训练图片 配置文件与模型 开始训练模型 生成最终的训练文件 测 ...

  7. Tensorflow object detection API 搭建属于自己的物体识别模型1环境搭建与测试

    https://blog.csdn.net/dy_guox/article/details/79111949 后续博客地址(附带视频教程) ------------------------------ ...

  8. Tensorflow object detection API 搭建物体识别模型

    ----------------------------------------------------先把别人博客教程跑通-------------------------------------- ...

  9. ubunu16.04 TensorFlow object detection API 应用配置

    TensorFlow object detection API应用–配置 主要参考 : https://github.com/tensorflow/models/blob/master/researc ...

最新文章

  1. 为什么要进行图学习?谈一谈逆势而上的图神经网络
  2. Oracle 用数据泵导入导出数据
  3. IOS学习之路--OC的基础知识
  4. 从u盘设备启动arc-livecd
  5. 二叉树(遍历、建立、深度)
  6. 部署yum仓库与NFS服务
  7. 《数据库SQL实战》获取所有非manager的员工emp_no
  8. 关于 PHP 5.4 你所需要知道的
  9. STM32开发板入门教程(十三) - SPI模式读写SD卡
  10. rest api_REST API的演变
  11. oracle sqlldr详解,sqlldr详解
  12. MyBatis→优缺点、select延迟加载、接口式MyBatis编程、一级缓存、二级缓存、集成Redis自定义缓存、Log4j
  13. 孙鑫VC学习笔记:第十三讲 (三) WM_FILE_NEW消息响应原理
  14. MacOS上如何将MOV文件转换为MP4
  15. 互联网企业安全建设之路:互联网企业为什么要做安全?
  16. 知网靠论文一年收费10多亿
  17. 基于Android开发的仿网易云播放器
  18. 练习一万小时成天才?
  19. matlab仿真plant函数,(整理)matlab预测控制工具箱函数.
  20. linux系统终端用户名和密码忘记了,主机大师(Linux)登录账户密码忘记的解决办法...

热门文章

  1. c语言区间,C 语言实例 – 循环输出区间范围内的奇数/偶数 | 菜鸟教程
  2. oracle 判断是否错误_Oracle中的并行系列(二):你设置的并行真的生效了吗?...
  3. ORM单表查询,跨表查询,分组查询
  4. Morph 3D拥有近千名艺术家,欲打造全球最大的VR虚拟化身服装库
  5. 虚幻4视频笔记002:精简StarterContent文件夹体积
  6. Edraw Max(亿图图示)案例:产品经理如何用亿图绘制流程图?
  7. Mysql跨机房同步方案
  8. 使用Python统计Linux系统内存
  9. 解决 yum时 Error: Protected multilib versions报错
  10. 《Delphi 算法与数据结构》学习与感悟[3]: 获取一个字节中非空位的个数