用 TensorFlow 实现物体检测的像素级分类

雷锋网 AI 科技评论按:本文作者 Priyanka Kochhar 从事数据科学十多年,现在在运营一家深度学习咨询公司,她曾帮助多家创业公司完成人工智能解决方案的计划和部署,如果有兴趣与她合作,请联系 priya.toronto3@gmail.com。

最近,TensorFlow 的「物体检测 API」有了一个新功能,它能根据目标对象的像素位置来确定该对象的像素。换句话来说,TensorFlow 的物体检测从原来的图像级别成功上升到了像素级别。

使用 TensorFlow 的「物体检测 API」图片中的物体进行识别,最后的结果是图片中一个个将不同物体框起来的方框。最近,这个「物体检测 API」有了一个新功能,它能根据目标对象的像素位置确定该对象的像素,实现物体的像素分类。

TensorFlow 的物体检测 API 模型——Mask-RCNN

实例分割

「实例分割」是物体检测的延伸,它能让我们在普通的物体检测的基础上获取关于该对象更加精确、全面的信息。

在什么情况下我们才需要这样精确的信息呢?

  • 无人驾驶汽车 为了确保安全,无人驾驶汽车需要精确定位道路上其他车辆和行人。
  • 机器人系统 机器人在连接两个部件时,如果知道这两个部件的确切位置,那么机器人的操作就会更加高效、准确。

「实例分割」的方法有很多,TensorFlow 进行「实例分割」使用的是 Mask RCNN 算法。

Mask R-CNN 算法概述

Mask RCNN 算法架构

在介绍 Mask RCNN 之前,我们先来认识一下 Faster R-CNN。

Faster-RCNN 是一个用于物体检测的算法,它被分为两个阶段:第一阶段被称为「候选区域生成网络」(RPN),即生成候选物体的边框;第二阶段本质上是 Fast R-CNN 算法,即利用 RolPool 从每个候选边框获取对象特征,并执行分类和边框回归。这两个阶段所使用的特征可以共享,以更快地获得图像推算结果。

Faster R-CNN 对每个候选对象都有两个输出,一个是分类标签,另一个是对象边框。而 Mask-RCNN 就是在 Faster R-CNN 的两个输出的基础上,添加一个掩码的输出,该掩码是一个表示对象在边框中像素的二元掩码。但是这个新添加的掩码输出与原来的分类和边框输出不同,它需要物体更加精细的空间布局和位置信息。因此,Mask R-CNN 需要使用「全卷积神经网络」(FCN)。

全卷积神经网络(FCN)的算法架构

「全卷积神经网络」是「语义分割」中十分常见的算法,它利用了不同区块的卷积和池化层,首先将一张图片解压至它原本大小的三十二分之一,然后在这种粒度水平下进行预测分类,最后使用向上采样和反卷积层将图片还原到原来的尺寸。

因此,Mask RCNN 可以说是将 Faster RCNN 和「全卷积神经网络」这两个网络合并起来,形成的一个庞大的网络架构。

实操 Mask-RCNN

  • 图片测试

你可以利用 TensorFlow 网站上的共享代码来对 Mask RCNN 进行图片测试。以下是我的测试结果:

Mask RCNN on Kites Image

  • 视频测试

对我来说,最有意思的是用 YouTube 视频来测试这个模型。我从 YouTube 上下载了好几条视频,开始了视频测试。

视频测试的主要步骤:

1. 使用 VideoFileClip 功能从视频中提取出每个帧; 2. 使用 fl_image 功能对视频中截取的每张图片进行物体检测,然后用修改后的视频图片替换原本的视频图片; 3. 最后,将修改后的视频图像合并成一个新的视频。

GitHub地址为:https://github.com/priya-dwivedi/Deep-Learning/blob/master/Mask_RCNN/Mask_RCNN_Videos.ipynb

Mask RCNN 的深入研究

下一步的探索包括:

  • 测试一个精确度更高的模型,观察两次测试结果的区别;
  • 使用 TensorFlow 的物体检测 API 在定制的数据集上对 Mask RCNN 进行测试。

本文由雷锋网专栏作者编译,转载需经雷锋网(公众号:雷锋网)许可。

via kdnuggets

原文发布于微信公众号 - AI研习社(okweiwu)

原文发表时间:2018-04-16

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据科学与人工智能

【应用】 信用评分:第7部分 - 信用风险模型的进一步考虑

以满足科学模型开发的主要标志 - 严谨性,可测试性,可复制性和精确性以及可信度 - 考虑模型验证以及如何处理不平衡数据非常重要。 本文概述了可用于满足这些标志的...

11730
来自专栏CreateAMind

以假乱真的生成图片的效果

昨天发的图片是训练到6小时的效果LS-GAN非常棒的效果!,今天略微调整继续训练:也出现了生成网络跟不上判别网络的情况,加快生成网络训练循环。

9720
来自专栏GAN&CV

全面解读Group Normbalization-(吴育昕-何凯明)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25737169/article/d...

13530
来自专栏人工智能LeadAI

Tensorflow新手通过PlayGround可视化初识神经网络

是不是觉得神经网络不够形象,概念不够清晰,如果你是新手,来玩玩PlayGround就知道,大神请绕道。 PlayGround是一个在线演示、实验的神经网络平台,...

54540
来自专栏机器学习算法与Python学习

20条「不成熟」的小建议,如何构建深度神经网络?

本文介绍了构建深度神经网络的一些基本技巧,从通用技巧、神经网络调试和案例研究三方面展开。

9420
来自专栏PPV课数据科学社区

数据咖小课堂:R语言十八讲--(补充)处理缺失值

? 缺失值处理在数据分析中是关键的一步,而且是开始的关键一步,我们对于数据的缺失处理直接影响模型的准确性. 1.产生的原因: 调查者忘记回答了,拒绝回答,不完...

32780
来自专栏算法channel

机器学习之线性回归:算法兑现为python代码

? 前面三天推送机器学习线性回归算法之最小二乘法,从假设到原理,详细分析了直接求解和梯度下降两种算法,接下来手动编写python代码实现线性回归的算法吧。 0...

42290
来自专栏机器学习算法与Python学习

CS231n课程笔记翻译:图像分类笔记(下)

用于超参数调优的验证集 k-NN分类器需要设定k值,那么选择哪个k值最合适的呢?我们可以选择不同的距离函数,比如L1范数和L2范数等,那么选哪个好?还有不少选择...

37580
来自专栏一个会写诗的程序员的博客

BP 神经网络算法

x的值可能为[−∞,+∞],为了方便处理,需要将其压缩到一个合理的范围,还需 这样的激励函数,能够将刚才的区间压缩到[0,1]。

13430
来自专栏目标检测和深度学习

用 TensorFlow 实现物体检测的像素级分类

雷锋网 AI 科技评论按:本文作者 Priyanka Kochhar 从事数据科学十多年,现在在运营一家深度学习咨询公司,她曾帮助多家创业公司完成人工智能解决方...

45260

扫码关注云+社区

领取腾讯云代金券