最近发布的目标检测方法在流行基准——MS COCO 数据集上取得了最先进 (SOTA) 的成果。让我们仔细看看这些方法。
但首先,我们将从介绍开始。
目标检测:以前的方法
主要有两种类型的最先进目标检测器。
一方面,我们有两个阶段检测器,例如 Faster R-CNN(基于区域的卷积神经网络)或 Mask R-CNN。这些方法使用区域提议网络 (RPN) 在第一阶段生成感兴趣区域,并将区域提议发送到管道中进行目标分类和边界框回归。这些模型达到了最高的准确率,但通常速度较慢。
另一方面,我们有单阶段检测器,例如 YOLO(你只看一次)和 SSD(单次多框检测器)。它们将目标检测视为一个简单的回归问题,通过接收输入图像并学习类别概率和边界框坐标来解决(**图 1**)。这些模型的准确率较低,但比两阶段目标检测器快得多。这些模型的主要组成部分之一是使用生成的先验(或锚点),这些锚点是各种大小和纵横比的框,用作检测候选。
CornerNet:将目标检测为成对关键点
了解了这些背景知识后,我们现在准备讨论 CornerNet。
它有什么特别之处?
首先,它消除了锚框的使用,锚框在以前的单阶段方法中很流行。CornerNet 将边界框表示为一对关键点,即左上角和右下角。
其次,该方法引入了一种新型池化层——角池化,它可以帮助网络更好地定位角点。
最后但并非最不重要的一点是,性能!Corner-Net 在 MS COCO 上实现了 **42.2%** 的 AP,正如作者所说,这比当时所有现有的单阶段检测器都要好。
听起来令人兴奋?让我们深入了解细节。
概述
从 **图 2** 可以看出,CornerNet 使用 沙漏 网络作为主干网络,后面跟着两个预测模块。一个模块用于左上角,而另一个模块用于右下角。每个模块都包含自己的角池化模块(我们将在后面讨论),用于在预测热图、嵌入和偏移之前从沙漏网络中池化特征。
两个预测的热图集都具有 c 个通道,其中 c 是类别数量,大小为 HW。没有背景通道。每个通道都是一个二元掩码,表示某个类别的角点位置。
此外,对于每个检测到的角点,网络都会预测一个嵌入向量,使得来自同一目标的两个角点的嵌入之间的距离很小(**图 3**)。如果距离小于阈值,则会生成目标边界框。边界框将被分配一个置信度分数,该分数等于角点对的平均分数。
为了生成更紧密的边界框,网络还会预测偏移量,以略微调整角点的位置。之后,将使用一个简单的后处理算法(包括 NMS(非极大值抑制))从热图、嵌入和偏移量中生成边界框。
角点检测
对于每个角点,都只有一个地面实况正位置,所有其他位置都是负位置。在训练期间,作者没有对所有负位置进行同等惩罚,而是减少了对正位置周围一定半径内的负位置的惩罚。这是因为一对假角点,当它们靠近其相应的地面实况位置时,仍然可以生成一个与地面实况框充分重叠的框(**图 4**)。
角池化模块
那么,角点是如何检测到的?
如上所述,在这种情况下,提出了一种名为“角池化”的新型池化层,其功能是帮助网络定位角点。
为了更好地理解它的工作原理,让我们看一下 **图 5**。
该层检测到同一目标在行和列中的边界特征,因此该行和该列的交点就是角点。从技术上讲,这种新的池化层是两个正向池化层的总和,其中方向取决于计算的角点是哪个角点(对于左上角角点池化,从右到左和从下到上,如 **图 6** 所示,右下角的计算方向与其相反)。
预测模块
预测模块的架构如 **图 7** 所示。
模块的第一部分是残差块的修改版本:它首先使用两个 3×3 卷积模块处理来自主干网络的特征,然后应用左上角角点池化层。然后将池化后的特征馈送到 3×3 Conv-BN 层,并添加回投影快捷方式。修改后的残差块之后是一个卷积块,然后被分成 3 个单独的分支以生成热图、嵌入和偏移量。
训练细节
- 没有进行预训练,权重是随机初始化的。
- 网络的输入分辨率为 511×511,输出热图大小为 128×128。
- 数据增强包括随机水平翻转、随机缩放、随机裁剪和随机颜色抖动,其中包括调整图像的亮度、饱和度和对比度。
- 使用 Adam 来优化训练损失
具体来说,让我们提供一些关于上述等式中每个项的更多信息
Ldet 是检测损失,负责正确检测角点,它是焦点损失的变体;
Lpull 是分组损失,用于将一个目标的角点拉到一起;
Lpush 恰恰相反,用于分离不同目标的角点;
Loff 是用于偏移量校正的平滑 L1 损失;
而 α、β 和 γ 是参数,分别设置为 0.1、0.1 和 1。
测试细节
- 使用原始图像和翻转图像。
- 保持图像的原始分辨率,并在将其馈送到 CornerNet 之前用零填充。
- 将 Soft-nms 方法应用于检测结果,只报告前 100 个检测结果。
- 在 Titan X (PASCAL) GPU 上,每张图像的平均推断时间为 **244ms**。
结果
让我们继续讨论结果。您可以在 **图 8** 中找到一些支持使用角池化的示例。**图 9** 展示了 CornerNet 与其他方法的比较。请注意,结果是针对两种类型的评估提供的:单尺度和多尺度。在后一种情况下,CornerNet 在 MS COCO 数据集上实现了 **42.2%** 的 AP。
CornerNet 代码
对于那些坚持到最后的人来说,这是一个额外的好处——链接到作者慷慨提供的代码: