手把手 | 亲测好用!Google发布了一个新的Tensorflow物体识别API

大数据文摘作品,转载具体要求见文末

作者 | Priya Dwivedi

编译 | Lisa,Saint,Aileen

做图像识别有很多不同的途径。谷歌最近发布了一个使用Tensorflow的物体识别API,让计算机视觉在各方面都更进了一步。

这篇文章将带你测试这个新的API,并且把它应用在youtube上(可以在GitHub上获取用到的全部代码

https://github.com/priya-dwivedi/Deep-Learning/blob/master/Object_Detection_Tensorflow_API.ipynb),结果如下:

API概述

这个API是用COCO(文本中的常见物体)数据集(http://mscoco.org/)训练出来的。这是一个大约有30万张图像、90种最常见物体的数据集。物体的样本包括:

COCO数据集的一些物体种类

这个API提供了5种不同的模型,使用者可以通过设置不同检测边界范围来平衡运行速度和准确率。

上图中的mAP(平均精度)是检测边界框的准确率和回召率的乘积。这是一个很好的混合测度,在评价模型对目标物体的敏锐度和它是否能很好的避免虚假目标中非常好用。mAP值越高,模型的准确度越高,但运行速度会相应下降。

(想要了解更多跟模型有关的知识https://github.com/tensorflow/models/blob/477ed41e7e4e8a8443bc633846eb01e2182dc68a/object_detection/g3doc/detection_model_zoo.md)

实测时间

我决定使用最轻量级的模型(ssd_mobilenet)。主要步骤如下:

1. 下载一个打包模型(.pb-protobuf)并把它载入缓存

2. 使用内置的辅助代码来载入标签,类别,可视化工具等等。

3. 建立一个新的会话,在图片上运行模型。

总体来说步骤非常简单。而且这个API文档还提供了一些能运行这些主要步骤的Jupyter文档——

https://github.com/tensorflow/models/blob/master/object_detection/object_detection_tutorial.ipynb

这个模型在实例图像上表现得相当出色(如下图):

更进一步——在视频上运行上

接下来我打算在视频上尝试这个API。我使用了Python moviepy库,主要步骤如下:

  • 首先,使用VideoFileClip函数从视频中提取图像;
  • 然后使用fl_image函数在视频中提取图像,并在上面应用物体识别API。fl_image是一个很有用的函数,可以提取图像并把它替换为修改后的图像。通过这个函数就可以实现在每个视频上提取图像并应用物体识别;
  • 最后,把所有处理过的图像片段合并成一个新视频。

对于3-4秒的片段,这个程序需要花费大概1分钟的时间来运行。但鉴于我们使用的是一个载入缓存的模型,而且没有使用GPU,我们实现的效果还是很惊艳的!很难相信只用这么一点代码,就可以以很高的准确率检测并且在很多常见物体上画出边界框。

当然,我们还是能看到有一些表现有待提升。比如下面的例子。这个视频里的鸟完全没有被检测出来。

再进一步,继续探索

几个进一步探索这个API的想法:

  • 尝试一些准确率更高但成本也更高的模型,看看他们有什么不同;
  • 寻找加速这个API的方法,这样它就可以被用于车载装置上进行实时物体检测;
  • 谷歌也提供了一些技能来应用这些模型进行传递学习。例如,载入打包模型后添加一个带有不同图像类别的输出层。

参考文献:

  • Google Tensorflow Object Detection Github
  • COCO dataset

原文链接:https://medium.com/towards-data-science/is-google-tensorflow-object-detection-api-the-easiest-way-to-implement-image-recognition-a8bd1f500ea0

原文发布于微信公众号 - 大数据文摘(BigDataDigest)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云时之间

算法导论系列:贪心算法(2)

现在我们假设景点地图如上所示,从起点到下一个点都会有具有方向路径和相应的权重,我们可以使用矩阵进行表示,如下图所示:

1281
来自专栏AI研习社

Tensorflow 中 learning rate decay 的奇技淫巧

深度学习中参数更新的方法想必大家都十分清楚了——sgd,adam 等等,孰优孰劣相关的讨论也十分广泛。可是,learning rate 的衰减策略大家有特别关注...

5714
来自专栏marsggbo

Andrew Ng机器学习课程笔记--week2(多元线性回归&正规公式)

1. 内容概要 Multivariate Linear Regression(多元线性回归) 多元特征 多元变量的梯度下降 特征缩放 Computing Pa...

2388
来自专栏CSDN技术头条

GAN学习指南:从原理入门到制作生成Demo

作者:何之源,复旦大学计算机科学硕士在读,研究方向为人工智能以及机器学习的应用。 生成式对抗网络(GAN)是近年来大热的深度学习模型。最近正好有空看了这方面的...

2939
来自专栏量子位

想尝试搭建图像识别系统?这里有一份TensorFlow速成教程

李林 编译整理 量子位 出品 | 公众号 QbitAI 从我们见到的各种图像识别软件来看,机器似乎能认出人脸、猫、狗、花草、各种汽车等等日常生活中出现的物体,但...

5447
来自专栏编程

关于反向传播在Python中应用的入门教程

我来这里的目的是为了测试我对于Karpathy的博客《骇客的神经网络指导》以及Python的理解,也是为了掌握最近精读的Derek Banas的文章《令人惊奇的...

2117
来自专栏智能算法

数据异常到底该如何检测?(二)

有了之前的铺垫和理论,本文就用一些现实中的实际数据进行一些具体的算法的应用。数据为网络访问日志文件,主要选择了单位时间内的访问请求次数与单位访问中的动作数作为二...

2875
来自专栏深度学习思考者

DL开源框架Caffe | 模型微调 (finetune)的场景、问题、技巧以及解决方案

前言 什么是模型的微调?   使用别人训练好的网络模型进行训练,前提是必须和别人用同一个网络,因为参数是根据网络而来的。当然最后一层是可以修改的,因为我们...

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

SAMF

论文:paper 结合了CN和KCF的多尺度扩展,看文章之前就听说很暴力,看了以后才发现原来这么暴力。 论文的前一半讲KCF,后一半讲做的实验,中间一点点大...

1792

用Python的长短期记忆神经网络进行时间序列预测

长短期记忆递归神经网络具有学习长的观察序列的潜力。

3K9

扫码关注云+社区

领取腾讯云代金券