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

机器学习和自然语言处理

公众号ID:datathinks

0 前言

1 前提条件:需要先安装好tensorflow的gpu版本

2 运行环境:python3.6、Windows10、tensorflow_gpu1.10

本文是写给目标检测入门新手的指导文章,会用示意图将每一步的详细实现过程展示出来。本文在学习《Tensorflow object detection API 搭建属于自己的物体识别模型(1)——环境搭建与测试》的基础上优化并总结。本文作者的专题《目标检测》链接:https://www.jianshu.com/c/fd1d6f784c1f。此专题的宗旨是让基础较为薄弱的新手能够顺利实现目标检测,专题内容偏向于掌握技能,学会工具的使用。本文作者尚未具备清楚讲述目标检测原理的能力,学习原理请自行另找文章。

1 访问tensorflow在github的主页

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

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

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

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

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

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

2 下载代码库

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

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

本文作者将此代码库上传到百度云盘,下载链接: 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放入其中,如下图所示。

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

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

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

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

3.2 使用protoc

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

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

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

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

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

将下面一段代码复制到第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))

上面一段代码的运行结果如下图所示:

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

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文件夹中,如下图所示。

选择解压到ssd_mobilenet_v1_coco_20...,如下图红色箭头标注处所示。

注意,不要选择解压到当前文件夹,否则代码运行时会无法找到模型文件。

4.3 正确解压示意

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

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

5 运行ipynb文件

5.1 打开ipynb文件

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

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

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

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

5.2 修改ipynb文件

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

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

5.3 运行代码

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

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

6 总结

  1. 本篇文章只是目标检测的第1步,本文作者会在后续的文章中介绍如何训练自己的模型
  2. 希望读者阅读此文章,能够顺利完成目标检测的入门。

原文发布于微信公众号 - 机器学习和自然语言处理(datathinks)

原文发表时间:2018-11-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏点滴积累

geotrellis使用(十八)导入多波段Tiff、读取多波段Tile

Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 多波段数...

44250
来自专栏简书专栏

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

在进行本文操作之前,需要先安装好tensorflow的gpu版本。 本文作者的环境:python3.6、Windows10、tensorflow_gpu1.1...

1.2K30
来自专栏TensorFlow从0到N

TensorFlow从0到1 - 1 - Hello, TensorFlow!

在学习任何新的编程语言时,我们都会在第一时间完成Hello World,以宣告自己开发环境的完美搭建。TensorFlow也不例外。TensorFlow充分考...

45030
来自专栏Java技术分享

redis集群原理

 redis是单线程,但是一般的作为缓存使用的话,redis足够了,因为它的读写速度太快了。

41590
来自专栏开源优测

如何参与到开源优测-积微速成计划任务

通过过完第一次任务,你应该掌握: 安装和部署git 学会git基本的命令 学会如何使用github来管理的你的学习任务 初步了解如何利用python编程 本...

31260
来自专栏林德熙的博客

C# 使用转换语义版本号

本文告诉大家如何转换语义版本号,那么什么是语义版本号,语义版本号(semantic version)就是版本号带 alpha 等的版本号

13410
来自专栏北京马哥教育

酷炫:6个有趣的Linux命令

本文给大家介绍几个有趣的Linux命令。 1. pv 命令 有时候我们在电影屏幕上看到一些字幕一个个匀速显示出来,像有人在边敲键盘,边显示一样。Linux上的p...

42450
来自专栏Leetcode名企之路

求求你别问我一致性hash了

首先,只有存储型的组件,我们才会使用一致性hash;计算型的服务增删节点对整个任务一般没影响,所以负载均衡直接用random就可以。那么像redis、memca...

15830
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Cassandra和ElasticSearch设置Titan Graph数据库

Titan是一个高度可扩展的开源图形数据库。图形数据库是一种NoSQL数据库,其中所有数据都存储为节点(nodes)和边(edges)。图形数据库适用于高度连接...

15820
来自专栏企鹅号快讯

Python人工智能之图片识别,Python3一行代码实现图片文字识别

我们以识别诗词为例 下面是我们要识别的图片 ? 先看下效果图 ? 我们运行代码后识别的结果,有几个字没有正确识别,但是大多数字都能识别出来。 一行代码就能识别图...

75560

扫码关注云+社区

领取腾讯云代金券