TensorFlow Object Detection API系列教程一:Hello World!

简单介绍

第一个目标检测例子

  • 实验环境
  • 代码下载
  • 安装相关依赖
  • 编译Protobuf
  • Run起来
  • 简单分析
  • 参考

简单介绍

TensorFlow Object Detection API是一个基于Tensorflow之上的开源框架,它使得构建、训练和部署目标检测模型变得更加容易。这是一个google的项目,对于计算机视觉研究有很大的帮助。

项目的github地址是:

https://github.com/tensorflow/models/tree/master/research/object_detection 下图是github主页上的一个效果图:

tensorflow实现检测 tensorflow detection_目标检测

第一个目标检测例子

实验环境

  • Win 10 64位
  • TensorFlow 1.12.0

代码下载

整个代码的工程地址是:https://github.com/tensorflow/models/ 整个工程还包括很多其他的模块,不光有目标检测。 两种方式下载:

  • 使用Github客户端用命令行方式下载,如下图:
  • 直接在代码仓库页面下面压缩包,如下图:

安装相关依赖

  • protobuf (具体干什么的自己去百度吧 ? ) 这里使用3.4.0版本,下载地址为:https://github.com/protocolbuffers/protobuf/releases/tag/v3.4.0 由于笔者的实验环境是win10,因此下载了windows版本
  • tensorflow实现检测 tensorflow detection_目标检测_02

  • 这里笔者是使用直接下载安装包再解压到固定目录的方式(git clone实在太慢 ? ),笔者目录结构如下:
  • tensorflow实现检测 tensorflow detection_tensorflow_03

  • 另外还需要安装一些python包的库,包括下面这些:

pip install cython contextlib2 pillow lxml jupyter matplotlib

编译Protobuf

由于TensorFlow Object Detection API使用Protobufs来配置模型和训练参数(和caffe一样?),因此需要先编译一下,最简单的方式是把protoc-3.4.0-win32\bin\protoc.exe拷贝到models-master\research\目录下面(也就是让protoc.exe和object_detection同级),然后打开cmd命令行,切换models-master\research\目录,执行下面命令:

protoc.exe object_detection/protos/*.proto --python_out=.

如果有错误就是路径没设置正确!(此外,尽量使用v3.4版本,其他版本可能出错 ? )

Run起来

cmd切换object_detection目录,然后执行:

jupyter notebook

默认浏览器会打开jupyter notebook目录,如下图:

tensorflow实现检测 tensorflow detection_tensorflow_04

打开object_detection_tutorial.ipynb文件:

tensorflow实现检测 tensorflow detection_github_05

打开以后直接Cell→Run All看效果吧:

tensorflow实现检测 tensorflow detection_tensorflow_06

最后会得到下面两个目标检测的结果:

tensorflow实现检测 tensorflow detection_tensorflow_07

简单分析

  • 上面的代码下载使用了pre-trained模型:
MODEL_NAME = ‘ssd_mobilenet_v1_coco_2017_11_17’ MODEL_FILE = MODEL_NAME + ‘.tar.gz’ DOWNLOAD_BASE = ‘http://download.tensorflow.org/models/object_detection/’

完整的模型路径是:http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_coco_2017_11_17.tar.gz

  • 测试图片在目录test_images下,有两张,分别叫image1.jpg和image2.jpg。

参考

  • https://github.com/tensorflow/models/tree/master/research/object_detection
  • https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/installation.md