目标检测实践_tensorflow版SSD训练自己的数据

致谢声明

本文在学习《Tensorflow object detection API 搭建属于自己的物体识别模型(2)——训练并使用自己的模型》的基础上优化并总结,此博客链接:https://blog.csdn.net/dy_guox/article/details/79111949感谢此博客作者。

0.前言

本文作者的环境:python3.6、Windows10、tensorflow_gpu1.10

文章编号 文章名 链接
1 目标检测实践_tensorflow版SSD运行示例 https://www.jianshu.com/p/c1d8f1c76de7
2 目标检测实践_tensorflow版SSD数据准备 https://www.jianshu.com/p/3d9436b4cb66
3 目标检测实践_tensorflow版SSD训练自己的数据 https://www.jianshu.com/p/0e5f9df4686a
4 目标检测实践_tensorflow版SSD模型测试 https://www.jianshu.com/p/7464c5e00716

现在桌面的目标检测文件夹中需要有object_detection工程文件夹和training数据文件夹,如下图所示:

image.png

如果没有的话,也没有关系。本文作者提供下载链接:
文件training.zip链接: https://pan.baidu.com/s/1Kgp9geSkTFVa_4tfc7ZPew 提取码: 9sy3
文件object_detection.zip的链接:https://pan.baidu.com/s/1Q9SxtKlOqEty08tpFeUUHA 提取码: p2sm

1.解决第1个报错

在桌面的目标检测文件夹中打开cmd,即在路径中输入cmd后按Enter键运行。
打开cmd的方式如下图所示:

image.png

在cmd中运行命令:python object_detection/model_main.py --pipeline_config_path=training/ssdlite_mobilenet_v2_coco.config --model_dir=training --alsologtostderr,运行结果如下图所示:
image.png

1.1 第1种解决方式

第1种解决方式是通过Windows界面点击操作。
如下图所示,按Windows+Q键可呼唤出搜索界面,在其中搜索环境变量
点击下图中上方红色箭头标记处,进入编辑账户的环境变量

image.png

新建一个系统变量,点击下图红色箭头标记处。
image.png

变量名为:PYTHONPATH
变量值如下图所示,读者填入1号方框中的路径与2号方框中的路径一致即可。
image.png

两项设置好后,点击下图红色箭头标记处所示的确定按钮
image.png

点击下图红色箭头标记处所示的确定按钮,使设置生效。
image.png

1.2 第2种解决方式

使用cmd添加永久环境变量,适用于熟悉cmd命令的读者。
cmd中运行命令:setx -m PYTHONPATH "C:\Users\Administrator\Desktop\目标检测"
命令成功运行后,如下图所示:

image.png

2.解决第2个报错

在进行完第1章,成功添加环境变量后,需要在桌面的目标检测文件夹中重新打开cmd。
在cmd中运行命令:python object_detection/model_main.py --pipeline_config_path=training/ssdlite_mobilenet_v2_coco.config --model_dir=training --alsologtostderr,运行结果如下图所示:

image.png

从上图可以看出,缺少pycocotools库,在linux系统中安装pycocotools库只需要运行命令:pip install pycocotools
但是在Windows上安装则复杂得多。

2.1 下载并安装Microsoft C++ build 14.0

本文作者花了2个小时研究有没有其他方法解决此报错,最终发现只有先安装C++的编译工具,才能在Windows系统上安装pycocotools库。
首先下载Microsoft C++ build 14.0,链接:https://go.microsoft.com/fwlink/?LinkId=691126
文件只有3M左右大小,下载完成如下图所示。

image.png

打开安装文件visualcppbuildtools.exe,初始化安装程序,如下图所示:
image.png

安装类型选择自定义,然后点击下一步,如下图红色箭头标记处所示。
image.png

选择功能只勾选Windows 10 SDK 10.0.10240,然后点击下一步,如下图所示:
image.png

点击下图红色箭头标记处所示的安装按钮,则开始安装。
image.png

安装过程中截图,如下图所示:
image.png

完成安装后,点击关闭即可。

2.2 下载并安装pycocotools

打开git页面,链接:https://github.com/philferriere/cocoapi
下载按钮的位置如下图所示,点击Download ZIP即可开始下载。

image.png

文件大小只有1.53M,下载完成如下图所示。
image.png

对压缩文件cocoapi-master.zip选择解压到当前文件夹
进入文件夹cocoapi-master中的文件夹PythonAPI,在此文件夹下打开cmd,如下图所示。
image.png

在cmd中运行命令:python setup.py build_ext install,如下图所示:
image.png

如果安装成功,则如下图所示:
image.png

3.解决第3个报错

进行完第2章后,需要在桌面的目标检测文件夹中重新打开cmd。
在cmd中运行命令:python object_detection/model_main.py --pipeline_config_path=training/ssdlite_mobilenet_v2_coco.config --model_dir=training --alsologtostderr,运行结果如下图所示:

image.png

解决此报错,需要阅读本文作者的文章《目标检测第1步-运行tensorflow官方示例》中的第3章《proto文件转py文件》,文章链接:https://www.jianshu.com/p/c1d8f1c76de7

4.解决第4个报错

进行完第3章后,使用第3章中的cmd即可。
在cmd中运行命令:python object_detection/model_main.py --pipeline_config_path=training/ssdlite_mobilenet_v2_coco.config --model_dir=training --alsologtostderr,运行结果如下图所示:

image.png

压缩文件models-master.zip下载链接: https://pan.baidu.com/s/1TnHvqNLT0JEZlugrdyABhQ 提取码: fnp3
将models-master/research/slim文件夹中的nets文件夹移动到
桌面的目标检测文件夹中,即文件夹object_detection同级目录。
因为models-master.zip大小为439M,但我们其实只要nets文件夹。
本文作者提供nets文件夹压缩后的压缩文件nets.zip。
下载链接: https://pan.baidu.com/s/1zRkn_TNRlPGAuwQHoO66EQ 提取码: 99s4
下载完成后,将nets文件夹解压到与object_detection相同目录,如下图所示:
image.png

5.解决第5个报错

进行完第4章后,使用第4章中的cmd即可。
在cmd中运行命令:python object_detection/model_main.py --pipeline_config_path=training/ssdlite_mobilenet_v2_coco.config --model_dir=training --alsologtostderr,运行结果如下图所示:

image.png

从上图中可以看出,本文作者使用的显卡是RTX 2070,显卡的显存为8G。
本文作者推荐如果要进行目标检测, 最少也需要配备版本为GTX 1060_显存6G的显卡,否则会出现显存不足。
从上图中可以看出,模型成功调用显卡,开始训练了。
但是训练经过一段时间后会报错,如下图所示:
image.png

解决方法:修改工程文件夹object_detection中的代码文件model_lib.py
如下图所示,找到第418行,将category_index.values()修改为list(category_index.values())
image.png

修改代码文件model_lib.py完成后,则可以在cmd中重新输入命令开启模型训练。
模型训练稳定地进行一段时间后,会做一次模型评估,如下图所示。
所以如果读者看到下图中的情况,则说明模型训练很顺利
image.png

6.查看模型训练状况

模型训练稳定地进行后,在桌面的目标检测文件夹中重新打开cmd。
在cmd中运行命令:tensorboard --logdir=training,如下图所示:

image.png

复制上图中红色箭头标记处的链接,粘贴到浏览器中即可访问。
注意:每台电脑的链接都不同,读者复制自己电脑cmd中显示的链接即可。
如果使用360浏览器,必须使用极速模式不能使用兼容模式。
在浏览器中的界面如下图所示。
在SCALARS标签界面中可以查看准确率Precison、召回率Recall、损失值Loss等模型评估指标。
在IMAGES标签界面中可以查看实时的测试集效果。
在GRAPHS标签界面中可以查看模型的整体架构。
image.png

7.总结

1.本文详细介绍了在Windows操作系统的环境中如何训练自己的目标检测模型。
2.在本文作者的实践中,发现在Linux操作系统中训练速度会快很多。不明白为什么相同的代码,2种操作系统会导致运行效率的差异。如果读者有Linux的主机,本文作者建议为了工作效率,应该使用Linux主机做模型训练。
在Ubuntu16.04系统的训练速度如下图所示:

image.png

3.在测试集的图片中,有的图片目标检测效果较优,下面给出了2张演示图。


预测结果1

预测结果2
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,464评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,691评论 2 59
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,440评论 6 428
  • 致谢声明 本文在学习《Tensorflow object detection API 搭建属于自己的物体识别模型(...
    潇洒坤阅读 10,860评论 11 16
  • 我看见清晨的月亮 看见深夜沉默的拾荒者 看见阳光下葱郁的树叶 看见白昼下的一切 你是否相信着所看到的 在路边熟睡的...
    爱酱lll阅读 355评论 20 25