深度学习计算机视觉之SSD MultiBox —实时对象检测


这篇文章旨在构成对SSD MultiBox对象检测技术的直观解释。我试图尽量减少数学运算,而是逐步引导您完成该体系结构的宗旨,其中包括解释MultiBox算法的作用。阅读本文后,希望您能更好地掌握SSD,并亲自尝试!


自从AlexNet在2012年ImageNet大规模视觉识别挑战赛(ILSVRC)席卷研究界以来,深度学习已成为图像识别任务的首选方法,远远超过了文献中使用的传统计算机视觉方法。在计算机视觉领域,卷积神经网络擅长图像分类,它包括对图像进行分类,给定一组类别(例如猫,狗),并让网络确定图像中存在的最强类别。
深度学习计算机视觉之SSD MultiBox —实时对象检测_第1张图片
如今,深度学习网络在图像分类方面比人类更胜一筹,这表明该技术的强大功能。但是,作为人类,我们在观察和与世界互动时所做的不仅是对图像进行分类。我们还将对我们视野内的每个元素进行位置预测和分类。这些是复杂得多的任务,机器仍然要像人类一样努力地执行。实际上,我认为对象检测性能良好时,会使机器更接近真实场景的理解。
深度学习计算机视觉之SSD MultiBox —实时对象检测_第2张图片

The Region-Convolutional Neural Network (R-CNN)

几年前,通过利用CNN在计算机视觉中实现的某些飞跃,研究人员开发了R-CNN以处理对象检测,定位和分类的任务。广义上讲,R-CNN是一种特殊的CNN,它能够定位和检测图像中的对象:输出通常是一组与每个检测到的对象紧密匹配的边界框,以及每个对象的类输出。检测到的物体。下图显示了典型R-CNN的输出:
深度学习计算机视觉之SSD MultiBox —实时对象检测_第3张图片
该领域有详尽的论文清单,对于任何渴望进一步探索的人,我建议从以下围绕该主题的论文“三部曲”开始:

  • 神经网络
  • Fast RCNN
  • Faster RCNN

您可能已经猜到了,接下来的每篇论文都提出了对R-CNN中所做的开创性工作的改进,以开发更快的网络,以实现实时对象检测。通过这组工作所显示的成就确实令人惊叹,但是这些架构都无法创建实时对象检测器。在不过多讨论的情况下,确定了上述网络的以下问题:

  • 训练数据很麻烦且时间太长
  • 培训分为多个阶段(例如,培训区域建议与分类器)
  • 网络在推理 时(例如,在处理非训练数据时)太慢

幸运的是,在过去的几年中,创建了新的体系结构来解决R-CNN及其后续版本的瓶颈,从而实现了实时对象检测。最著名的是YOLO(您只看一次)和SSD MultiBox(单发检测器)。在本文中,我们将讨论SSD,因为与YOLO相比,此体系结构的覆盖面似乎更少。此外,一旦您了解了SSD,也应该更容易掌握YOLO。

Single Shot MultiBox Detector

关于SSD:Single Shot MultiBox Detector的论文(C.Szegedy等人)于2016年11月发布,在对象检测任务的性能和精度方面均达到了新记录,得分超过74%(平均 平均精度))在PascalVOC和COCO等标准数据集上以每秒59帧的速度播放。为了更好地了解SSD,让我们首先解释一下此架构的名称来自何处:

  • Single Shot:这意味着对象定位和分类的任务是在网络 的一次 正向传递中完成的
  • MultiBox:这是Szegedy等人开发的边界框回归技术的名称。(我们将简要介绍一下)
  • 检测器:网络是一个对象检测器,还可以对那些检测到的对象进行分类

深度学习计算机视觉之SSD MultiBox —实时对象检测_第4张图片
从上图可以看到,SSD的体系结构建立在古老的VGG-16体系结构上,但丢弃了完全连接的层。VGG-16被用作基础网络的原因是由于其在高质量图像分类任务中的强大性能以及在传输学习有助于改善结果的问题中的广泛应用。代替原始的VGG全连接层,添加了一组辅助卷积层(从conv6开始),从而能够以多个比例提取特征并逐渐减小每个后续层的输入大小。
深度学习计算机视觉之SSD MultiBox —实时对象检测_第5张图片

MultiBox

Szegedy在MultiBox上的工作启发了SSD的包围盒回归技术,MultiBox是一种用于类无关的快速包围盒坐标建议的方法。有趣的是,在MultiBox上完成的工作中,使用了Inception风格的卷积网络。您在下面看到的1x1卷积有助于减少维数,因为维数会减少(但“宽度”和“高度”将保持不变)。
深度学习计算机视觉之SSD MultiBox —实时对象检测_第6张图片
MultiBox的丢失功能还结合了两个进入SSD的关键组件:

  • 置信度损失(Confidence Loss):这用于衡量网络对计算的边界框的客观性的置信度。分类交叉熵用于计算此损失。
  • 位置损失:衡量网络的预测边界框与训练集中的地面真实边界框有多远。此处使用L2-Norm。

因此,无需深入研究数学,损失的表达式即为:距离 + 位置:
在这里插入图片描述
alpha 长期帮助我们在平衡位置损失的贡献。像深度学习中一样,目标是找到最优化减少损失函数的参数值,从而使我们的预测更接近于基本事实。

MultiBox Priors和IoU

实际上,围绕边界框生成的逻辑比我之前所说的要复杂。但是不要担心:它仍然可以实现。
在MultiBox中,研究人员创建了我们所谓的先验(或Faster-R-CNN术语中的锚点),它们是预先计算的,固定大小的边界框,与原始地面真值框的分布紧密匹配。实际上,以这样的方式选择这些先验,即它们的交集与交集之比(又名IoU,有时也称为Jaccard指数)大于0.5。从下面的图片可以推断,IoU值0.5仍然不够好,但是它确实为边界框回归算法提供了一个强大的起点-与从随机坐标开始进行预测相比,这是一个更好的策略!因此,MultiBox从先验开始作为预测,并尝试回归到更接近地面真实边界框。
深度学习计算机视觉之SSD MultiBox —实时对象检测_第7张图片
深度学习计算机视觉之SSD MultiBox —实时对象检测_第8张图片
深度学习计算机视觉之SSD MultiBox —实时对象检测_第9张图片
产生的架构(请再次查看上面的MultiBox架构图以供参考)每个功能图单元(8x8、6x6、4x4、3x3、2x2)包含11个先验,而在1x1功能图上只有一个先验,因此每个图像总共1420个先验,因此,可以在多个比例上可靠地覆盖输入图像,以检测各种尺寸的物体。
最后,MultiBox仅保留前K个预测,这些预测已将位置(LOC)和置信度(CONF)损失最小化。

SSD改进

回到SSD上,添加了许多调整,以使该网络更加能够对对象进行位置预测和分类。
固定优先级:与MultiBox不同,每个要素地图单元都与一组具有不同尺寸和纵横比的默认边界框相关联。这些先验是手动(但要小心)选择的,而在MultiBox中选择它们是因为它们相对于地面真实性的IoU超过0.5。从理论上讲,这应该使SSD可以针对任何类型的输入进行通用化,而无需前代的预训练阶段。例如,假设我们在给定大小为f = m *的特征图上,为每个特征图像元每个b默认边界框配置了2个对角相对的点(x1,y1)和(x2,y2),并配置了c个类进行分类。ñ ,SSD将为此功能图计算f * b * (4 + c)值。
深度学习计算机视觉之SSD MultiBox —实时对象检测_第10张图片
位置损失: SSD 使用平滑的L1-Norm计算位置损失。尽管不如L2-Norm精确,但它仍然非常有效,并为SSD提供了更大的回旋余地,因为它没有在边界框预测中尝试“像素完美”(即,几个像素之间的差异几乎不会引起注意)我们中许多人)。
分类: MultiBox不执行对象分类,而SSD则执行。因此,对于每个预测的边界框,针对数据集中的每个可能的类别,计算一组c类预测。

你可能感兴趣的:(深度学习)