硬件环境

操作系统:ubuntu16.04LTS
显卡:GTX1080Ti 10G显存 内存32G
代码托管在码云,因为github实在是太慢了,老是timeout,翻墙也不行,搞了半天搞不定,突然看到中国有码云这个神器,以后就用码云来放代码了。

环境配置:

基于miniconda创建的python2.7环境
自己写一些脚本是用python3.6,训练环境是用python2.7,不过统一用python3.6的问题也不大
tensorflow 中object_detection环境配置
Tip
(1)在linux下按官方要求配置行云流水,在windows下比较麻烦些,搞深度学习建议放弃windows,使用ubuntu会少走很多坑。
(2)有GPU就装GPU版本tensorflow,没有GPU装CPU,不能同时装两个版本
(3)tensorflow models需要另外下载
(4)建议将如下代码改成在系统环境变量中添加,否则每次终端运行都需要加环境变量。

export PYTHONPATH=$PYTHONPATH:`pwd`:`pwd`/slim
  • 1

数据准备

使用LabelImg对图片进行标注,标注的格式需要选择pascal voc
快捷键:
W:标注 A:上一张 D:下一张 软件右上方选择默认标注的标签。
生成的xml文件分成两个文件夹train_xml和test_xml,一个用来训练,一个用来验证,注意是验证不是测试!验证是拿来计算损失的

下面的所有需要更改的对着源码使用

标签
mscoco_label_map.pbtxt
该文件可以在tensorlfow models里搜索的,这个名字和路径以及序号之后会用到,我只需要检测一个目标,所以内容如下图所示,(一个item代表一个目标,使用的vscode编辑的,id必须从1开始,因为没有目标也算其中一种检测结果)

item {id: 1name: "barcode"
}
  • 1
  • 2
  • 3
  • 4

ubuntu就用vim吧,windows的不建议用记事本,之前用记事本喷到一个坑,而且很多时候使用记事本打开文件后再保存会导致该文件不可用。
生成数据
xml_to_tfrecode.py
tensorflow需要使用的是tfrecode格式数据,但是官方的函数是先转成csv,然后转成tfrecode格式,实在是太麻烦,而且最烦的就是运行python还要加这么多参数,所以改了下代码一步到位,根据自己的路径自己更改下代码直接运行。
配置位置:

train_xml_path = './trainxmls'
test_xml_path = './testxmls'
#outputPath是那个目录名
outputPath = './data'
image_path = './images'
train_csv_path=os.path.join(outputPath, 'train.csv')
test_csv_path=os.path.join(outputPath, 'test.csv')
#train_recode_path和test_recode默认为放在同一个文件目录下
train_recode_path=os.path.join(outputPath, 'train.record')
test_recode_path=os.path.join(outputPath, 'test.record')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
# TO-DO replace this with label map
def class_text_to_int(row_label):if row_label == 'barcode':return 1else:None
序号按照之前标签规定的来写
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

配置

faster_rcnn_inception_v2_coco.config中,需要更改的地方主要有:

num_classes: 2
batch_size: 16
num_steps: 50000
fine_tune_checkpoint: "models/model.ckpt"
input_path: "data/train.record"
label_map_path: "data/mscoco_label_map.pbtxt"
下面这个是在验证集的配置中
input_path: "data/test.record"
label_map_path: "data/mscoco_label_map.pbtxt"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

训练

在train.py中进行训练,详见

'''
modify these configs to run the train.py
python train.py --logtostderr
'''
FLAGS.pipeline_config_path='faster_rcnn_inception_v2_coco.config'
FLAGS.train_dir='models/train'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

导出模型

使用export_inference_graph.py导出模型,需要配置的地方如下:

'''
trange the config for your project and run the script
python export_inference_graph.py --input_type image_tensor
'''
FLAGS = flags.FLAGS
FLAGS.pipeline_config_path='./faster_rcnn_inception_v2_coco.config'
FLAGS.trained_checkpoint_prefix='./models/train/model.ckpt-30000'
FLAGS.output_directory='./fine_tuned_model' 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

模型测试

运行testModel.py,需要配置的属性:

PATH_TO_CKPT = './fine_tuned_model/frozen_inference_graph.pb'
PATH_TO_LABELS='data/mscoco_label_map.pbtxt'
PATH_TO_TEST_IMAGES_DIR = 'test'
PATH_TO_SAVE_IMAGES_DIR = 'result'
NUM_CLASSES = 2
  • 1
  • 2
  • 3
  • 4
  • 5

测试结果

tensorlow object detection 目标检测系列一些资料
使用TensorFlow Object Detection API进行物体检测
使用tensorflow object detection api训练自己的数据
tensorflow训练模型库
国外论坛教你一步一步训练自己的模型
利用TF_Object_detection_API 训练自己的模型
目标检测笔记二:Object Detection API 小白实践指南
深度学习入门篇–手把手教你用 TensorFlow 训练模型
Tensorflow训练自己的Object Detection模型并进行目标检测
TensorFlow使用object detection训练并识别自己的模型
如何在Windows下使用Tensorflow Object Detection API
老外的教程

重量级推荐

目标检测系列大杂烩!

使用tensorflow object_detection API完成目标检测(object_detection API使用)相关推荐

  1. TensorFlow的Object Detection目标检测报错 google.protobuf.text_format.ParseError:

    文章目录 前言 一.报错内容 总结 前言 一.报错内容 最近单位需要进行目标检测相关项目,使用了TensorFlow的Object Detection相关模块,在网络训练完毕后,需要将模型导出pb模型 ...

  2. opencv打开pb_【OpenCV】OpenCV4调用tensorflow pb模型进行目标检测

    先在visual studio 2015新建一个工程并配置好环境. OpenCV调用tensorflow的pb模型,不仅需要一个.pb文件,还需要一个.pbtxt文件. 一些预训练好的pb模型的下载地 ...

  3. Tensorflow+SSD+Yolo(目标检测)文章14:爬虫

    14.爬虫 (写在每篇深度学习文章系列的前面,该系列的文章是我2019年做毕设时的步骤总结,是能实现的,不和其他很多博客一样瞎糊弄人浪费时间.写下这些文章一方面为了方便后来者,一方面也为了自己以后的步 ...

  4. TF2目标检测API

    作者|Ivan Ralašić 编译|VK 来源|Analytics Vidhya Tensorflow目标检测API(TF OD API)刚刚变得更好.最近,Google发布了tf od api的新 ...

  5. TF2的目标检测API

    Google发布了tf od api的新版本,它现在支持Tensorflow 2.x,这是一个我们一直在等待的巨大改进! 简介 目标检测(OD)改进是由工业界广泛采用该技术所推动的.汽车制造商使用目标 ...

  6. Win10下用TensorFlow训练自己的数据集来做目标检测

    本文主要来源于YouTube博主 EdjeElectronics的视频https://www.youtube.com/watch?v=Rgpfk6eYxJA (对于视频看不了的朋友,我把视频录制下来放 ...

  7. OpenCvSharp (C# OpenCV) DNN模块加载自己训练的TensorFlow模型做目标检测(含手势识别、骰子识别、菜品识别)(附源码)

    本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍OpenCVSharp DNN模块加载自己训练的TensorFlow模型做目标检测(含手势识别.骰子识别.菜品识别)! 前言: 下 ...

  8. X射线图像中的目标检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 1 动机和背景 每天有数百万人乘坐地铁.民航飞机等公共交通工具,因 ...

  9. 斯坦福:「目标检测」深度学习全面指南

    来源:雷克世界 概要:Faster R-CNN,R-FCN和SSD是目前市面上最好和最广泛使用的三个目标检测模型.而其他受欢迎的模型往往与这三个模型非常相似,所有这些都依赖于深度CNN的知识来完成最初 ...

最新文章

  1. ExtJS 4.x 得到资源树上任意的节点对象
  2. 系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构...
  3. 分布式系统理论基础1: 一致性、2PC和3PC
  4. 基于特征的对抗迁移学习论文_lt;EYD与机器学习gt;迁移学习:PTL选择式对抗网络...
  5. mysql 线程缓存_浅析MySQL内存的使用说明(全局缓存+线程缓存)
  6. 20211126 为什么转动惯量矩阵是正定的?
  7. 静态链表和动态链表 区别
  8. Mysql数据库引擎快速指南
  9. Apache2 httpd.conf 配置详解 (二)
  10. 最小生成树 Kruskal算法 Prim算法
  11. MyBatis第1天
  12. oracle Client 11g静默安装
  13. JavaScript使用技巧(2)
  14. mysql 主主_MySQL双主(主主)架构
  15. gps信号用什么软件测试,gps信号检测软件
  16. 集成电路封测行业科普
  17. Spring Bean生命周期,好像人的一生。。
  18. redis搭建哨兵模式(哨兵模式原理)
  19. 开始写博客~~~~~
  20. Differences between Theorem, Lemma and Corollary, etc.

热门文章

  1. Python 获取父级文件夹的名字
  2. 如何使用Selenium-Grid
  3. Cocos2d-x编程中的runOnUiThread方法和runOnGLThread方法剖析
  4. HDU 4293 Groups (线性dp)
  5. linux socket 模式,pythonsockets:如何在linux中启用混杂模式
  6. DI使用value属性与value标签的区别以及xml预定义实体引用
  7. ACR2010_常规医疗环境下TNF拮抗剂对RA骨侵蚀的修复作用
  8. 摘录一些介绍Linux DKMS的博客文章
  9. GDAL读取jpg文件中GPS坐标信息
  10. unity 3d换装之 SkinMeshRenderer