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

熟悉TensorFlow的人都知道,tf在Github上的主页是: https://github.com/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的官方安装指南中,可以看到这样一句代码:

很显然,这就是钦点用Slim作特征抽取了。

另外,以Faster RCNN为例,之前在github上,可以找到各种各样非官方的TensorFlow实现,但是这些实现使用的特征抽取层都不是Slim,而是五花八门的什么都有,另外一方面实现代码大量copy自原始的caffe的实现,这次公布的代码里已经一点也找不到原始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都无所谓。

安装或升级protoc

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

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

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

下载代码并编译

下载tensorflow/models的代码:

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

运行notebook demo

在models文件夹下运行:

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

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

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

还有一张是海滩图片:

使用自己的图片做检测

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

检测结果:

使用其他模型做检测

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

原文发布于微信公众号 - 人工智能LeadAI(atleadai)

原文发表时间:2017-08-19

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PingCAP的专栏

TiDB 源码阅读系列文章(十四)统计信息(下)

在 统计信息(上) 中,我们介绍了统计信息基本概念、TiDB 的统计信息收集/更新机制以及如何用统计信息来估计算子代价,本篇将会结合原理介绍 TiDB 的源码实...

1173
来自专栏吉浦迅科技

确认过的眼神:这是一份NVIDIA TensorRT 4.0的实战教程

NVIDIA TensorRT是一个高性能的深度学习推理优化器和runtime,为深度学习推理应用程序提供低延迟和高吞吐量。您可以从每个深度学习框架中导入经过训...

5202
来自专栏机器之心

开源 | 深度安卓恶意软件检测系统:用卷积神经网络保护你的手机

选自GitHub 机器之心编译 参与:Panda 恶意软件可以说是我们现代生活的一大威胁,为了保护我们电子设备中的财产和资料安全,我们往往需要寻求安全软件的帮助...

3027
来自专栏和蔼的张星的图像处理专栏

LCT代码跑起来先文章思路总结

论文才刚开始看,但是代码先跑了一下看结果,有一点小坑,记录下: 首先去论文的github上去下载代码:点这里 readme里其实写了怎么搞:

5653
来自专栏机器之心

教程 | 如何用百度深度学习框架PaddlePaddle做数据预处理

3466
来自专栏大数据挖掘DT机器学习

tensorflow LSTM + CTC实现端到端OCR

本文github源码地址: 在公众号 datadw 里 回复 OCR 即可获取。 最近在做OCR相关的东西,关于OCR真的是有悠久了历史了,最开始用tes...

1.4K3
来自专栏人工智能头条

Hadoop 2.0 上深度学习的解决方案

1303
来自专栏ATYUN订阅号

使用Java部署训练好的Keras深度学习模型

Keras库为深度学习提供了一个相对简单的接口,使神经网络可以被大众使用。然而,我们面临的挑战之一是将Keras的探索模型转化为产品模型。Keras是用Pyth...

6204
来自专栏CSDN技术头条

Hadoop 2.0 上深度学习的解决方案

波士顿的数据科学团队正在利用尖端工具和算法来优化商业活动,且这些商业活动是基于对用户数据中的深刻透析。数据科学大量使用机器算法,可以帮助我们在数据中识别和利用模...

2898
来自专栏机器学习算法工程师

(Keras/监督学习)15分钟搞定最新深度学习车牌OCR

作者:石文华 编辑:祝鑫泉 前 言 文章来源:https://hackernoon.com/latest-deep-l...

1.7K7

扫码关注云+社区

领取腾讯云代金券