SSD(单次多盒检测)用于实时物体检测

AI 研习社按:本文为雷锋字幕组编译的技术博客,原标题 SSD(Single Shot Multi-Box Detection) for real time object detection,作者 Rabin Poudyal。 翻译 | 陶玉龙 校对 | 佟金广 整理 | 孔令双

卷积神经网络在检测图像中的物体时优于其他神经网络结构。很快,研究人员改进了 CNN 来进行对象定位与检测,并称这种结构为 R-CNN(Region-CNN)。R-CNN 的输出是具有矩形框和分类的图像,矩形框围绕着图像中的对象。以下是 R-CNN 的工作步骤:

  1. 使用我们称为选择性搜索的算法扫描输入图像,进而查找可能的对象,生成大约 2000 个候选区域,
  2. 在每个候选区域上运行 CNN,
  3. 获取每个 CNN 的输出并将其输入:
  • SVM 来区域进行分类
  • 线性回归器来收紧对象的边界框,如果对象存在

R-CNN 运用于目标检测

虽然与传统的 CNN 相比,R-CNN 在目标定位,检测和分类方面都取得了很大进步,但在实现目标实时检测方面依旧存在问题。以下是其中的一些问题:

1、训练数据很难处理,而且耗时很长

2、训练分为两个阶段进行(即:候选区域的选择和分类)

3、网络在推理阶段很慢(处理非训练数据时)

为了改进 R-CNN,研究人员们相继提出了其他算法,如 Fast-RCNN,Faster-RCNN 等。 这些算法为目标检测提供了更准确的结果。 但它们对于实时检测来说显得有点慢。SSD 就在这个时候应运而生,它在准确性和计算速度方面具有良好的平衡。

SSD(单发多边框检测器)的含义

单发:目标定位和分类在网络的单个前向传递中完成 :

多框:边界框回归的技术

检测器:对检测到的对象进行分类

结构

SSD 结构

SSD 的结构建立在 VGG-16 的基础上。但在这里对 VGG-16 进行了一些微小调整,从 Conv6 层开始,我们用一系列辅助卷积层来代替原先全连接层。因为 VGG-16 可以提供高质量的图像分类和迁移学习来改善结果, 我们将其作为 SSD 的基础网络。通过使用辅助卷积层,我们可以提取图像多个尺度的特征,并逐步减小每个卷积层的尺寸。我已在下一节讨论了它的工作原理。您可以看到 VGG-16 架构的以下图像, 它包含全连接层。

VGG-16 结构

工作机制

为了训练我们的算法,我们需要一个包含带有对象的图像的训练集,这些对象必须在它们上面有边界框。 通过这种方式学习,算法学习如何在对象上放置矩形框以及放置在何处。 我们通过调参使预测出的边界框和实际的边界框之间的误差最小,从而优化我们的模型以正确地检测对象。与 CNN 不同,我们不仅预测图像中是否存在物体,还需要预测物体在图像中的位置。在训练期间,算法也要学习调整对象边界框中的高度和宽度。

上图是我们用于目标检测的训练数据集的示例。 这些数据集必须包含在图像中标记类别的对象。 更多默认框会有更准确的检测,但会以速度牺牲作为代价。

Pascal VOC 和 COCO 数据集对初学者而言是一个很好的入门。

处理尺度问题

在左边是一张有几匹马的图像。我们将输入图像划分为网格集。 然后我们围绕这些网格制作几个不同宽高比的矩形框。 我们在这些框中应用卷积来研究这些网格中是否存在对象。这里的一匹黑马在图像中更靠近摄像头。因此,我们绘制的边界框无法识别是否是马,因为边界框没有任何可以识别马匹的特征。

如果我们看上述 SSD 的架构,我们可以看到在 conv6 层之后的每个步骤中图像的大小在显著减小。 我们讨论的关于划分网格和在这些网格上查找对象的每个操作都适用于从网络的后面到前面的卷积的每个步骤。 分类器也应用在每个步骤中来检测对象。 因此,由于物体在每个步骤中变得更小,它很容易识别。

SSD 算法还知道如何从一个卷积操作返回到另一个卷积操作。 它不仅会前向运算而且会后向运算。 例如,如果它在 conv4 中看到马,那么它可以返回到 conv6 并且将在马周围绘制矩形框。

原文链接:

https://medium.com/@rabinpoudyal1995/ssd-single-shot-multi-box-detection-for-real-time-object-detection-5f2a06e33a4a

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

原文发表时间:2018-07-24

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器人网

从零开始,了解元学习

传统的机器学习研究模式是:获取特定任务的大型数据集,然后用这个数据集从头开始训练模型。很明显,这和人类利用以往经验,仅仅通过少量样本就迅速完成学习的情况相差甚远...

1192
来自专栏机器学习与自然语言处理

信息量,熵,交叉熵,相对熵与代价函数

如果有⼈告诉我们⼀个相当不可能的事件发⽣了,我们收到的信息要多于我们被告知某个很可能发⽣的事件发⽣时收到的信息。如果我们知道某件事情⼀定会发⽣,那么我们就不会接...

1217
来自专栏fangyangcoder

Andrew Ng机器学习课程笔记(四)之神经网络

http://www.cnblogs.com/fydeblog/p/7365730.html

841

如何在Python中为长短期记忆网络扩展数据

用于序列预测问题的数据可能需要在训练神经网络(如长短期记忆递归神经网络)时进行缩放。

2657
来自专栏机器之心

深度 | 图像语义分割的工作原理和CNN架构变迁

更具体地讲,语义图像分割的目标在于标记图片中每一个像素,并将每一个像素与其表示的类别对应起来。因为会预测图像中的每一个像素,所以一般将这样的任务称为密集预测。

1960
来自专栏AI科技大本营的专栏

实战 | 速度快3倍,大小仅1/4,这项技术教你多快好省搭建深度学习模型

一般来说,神经网络层数越深、参数越多,所得出的结果就越精细。但与此同时,问题也来了:越精细,意味着所消耗的计算资源也就越多。这个问题怎么破?这就要靠剪枝技术了。...

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

该怎么检测异常值?

原文作者: Jacob Joseph 原文链接:https://blog.clevertap.com/how-to-detect-outliers-u...

4919
来自专栏编程

深度学习中的损失函数总结以及Center Loss函数笔记

目标函数,损失函数,代价函数 损失函数度量的是预测值与真实值之间的差异.损失函数通常写做L(y_,y).y_代表了预测值,y代表了真实值. 目标函数可以看做是优...

5978
来自专栏机器之心

从90年代的SRNN开始,纵览循环神经网络27年的研究进展

27812
来自专栏Petrichor的专栏

深度学习: 感受野 (receptive field)

感受野的计算 主要与 卷积层 和 池化层 的 窗口大小 (size)、移动步长 (stride) 以及 填充 (padding) 有关。

4173

扫码关注云+社区

领取腾讯云代金券