手把手带你玩转Tensorflow 物体检测 API (1)——运行实例

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

0.前言

在进行本文操作之前,需要先安装好tensorflow的gpu版本
本文作者的环境:python3.6、Windows10、tensorflow_gpu1.10
已经安装好的可以跳过,学习如何安装tensorflow的gpu版本的读者请阅读本文作者的另外一篇文章《深度学习环境搭建-CUDA9.0、cudnn7.3、tensorflow_gpu1.10的安装》,链接:https://www.jianshu.com/p/4ebaa78e0233
本文是写给目标检测入门新手的指导文章,会用示意图将每一步的详细实现过程展示出来。
本文作者接触深度学习2个月后,开始进行目标检测实践。
本文作者的专题《目标检测》,链接:https://www.jianshu.com/c/fd1d6f784c1f
此专题的宗旨是让基础较为薄弱的新手能够顺利实现目标检测,专题内容偏向于掌握技能,学会工具的使用。
本文作者尚未具备清楚讲述目标检测原理的能力,学习原理请自行另找文章。

文章编号文章名链接
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

1.访问tensorflow在github的主页

tensorflow在github的主页链接:https://github.com/tensorflow
主页界面如下图所示。
Repository中文叫做知识库,对于程序员来说即代码库。
tensorflow这个用户中有很多Repository,我们需要的目标检测代码在models这个Repository中。
如下图2个红色箭头标注处所示,都是我们想要找的models这个代码库。
这2个红色箭头标注处,随意选择一个点击,进入下一步。
注意:因为本文写作的时间与读者浏览网址的时间不同,所以本文写作时的界面与读者浏览网址时的界面也可能不同,读者需要在主页中往下翻即可找到models这个代码库。

image.png


models这个代码库也可以使用链接直接访问:https://github.com/tensorflow/models
代码库界面如下图所示。
从下图中上方红色箭头标注处可以看出,这个代码库被44617人点赞,说明代码库的流行程度高,受众程度广。
下图中下方红色箭头标注处的research文件夹,我们需要的目标检测在这个文件夹中。
点击下图中下方红色箭头标注处,进入下一步。

image.png


models这个代码库中的research文件夹也可以使用链接直接访问:https://github.com/tensorflow/models/tree/master/research
models这个代码库中的research文件夹页面如下图所示:

image.png


从上图中可以看出没有object_detection这个文件夹,读者需要在页面中往下翻可以找到。
在页面中往下翻找到object_detection文件夹如下图红色箭头标注处所示。
点击下图中红色箭头标注处,进入下一步。

image.png


models这个代码库中的research/object_detection文件夹页面如下图所示。
也可以使用链接直接访问:https://github.com/tensorflow/models/tree/master/research/object_detection

image.png


在上图页面中往下翻,可以看到research/object_detection文件夹的指导文件README.md,如下图所示。
阅读README.md中的内容,可以获得英文版Tensorflow Object Detection API的使用指导。

image.png

 

2.下载代码库

在models代码库的界面中,有下载整个代码库的按钮,如下图红色箭头标注处所示:

image.png


通过vpn访问github,速度会加快。
从下图中可以看出,本文作者下载此代码库的速度为5.4MB/s

image.png


本文作者将此代码库上传到百度云盘,下载链接: https://pan.baidu.com/s/1TnHvqNLT0JEZlugrdyABhQ 提取码: fnp3
对于本文的读者来说其实只需要代码库models中的research/object_detection文件夹就可以。
代码库models文件大小有439M,但是object_detection文件夹只有17M左右。
压缩文件object_detection.zip的百度云盘下载链接:https://pan.baidu.com/s/1Q9SxtKlOqEty08tpFeUUHA 提取码: p2sm
下载完成后,在桌面新建文件夹目标检测,将压缩文件object_detection.zip放入其中,如下图所示。

image.png


选择解压到object_detection,如下图所示。

image.png


解压完成后,文件夹目标检测中的文件情况如下图所示。

image.png

 

3.proto文件转py文件

3.1 下载和安装protoc

Protobuf(Google Protocol Buffers)是google开发的的一套用于数据存储,网络通信时用于协议编解码的工具库。它和XML和Json数据差不多,把数据已某种形式保存起来。Protobuf相对与XML和Json的不同之处,它是一种二进制的数据格式,具有更高的传输,打包和解包效率。
下载Protobuf网址:https://github.com/google/protobuf/releases
下载Protobuf网址页面如下图所示,下图中红色箭头标注处是Protobuf在操作系统Windows中可以直接运行的protoc程序,下载该压缩文件protoc-3.6.1-win32.zip

image.png


将压缩文件protoc-3.6.1-win32.zip解压后的文件夹bin中的文件protoc.exe复制到路径:C:\Windows
本文作者复制文件后,确认路径C:\Windows有文件protoc.exe,如下图所示。

image.png

 

3.2 使用protoc

在工程object_detection文件夹中,找到文件夹protos,如下图所示:

image.png


进入文件夹protos,从下图中可以看出文件夹中有很多以proto为后缀的文件。
接下来的操作,就是把这些proto文件转换为py文件。

image.png


与工程object_detection文件夹同级目录中,打开cmd。
具体操作示意图如下图所示,在资源管理器的路径中输入cmd,按Enter键进入。

image.png


在cmd中输入并运行命令:jupyter notebook
如下图红色箭头标注处所示:

image.png


在随后弹出的浏览器界面中选择新建一个ipynb文件,即点击选择New->Python3。
具体操作示意图如下图所示。

image.png


将下面一段代码复制到第1个单元格中,并且运行此段代码。
运行此段代码的按钮选择Cell->Run Cells即可。

 

 

import os
file_list = os.listdir('object_detection/protos/')
proto_list = [file for file in file_list if '.proto' in file]
print('object_detection/proto文件夹中共有%d个proto文件' %len(proto_list))
for proto in proto_list:execute_command = 'protoc object_detection/protos/%s --python_out=.' %protoos.popen(execute_command)
file_list = os.listdir('object_detection/protos/')
py_list = [file for file in file_list if '.py' in file]
print('通过protoc命令产生的py文件共有%d个' %(len(py_list) - 1))

上面一段代码的运行结果如下图所示。
如果显示通过protoc命令产生的py文件共有27个,重新运行此段代码即可。

image.png


重新进入文件夹object_detection/protos,文件按照文件名排序。
从下图中可以看出文件夹中每个proto文件后都有一个py文件,即将proto文件转py文件成功

image.png

 

4.下载模型

4.1 下载压缩文件

下载模型指的是下载已经训练好的模型。
在文件object_detection_tutorial.ipynb中有下载模型的代码语句。
代码可以运行,但是无法得到结果,因为代码中的下载链接是国外的网址。
压缩文件ssd_mobilenet_v1_coco_2017_11_17.zip上传到百度网盘,
链接: https://pan.baidu.com/s/1ywlp46lK-WYZ_11sUXqftw 提取码: yv5i

4.2 解压压缩文件

将下载好的压缩文件放到工程object_detection文件夹中,如下图所示。

image.png


选择解压到ssd_mobilenet_v1_coco_20...,如下图红色箭头标注处所示。
注意,不要选择解压到当前文件夹,否则代码运行时会无法找到模型文件。

image.png

 

4.3 正确解压示意

如下图红色箭头标注处所示,在压缩文件解压后,工程object_detection文件夹中有文件夹ssd_mobilenet_v1_coco_2017_11_17

image.png


文件夹ssd_mobilenet_v1_coco_2017_11_17中有文件夹saved_model和6个文件。

image.png

 

5.运行ipynb文件

5.1 打开ipynb文件

在工程object_detection文件夹中运行cmd。
即在资源管理器的路径中输入cmd,按Enter键进入。
具体操作示意图如下图所示。

image.png


在cmd中输入并运行命令:jupyter notebook
如下图红色箭头标注处所示:

image.png


在新打开的浏览器界面中打开代码文件object_detection_tutorial.ipynb
点击下图红色箭头标注处即可打开代码文件

image.png


代码文件的页面如下图所示。

image.png

 

5.2 删除代码块

将代码文件的界面下拉到出现Download Model代码块。
删除下图中下方红色箭头标注处的代码块。
操作方法是在选中此代码块的情况下,点击下图中上方红色箭头标注处的剪切按钮。
此代码块的作用是从网络中下载模型,这一步我们已经在本文第4章中实现。

image.png


删除代码块成功后,代码文件的界面如下图所示。

image.png

 

5.3 运行代码

在代码文件的界面中选择运行所有代码块。
具体操作示意图如下图所示,点击下图中红色箭头标注处即可。

 

image.png

 

如果代码成功运行的话,运行结果如下图所示。

 

image.png

6.总结

  1. 本篇文章只是tensorflow版SSD的第1步。
  2. 希望读者阅读此文章,能够顺利完成目标检测的入门。



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

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

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

相关文章

netframework 4.0内置处理JSON对象

前言 必须的是 .netframewoke 4.0的项目才能使用。 内容 1.项目添加System.Runtime.Serialization引用。 2.JsonHelper通用类的代码如下: using System;using System.Text;//--------------------------usingusing System.Runtime.Serialization.Json; // 添加引…

html5 java 图片上传_java实现图片上传至服务器并显示,如何做?希望要具体的代码实现...

展开全部有两种方法一是用上传的组建jspSmartUpload的Request,还有一种不用组建,但在e69da5e6ba9062616964757a686964616f31333238653233form表单中不能加入ENCTYPE "multipart/form-data "我给你的案例吧建立后台数据库if exists (select * f…

CISCO的GLBP(网关负载均衡协议)

名词定义:活动虚拟网关AVG: 它的优先级最高,应答所有ARP请求,反回哪个MAC地址,取决于采用的负载均衡方式AVG还给GLBP组中的每台路由器分配虚拟MAC地址,最多每个组可以分到4个,组里的每台路由器都被称为活动…

net发布的dll方法和类显示注释信息(字段说明信息)[图解]

自己发布的dll添加的另一个项目中突然没有字段说明信息了,给使用带来了很多的不便,原因是为了跨项目引用,所以导致不显示注释信息的,一下是解决这个问题的方法。 在要发布(被引用)的项目上右键 > 属性 &…

手把手带你玩转Tensorflow 物体检测 API (2)——数据准备

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

windows phone 学习(4)

1.Windows Phone8比Windows Phone7多了哪些:支持C(组件级的补充,主体还是C#);采用Windows 8 SDK;更多API;2.普通的手机只能通过MarketPlace这个唯一的渠道下载安装软件,开发者帐户机制&#xff…

判断dll是版本(Debug Or Release)[测试通过]

简单的代码,google搜索提炼和分析,主要是利用反射技术,测试通过,抛砖引玉,自娱自乐,多多指教。 publicpartialclass_Default : System.Web.UI.Page{ protectedvoidPage_Load(objectsender, EventArgs e)…

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

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

动态类型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不仅可以维护好数据库内记录的完整…