手把手带你玩转Tensorflow 物体检测 API (3)——训练模型

致谢声明

本文在学习《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



作者:潇洒坤
链接:https://www.jianshu.com/p/0e5f9df4686a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/547802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态类型var和dynamic和传统确定类型区别和效率

伴随着vs2010的出现,c#4.0的诞生,与之而来的动态类型dynamic更是给net程序员们锦上添花,为自己的程序书写上带来了给大的便利。可到底怎么用,好不好用,效率这么样,也许是大家最迫切关注的,msdn虽…

epel yum源

如果既想获得 RHEL 的高质量、高性能、高可靠性,又需要方便易用(关键是免费)的软件包更新功能,那么 Fedora Project 推出的 EPEL(Extra Packages for Enterprise Linux)正好适合你。EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造&…

Windows 7 设置devenv.exe启动版本

我机子上装了有vs 05、vs 08、vs 10如果按上顺序安装的话,在 运行 > devenv 就可以打开最新的vs10 工具,如果顺序是乱的话,就没那么幸运了,也就是说你最后安装的版本将会被你的 devenv 命令打开,原因是最后一次安装…

手把手带你玩转Tensorflow 物体检测 API (4)—— 模型验证

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

java 获得文件的行数据_Java 读取文件指定行数据

public class ReadFileDemo1 {/*** 获取错误文件中的记录号* param sourceFile* return*/public static int[] readBadFile(String sourceFile){FileReader in null;LineNumberReader reader null;int[] array new int[0];try {//获取文件总行数long totalLine Files.lines…

几款浏览器JavaScript调试工具

WEB开发工具的使用已经非常普及,如果想要更方便于开发的话,不妨看看本文介绍的15款基于浏览器扩展的WEB开发工具。 1.Firebug Firebug是一款基于Firefox的浏览器扩展组件,它集成了网页CSS ,文档对象模型( DOM )和JavaScript调试技…

mysql tomcat列表增删改查_Tomcat-Database

Tomcat-Database介绍根据Tomcat9源码二次开发,增加数据库功能,可一行代码实现CURD安装教程需要先配置Ant,然后在根目录下执行ant命令,即可编译,编译后的目录在Tomcat-Database/output/build下,其中在bin下可…

fatal error C1010: unexpected end of file while looking for precompiled head

致命错误C1010:在寻找预编译指示头文件时,文件未预期结束。 就是没有找到预编译指示信息的头文件。 问题一般发生在:通过添加文件的方式,添加了一些cpp文件到一个MFC的程序,但该cpp文件并不是MFC,而是标准…

Kafka集群部署CentOS 7

一、前言 1、Kafka简介 Kafka是一个开源的分布式消息引擎/消息中间件,同时Kafka也是一个流处理平台。Kakfa支持以发布/订阅的方式在应用间传递消息,同时并基于消息功能添加了Kafka Connect、Kafka Streams以支持连接其他系统的数据(Elasticsearch、Had…

Asp.net中Js、Css文件压缩辅助类

类名&#xff1a;WebCompressUtility.cs 代码如下&#xff1a; /// <summary>/// Js、Css文件压缩辅助类/// Stone_W/// 2011.6.21/// </summary>public class WebCompressUtility{public WebCompressUtility() { }#region 判断浏览器是否支持指定压缩/// <sum…

mysql+e+文件+xls_TP5+PHPexcel导入xls,xlsx文件读取数据

首先:在extend里面引入PHPexcel文件,直接根目录导入进去html创建上传按钮上传excel上传文件立即提交重置layui.use([form,upload],function(){var formlayui.form;var uploadlayui.upload;upload.render({ //允许上传的文件后缀elem: #myfile,url: "{:url(sale/do_uploa…

SQL Server 2008 FILESTREAM特性管理文件

在SQL Server 2008中&#xff0c;新的FILESTREAM&#xff08;文件流&#xff09;特性和varbinary列配合&#xff0c;你可以在服务器的文件系统上存储真实的数据&#xff0c;但可以在数据库上下文内管理和访问&#xff0c;这个特性让SQL Server不仅可以维护好数据库内记录的完整…

IP地址、手机归属和身份证查询接口

1. 查询手机&#xff1a;http://www.yodao.com/smartresult-xml/search.s?typemobile&q手机号码 2. 查询IP&#xff1a;http://www.yodao.com/smartresult-xml/search.s?typeip&qIP地址 3. 查询身份证&#xff1a;http://www.yodao.com/smartresult-xml/search.s?…

mysql5.6.24安装perl_mysql5.6源码安装

背景&#xff1a;现有mysql版本为5.5.40&#xff0c;考虑到以后需做主从&#xff0c;而5.6在主从方面、mysql读写方面都有很大提升。所以&#xff0c;准备升级。官网&#xff1a;http://www.mysql.com/环境&#xff1a;centos6.5 X86_64安装目录&#xff1a;/database/mysql解压…

把字符串转化为类型

问题&#xff1a;可以得到类型的String格式的名称&#xff0c;想要转化为相应的类型&#xff1f; ps&#xff1a;今天定义了好多个枚举类型&#xff0c;把枚举名称存放在一个ComboBox类名&#xff0c;控件值改变的时候要查询出这个枚举的所有属性集合&#xff0c;刚开始想到反…

System.Drawing.Color转System.Windows.Media.Color

2019独角兽企业重金招聘Python工程师标准>>> //这是两个不同的类 System.Windows.Media.Color color (System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString(transItemList[i].color.Name); 转载于:https://my.oschina.net/SearchVe…

Prometheus 监控Mysql服务器及Grafana可视化

Prometheus 监控Mysql服务器及Grafana可视化 mysql_exporter&#xff1a;用于收集MySQL性能信息。 使用版本mysqld_exporter 0.11.0官方地址使用文档&#xff1a;https://github.com/prometheus/mysqld_exporter图标模板&#xff1a;https://grafana.com/dashboards/7362下载…

visual studio 2010 如何修改assemblyInfo.cs默认值

这个应该是安装系统时的单位名称。修改HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization的值即可。另外&#xff0c;可以修改项目模板里面的内容C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\W…

mysql重要的监控参数_zabbix3.0.2使用percona mysql插件来监控mysql5.7   以及必须监控的性能参数...

http://tongcheng.blog.51cto.com/6214144/1620158http://www.cnblogs.com/caoxiaojian/p/5706992.htmlhttp://blog.csdn.net/mchdba/article/details/51447750对比zabbix全方位监控mysql&#xff0c;尤其注意以下监控项MySQL InnoDB Buffer Poolpool sizedatabase pages In…

Microsoft SQL Server 2005 提供了一些工具来监控数据库

--WL 09-07-03/*Microsoft SQL Server 2005 提供了一些工具来监控数据库。方法之一是动态管理视图。动态管理视图 (DMV) 和动态管理函数 (DMF) 返回的服务器状态信息可用于监控服务器实例的运行状况、诊断问题和优化性能。常规服务器动态管理对象包括&#xff1a;dm_db_*&#…