? 谷歌开放了一个 Object Detection API: Supercharge your C

写个简单的科普帖吧。

熟悉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。后期应该还会有更多的模型加入进来。

<img src="https://pic1.zhimg.com/50/v2-03c7cfac6d70b2dd476c8e4868179de4_hd.jpg" data-rawwidth="654" data-rawheight="255" class="origin_image zh-lightbox-thumb" width="654" data-original="https://pic1.zhimg.com/v2-03c7cfac6d70b2dd476c8e4868179de4_r.jpg">

--------------------------------------分割线----------------------------------

最后,给新手朋友提供一个可以跑出官方Demo效果的小教程,非常简单,用5分钟的时间就可以跑一遍感受一下,只要安装了TensorFlow就可以,有没有GPU都无所谓。

1. 安装或升级protoc

首先需要安装或升级protoc,不然在后面会无法编译。

安装/升级的方法是去protobuf的Release界面:google/protobuf,下载对应的已经编译好的protoc。

<img src="https://pic4.zhimg.com/50/v2-11cc4533c8cdb6981e11d1f36c2980af_hd.jpg" data-rawwidth="783" data-rawheight="308" class="origin_image zh-lightbox-thumb" width="783" data-original="https://pic4.zhimg.com/v2-11cc4533c8cdb6981e11d1f36c2980af_r.jpg">

比如我是64位的ubuntu,那么就下载protoc-3.3.0-linux-x86_64.zip。下载解压后会有一个protoc二进制文件,覆盖到对应目录即可(如果不放心的可以用cp /usr/bin/protoc ~/protoc_bak先备份一下):

sudo cp bin/protoc /usr/bin/protoc

2. 下载代码并编译

下载tensorflow/models的代码:

git clone https://github.com/tensorflow/models.git

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

# From tensorflow/models/
protoc object_detection/protos/*.proto --python_out=.

3. 运行notebook demo

在models文件夹下运行:

jupyter-notebook

访问文件夹object_detection,运行object_detection_tutorial.ipynb:

<img src="https://pic4.zhimg.com/50/v2-4e0894c3b243444a8d6093c824f50117_hd.jpg" data-rawwidth="1173" data-rawheight="430" class="origin_image zh-lightbox-thumb" width="1173" data-original="https://pic4.zhimg.com/v2-4e0894c3b243444a8d6093c824f50117_r.jpg">

依次shift+enter运行到底就行了。这个Demo会自动下载并执行最小最快的模型ssd+mobilenet。

最后的检测效果,一张是汪星人图片:

<img src="https://pic4.zhimg.com/50/v2-fb93281f394dcb443ab41dafc70967a7_hd.png" data-rawwidth="785" data-rawheight="497" class="origin_image zh-lightbox-thumb" width="785" data-original="https://pic4.zhimg.com/v2-fb93281f394dcb443ab41dafc70967a7_r.png">

还有一张是海滩图片:

<img src="https://pic3.zhimg.com/50/v2-1a46d658233bd4f76982db75221762fa_hd.png" data-rawwidth="785" data-rawheight="530" class="origin_image zh-lightbox-thumb" width="785" data-original="https://pic3.zhimg.com/v2-1a46d658233bd4f76982db75221762fa_r.png">

4. 使用自己的图片做检测

如果要检测自己的图片,那么更改TEST_IMAGE_PATHS为自己的图片路径就可以了。这里我随便选了一张COCO数据集中的图片:

TEST_IMAGE_PATHS=['/home/dl/COCO_train2014_000000000009.jpg']

检测结果:

<img src="https://pic1.zhimg.com/50/v2-ad6b48fe6737936cac7bef26b8b0af80_hd.png" data-rawwidth="703" data-rawheight="530" class="origin_image zh-lightbox-thumb" width="703" data-original="https://pic1.zhimg.com/v2-ad6b48fe6737936cac7bef26b8b0af80_r.png">

5. 使用其他模型做检测

一共公布了5个模型,上面我们只是用最简单的ssd + mobilenet模型做了检测,如何使用其他模型呢?找到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'

完。

谷歌开放的TensorFlow Object Detection API 效果如何?对业界有什么影响相关推荐

  1. ubuntu下谷歌开源的TensorFlow Object Detection API的安装教程

    环境 Ubuntu16.04/anaconda+tensorflow(gpu)1.4.0+python=3.5 下载 tensorflow model 估计下载的很慢,提供一个百度云链接:https: ...

  2. 物体识别,Win7下运行TensorFlow Object Detection API详细版教程(零基础操作)

    这段时间在做三维重建,为了达到更好的重建效果,想在三维重建的工作开始前增加物体识别这一功能,以便针对特定的物体进行相应的优化,国内也不乏有众多公司在做通用图片识别,诸如:旷世,商汤,百度,图普等,这里 ...

  3. TensorFlow学习——Tensorflow Object Detection API(2.目标检测篇)

    2017 年 6 月, Google 公司开放了 TensorFlow Object Detection API . 这 个项目使用 TensorFlow 实现了大多数深度学习目标检测框架,真中就包括 ...

  4. TensorFlow学习——Tensorflow Object Detection API(1.安装篇)

    2017 年 6 月, Google 公司开放了 TensorFlow Object Detection API . 这 个项目使用 TensorFlow 实现了大多数深度学习目标检测框架,真中就包括 ...

  5. w10的 Google Tensorflow Object Detection API安装

    欢迎关注WX公众号:[程序员管小亮] 近期学习<21个项目玩转深度学习:基于TensorFlow的实践详解>时遇到Google Tensorflow Object Detection AP ...

  6. Tensorflow object detection API 搭建物体识别模型

    ----------------------------------------------------先把别人博客教程跑通-------------------------------------- ...

  7. 如何在windows系统上安装Tensorflow Object Detection API?

    前言 都说Linux是最适合程序员使用的操作系统,这话还真不假. 之前一直在云服务器上跑代码,近期接手了师兄的台式机(GTX 1050),虽然配置很渣,但想在本地玩玩看,于是乎先安装一波Tensorf ...

  8. Tensorflow object detection API 搭建自己的目标检测模型并迁移到Android上

    参考链接:https://blog.csdn.net/dy_guox/article/details/79111949 之前参考上述一系列博客在Windows10下面成功运行了TensorFlow A ...

  9. ssd目标检测训练自己的数据_目标检测Tensorflow object detection API之训练自己的数据集...

    构建自己的模型之前,推荐先跑一下Tensorflow object detection API的demo JustDoIT:目标检测Tensorflow object detection API​zh ...

最新文章

  1. 本人在学习PHP过程中的随笔心得
  2. 贝叶斯网络之父Judea Pearl:新因果科学与数据科学、人工智能的思考
  3. Ubuntu下安装Node.js
  4. php面向对象面试题
  5. automation服务器不能创建对象是什么意思_从运营商角度来考虑为什么NAT不能搭建服务器?...
  6. jzoj3085. 图的计数
  7. ubuntu系统批量端口永久开放
  8. 为什么要把进程/线程绑定到特定cpu核上运行?(cpu core id coreIdx)opdevsdk_sys_bindThreadCoreId()
  9. 虚幻4渲染系统结构解析
  10. spark-submit 参数设置
  11. c语言的表达式2 4 6 8的值,C语言程序设计测试题二
  12. vs2012中对于entity framework的使用
  13. 掌握好这几点方法学习Linux,一定比别人更快入门运维!
  14. H5 video 播放器demo代码
  15. word如何导出PDF格式
  16. 25个常用Matplotlib图的Python代码,干货收藏!
  17. 怎样使用计算机定时关机,win10怎么定时关机?
  18. 洛谷 【入门4】数组 P1427 小鱼的数字游戏
  19. c# excel插入图表
  20. TCP套接口丢失与重传报文线索

热门文章

  1. linux能用airport吗_苹果下架最后两款 AirPort 产品,正式退出路由器市场
  2. YYCache 源码学习(一):YYMemoryCache
  3. 国内三分之一世界500强企业正布局区块链,区块链风口已经出现
  4. 何玺对话苏宁金融洪蜀宁:区块链是颠覆性技术,意义远超互联网
  5. (转载)如何学好iphone游戏开发
  6. SwiftStack迎来v5.0,向混合IT规则张开怀抱
  7. 预写式日志(Write-Ahead Logging (WAL))
  8. ASP.NET Web API 路由对象介绍
  9. 妙用“IP地址冲突”揪出害群之马
  10. docker 主机ip_docker容器指定ip