近期学习《21个项目玩转深度学习:基于TensorFlow的实践详解》时遇到Google Tensorflow Object Detection API 安装的问题,特意来填坑,对于Windows系统的安装说一下个人遇到的问题以及解决办法。
Tensorflow Object Detection API 是谷歌开放的一个内部使用的物体识别系统。2016年 10月,该系统在COCO识别挑战中名列第一。它支持当前最佳的实物检测模型,能够在单个图像中定位和识别多个对象。该系统不仅用于谷歌于自身的产品和服务,还被推广至整个研究社区。
创造一些精确的机器学习模型用于定位和识别一幅图像里的多元目标仍然是一个计算机视觉领域的核心挑战。Tensorflow Object Detection API 作为一个开源的基于TensorFlow的框架,使得创建、训练以及应用目标检测模型变得简单。在谷歌我们已经确定发现这个代码对我们的计算机视觉研究需要很有用,我们希望这个对你也会很有用。
一、代码位置与内置的模型
1、Object Detection
Object Detection 模块的位置与slim的位置相近,同在 https://github.com/tensorflow/models 中research目录下。类似slim, Object Detection也囊括了各种关于物体检测的各种先进模型:
带有MobileNets的SSD (Single Shot Multibox Detector)。
带有Iception V2的SSD.
带有Resnet 101的R-FCN (Region-Based Fully Convolutional Networks)。
带有Resnet 101的Faster RCNN。
带有Inception-Resenet v2的Faster RCNN。
上述每一个模型的冻结权重 (在COCO数据集上训练)可被直接加载使用。
SSD模型使用了轻量化的MobileNet,这意味着它们可以轻而易举地在移动设备中实时使用。谷歌使用了Faster R-CNN模型需要更多计算资源,但结果更为准确。
2、COCO数据集
在实物检测领域,训练模型的最权威数据集就是COCO数据集。
COCO数据集是微软发布的一个可以用来进行图像识别训练的数据集,其图像主要从复杂的日常场景中截取,图像中的目标通过精确的segmentation进行位置的标定。
各个链接的意思看链接里面的描述基本上就够了。不过还在罗嗦一句,第一组是train数据,第二组是val验证数据集,第三组是test验证数据集。数据包括了物体检测和keypoints身体关键点的检测。
http://images.cocodataset.org/zips/train2017.zip
http://images.cocodataset.org/annotations/annotations_trainval2017.zip
http://images.cocodataset.org/zips/val2017.zip
http://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip
http://images.cocodataset.org/zips/test2017.zip
http://images.cocodataset.org/annotations/image_info_test2017.zip
这就是全部的Microsoft coco数据集2017的链接了。
二 、准备工作
1.获取protobuf
Objet Detection API使用protobufs来配置模型和训练参数,这些文件以".proto"的扩展名放models\research\object_detection\protos下。在使用框架之前,必须使用protobuf库将其编译成py文件才可以正常运行。protoc的下载地址为 https://github.com/google/protobuf/releases 下载对应的protoc,我这里下的是protoc-3.6.0-win32.zip和protobuf-python-3.6.0.zip。
解压后将protoc-3.6.0-win32.zip中的bin文件夹下的protoc.exe路径添加到电脑的环境变量中的path中,进入models\research\object_detection\protos路径,使用shift+右键的 powershell 命令并运行以下语句使.proto文件全部编译
Get-ChildItem object_detection/protos/*.proto |Resolve-Path -Relative | %{protoc $_ --python_out=.}
接着 win+R 打开cmd命令窗口。
英文字符小写加英文字符冒号跳到指定的电脑盘,cd空格+路径跳到
\models\research\object_detection下
输出jupyter notebook,运行object_detection_tutorial.ipynb示例文件。
该代码使用Object Detection API基于COCO上训练的ssd_mobilenet_v1模型,对任意图片进行分类识别。
运行cell下的run all。
实现目标检测的结果实例图如下。