TensorFlow Object Detection API 介绍

熟悉TensorFlow的人都知道,tf在Github上的主页是:tensorflow,然后这个主页下又有两个比较重要的repo(看star数就知道了),分别是TensorFlow的源代码repo:tensorflow/tensorflow,还有一个tensorflow/models。后者tensorflow/models是Google官方用TensorFlow做的各种各样的模型,相当于示例代码,比如用于图像分类的Slim,深度文字OCR,以及用于NLP任务的句法分析模型syntaxnet,Seq2Seq with Attention等等等等。这次公布的Object Detection API同样是放在了tensorflow/models里。
再来说下这次公布的代码的实现方式。首先,对于目标检测这个任务来说,前面必须有一个像样的ImageNet图像分类模型来充当所谓的特征提取(Feature Extraction)层,比如VGG16、ResNet等网络结构。TensorFlow官方实现这些网络结构的项目是TensorFlow Slim,而这次公布的Object Detection API正是基于Slim的。Slim这个库公布的时间较早,不仅收录了AlexNet、VGG16、VGG19、Inception、ResNet这些比较经典的耳熟能详的卷积网络模型,还有Google自己搞的Inception-Resnet,MobileNet等。
我们在TensorFlow Object Detection API的官方安装指南(地址:tensorflow/models)中,可以看到这样一句代码:

From tensorflow/models/

export PYTHONPATH=$PYTHONPATH:pwd:pwd/slim

很显然,这就是钦点用Slim作特征抽取了。
另外,以Faster RCNN为例,之前在github上,可以找到各种各样非官方的TensorFlow实现,但是这些实现使用的特征抽取层都不是Slim,而是五花八门的什么都有,另外一方面实现代码大量copy自原始的caffe的实现:rbgirshick/py-faster-rcnn,这次公布的代码里已经一点也找不到原始caffe实现的痕迹了。最后,原来非官方的Object Detection实现的质量参差不齐,去年我调过一个Faster RCNN,过程比较痛苦,在运行之前疯狂debug了三天才勉强跑了起来。这次Google官方公布的Object Detection API别的不说,代码质量肯定是过的去的,因此以后应该不会有人再造TensorFlow下Faster RCNN、R-FCN、SSD的轮子了。
说完了代码,再简单来说下公布的模型。主要公布了5个在COCO上训练的网络。网络结构分别是SSD+MobileNet、SSD+Inception、R-FCN+ResNet101、Faster RCNN+ResNet101、Faster RCNN+Inception_ResNet。后期应该还会有更多的模型加入进来。

这里写图片描述
————————————–分割线———————————-
最后,给新手朋友提供一个可以跑出官方Demo效果的小教程,非常简单,用5分钟的时间就可以跑一遍感受一下,只要安装了TensorFlow就可以,有没有GPU都无所谓。
1. 安装或升级protoc
首先需要安装或升级protoc,不然在后面会无法编译。
安装/升级的方法是去protobuf的Release界面:google/protobuf,下载对应的已经编译好的protoc。
这里写图片描述
比如我是64位的ubuntu,那么就下载protoc-3.3.0-linux-x86_64.zip。下载解压后会有一个protoc二进制文件,覆盖到对应目录即可(如果不放心的可以用cp /usr/bin/protoc ~/protoc_bak先备份一下):
sudo cp bin/protoc /usr/bin/protoc

  1. 下载代码并编译
    下载tensorflow/models的代码:
    git clone https://github.com/tensorflow/models.git

进入到models文件夹,编译Object Detection API的代码:

From tensorflow/models/

protoc object_detection/protos/*.proto –python_out=.

  1. 运行notebook demo
    在models文件夹下运行:
    jupyter-notebook

访问文件夹object_detection,运行object_detection_tutorial.ipynb:
这里写图片描述

依次shift+enter运行到底就行了。这个Demo会自动下载并执行最小最快的模型ssd+mobilenet。
最后的检测效果,一张是汪星人图片:
这里写图片描述

  1. 使用自己的图片做检测
    如果要检测自己的图片,那么更改TEST_IMAGE_PATHS为自己的图片路径就可以了。这里我随便选了一张COCO数据集中的图片:
    TEST_IMAGE_PATHS=[‘/home/dl/COCO_train2014_000000000009.jpg’]
    这里写图片描述
    检测结果:

  2. 使用其他模型做检测
    一共公布了5个模型,上面我们只是用最简单的ssd + mobilenet (ssd_mobilenet_v1_coco_11_06_2017)模型做了检测,如何使用其他模型呢?找到Tensorflow detection model zoo(地址:tensorflow/models),根据里面模型的下载地址,我们只要分别把MODEL_NAME修改为以下的值,就可以下载并执行对应的模型了:
    MODEL_NAME = ‘ssd_inception_v2_coco_11_06_2017’

MODEL_NAME = ‘rfcn_resnet101_coco_11_06_2017’

MODEL_NAME = ‘faster_rcnn_resnet101_coco_11_06_2017’

MODEL_NAME = ‘faster_rcnn_inception_resnet_v2_atrous_coco_11_06_2017’

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值