本文最后更新于:2020年9月29日 下午

摘要

提出CornerNet:一种新的目标检测方法,使用单个卷积神经网络,将目标边界框当做一组关键点(左上角、右下角)进行检测。消除了Anchor Boxes。

提出Corner Pooling,一种新的池化层,帮助网络更好的定位关键点。

实验表明,CornerNet在MS COCO数据集上,达到42.2%的AP。

1. 介绍

目前最先进目标检测方法的一个主要组成部分是Anchor Box,是用于检测候选的一些可变尺寸、可变长宽比的框。Anchor Box在one-stage检测器中广泛使用,实现高精度、高效率的结果。One stage检测器将anchor boxes密集的放在图像上,并通过对anchors进行评分、通过回归改善他们的坐标。

使用anchor box有两个缺点:

  • 需要一个非常大的anchor boxes集合。检测器被用来训练判断每个anchor box是否与ground truth box 足够重叠。结果,仅仅一小部分anchors与ground truth重叠,这就造成阳性anchors box和阴性anchors box 之间的巨大不平衡,并且减慢训练。
  • 使用anchor box引入大量超参数和设计选择。包括:多少框?框的尺寸?框的长宽比。这些选择很大程度上通过特殊的启发式作出的,当联合多尺度结构时会变得更复杂,每个网络在多个分辨率下分别作出预测,每个尺度使用不同的特征和自己的anchor boxes集合。

本文介绍了CornerNet,一种去掉anchor boxes的one-stage目标检测方法。通过一组左上角和右下角的关键点来检测目标。使用单个卷积神经网络预测一个(相同目标类别的所有实例的)左上角点的”热图、一个右下角点的”热图“、一个嵌入式向量。嵌入式向量用于将属于相同目标的关键点组合,即网络被训练用于为这些关键点预测相近的嵌入式向量。我们的方法极大简化了网络的输出,无需设计anchor boxes。

CornerNet另一个新颖的内容是corner pooling,一种新的池化层,可帮助卷积神经网络更好地定位边界框的角落。Corner Pooling在两个特征图上执行,从第一个特征图上(在每个像素位置)最大池化所有的特征向量,第二个特征图直接池化所有特征向量,然后将两个池化结果相加。

我们假设有两个原因使检测角落比检测边界框中心或proposals更好:1.边界框的中心很难定位,因为它依赖目标的4条边,而定位一个角落仅需要2条边,更容易些。Corner pooling更是如此,它编码了一些关于角落定义的明确的先验知识。2.角落提供了一个更高效的边界框空间密集离散化方法:我们仅需要O(wh)个边角点,来替代O(w2h2)可能的anchor boxes。

CornerNet在MS COCO数据集上达到42.2%的AP。通过消融研究表明:corner pooling对CornerNet的优越性能至关重要。

image-20200929123132990

2. Related work

我们的方法受到”Associative Embedding in the context of muti-person pose estimation”的启发。这个方法在单个网络中监测和组合人类的关节。每个被检测到的关节有一个嵌入式向量。关节被组合在一起,基于他们嵌入式向量之间的距离。我们是第一个构想将目标检测任务当做一个检测任务和用嵌入式向量组合边角点。另一个创新点是他提出了conrer pooling层,帮助更好的定位边角点。此外,我们对沙漏结构进行了重大修改,加入了我们提出的新奇的focal loss变体,帮助更好的训练网络。

image-20200929123207572

3. CornerNet

3.1 Overview

CornerNet通过一对关键点(边界框左上角和右下角)来检测目标。使用一个卷积网络预测两个热图集合,来表示不同目标类别的边角点位置,一个是左上角边角点的热图集合,一个是右下角边角点的热图集合。此外,网络为每一个被检测到的边角点预测一个嵌入式向量,这样,同一目标的两个边角点的嵌入式向量之间的距离很小。为了产生更紧的边界框,网络同时预测一个偏移量,来轻微的调整边角点的位置。通过预测热图、嵌入式向量、和偏移量,我们应用一个简单的后处理算法来获得最终高度边界框。

image-20200927103924915

图四是CornerNet的一个概述图,我们使用沙漏网络(Newell et al.,2016)作为CorNerNet的Back-bone网络。沙漏网络后面跟着两个预测模块,一个模块预测左上角点,另一个预测右下角点。每个模块有他们自己的CornerPooling模块来池化来自沙漏网络的特征,之后预测热图、嵌入式向量和偏移。我们没有使用不同尺度的特征来检测不同尺寸的目标,我们仅仅将这两个模块应用于沙漏网络的输出。

3.2 检测Corners

我们预测两个热图集合,一个是左上角点的,一个是右下角点的。每个热图集合有C个通道(C是类别数目,尺寸为HxW,没有背景通道),每个通道是一个二进制的mask,指示属于同一个类别的边角点的位置。

每个边角点,有一个阳性的ground-truth位置,其他所有的位置是阴性的。在训练过程中不是相等的惩罚所有阴性位置,而是减少那些在阳性位置某个半径内的阴性位置的惩罚。这是因为一组错误的边角点检测结果,如果他们与各自的ground truth 位置很近,仍然可以预测一个与ground-truth重叠很大的边界框。如果在半径内的一组点所产生的边界框与ground-truth的IoU大于0.3,那么就使用这个半径值。给出这个半径后,惩罚减少的数量通过一个非正规化的2维高斯函数给出。

pcij是在预测出的热图上,坐标(i,j)是类别c的分数。ycij是被非正规化高斯函数增大的ground-truth热图。我们设计了一个focal loss的变体:

image-20200929122659653

许多方法用下采样层来聚集全局信息,减少内存使用。当他们被用于一张全卷积图像,输出的尺寸通常比原始图像小。当坐标点重新映射到原图时,会丢失一些精度,这会极大地影响小的边界框和其ground-truth之间的IoU。为了解决这个问题,我们在重映射到输入图像分辨率之前,通过预测位置偏移来轻微的调整边角点的位置。

image-20200929122731092

我们在训练时为ground-truth边角点应用平滑L1损失。

image-20200929122802250

3.3 组合边角点

一张图片中可能会有多个目标,会有多个左上角点和多个右下角点被检测出来。我们需要确定一对左上角点和右下角点是否来自相同的边界框。我们的方法灵感来自于“Associative Embedding method”,Newell等人检测人类所有的关节,为每个关节生成一个嵌入式向量。基于这些嵌入式向量之间的距离来组合关节。

这种联合嵌入式的方法也适用于我们的任务。网络为每一个检测到的边角点预测一个嵌入式向量,这样如果一个左上角点和一个右下角点属于相同的边界框,那么他们之间的嵌入式向量距离应该很小。我们就能基于这个距离将其分为一组。嵌入式向量的实际值不重要,仅仅需要知道他们之间的距离。

我们使用一维的嵌入式向量,etk是目标k左上角点的嵌入式向量,ebk是右下角的。我们使用“pull”损失来训练网络组合边角点,用”push”损失来训练网络分离边角点。

image-20200929122835309

ek是etk和ebk的平均值,△=1。与偏移损失类似,我们只对ground-truth边角点位置应用该损失。

3.4 Corner Pooling

为了确定某个像素点是否是一个左上角点,我们需要在目标最顶部的边界水平向右看,在最底部的边界水平向左看来判断是否为右下角点。因此我们提出Corner Pooling来通过编码明确的先验知识,更好的定位边角点。

image-20200929122901224

image-20200929123252338

image-20200929122935161

3.5 Hourglass Network

CornerNet 采用沙漏网络作为backbone网络。沙漏网络首先被用于人类姿态估计任务。它是一个全卷积神经网络,由一到多个沙漏模块组成。一个沙漏网络首先通过一系列卷积核最大池化层,对输入特征图进行下采样。然后通过一系列上采样层和最大池化层,将特征上采样回原始分辨率。因为细节在最大池化层中丢失,添加skip层用于将细节加回已上采样的特征。沙漏网络在一个统一的结构中捕获所有局部和全局特征。当多个沙漏模块被堆叠到网络中,沙漏模块能重新处理特征,来捕获更高层级的信息。这些性质也使得沙漏网络成为目标检测的一个理想选择。

本文的沙漏网络由两个沙漏模块组成,并对沙漏模块的结构做了一些修改。

与Newell等人相同,我们也在训练中增加一个中间超视图。

image-20200929123004633

4. 实验

5. 结论

我们提出了一种新的目标检测方法,通过一组边角点来检测边界框。我们在MSCOCO数据集上评估CornerNet,证明了有竞争力的结果。