目标检测

目标检测第1步-运行tensorflow官方示例

2018-11-21  本文已影响335人  潇洒坤

致谢声明

本文在学习《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在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=.' %proto
    os.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. 本篇文章只是目标检测的第1步,本文作者会在后续的文章中介绍如何训练自己的模型
  2. 希望读者阅读此文章,能够顺利完成目标检测的入门。
上一篇 下一篇

猜你喜欢

热点阅读