CornerNet: Detecting Objects as Paired Keypoints
简述:
本文提出了CornerNet,这是一种新的对象检测方法,我们使用一个单一的卷积神经网络将一个对象边界框检测为一对关键点,即左上角和右下角。以往的网络框架都离不开anchor boxes,本实验在所有one-stage detectors中用MS COCO 数据集上表现出了最好的效果。

问题or相关工作:

目前最先进的算法是anchor boxes,但是它存在两个缺陷,一是anchor boxes需要非常大的尺寸,二是它需要许多超参数和设计选择,会使系统变得越发复杂。

本文提出了两点创新,1文章的大致思路为:将一个对象检测为一对组合在一起的边界框角。卷积网络输出所有左上角的热图,所有右下角的热图,以及每个检测到的角的嵌入向量,然后对不同目标的左上图和右下图分别归类。该网络被训练来预测属于同一物体的角的相似嵌入。如下图:

目标检测准确召回_目标检测准确召回


2.提出了corner pooling这一池化操作,为了确定左上角和右下角,以左上角为例,要确定一个像素位置是否存在左上角,我们需要水平地向右查看对象的最顶部边界,垂直地向底部查看最左侧边界。corner pooling就是接受两个功能图;在每个像素位置上,它将第一个特征图右侧的所有特征向量集合起来,将第二个特征图下方的所有特征向量集合起来,然后将两个集合的结果相加。

目标检测准确召回_目标检测准确召回_02


corner pooling:对于每个通道,我们取两个方向上的最大值(红点)(红线),每个都来自一个单独的feature map,然后将两个最大值相加(蓝点)。模型:

下图为提出的CornerNet。骨干网络为沙漏网络(Hourglass Network),其后有两个预测模块,卷积网络预测两组热图来表示不同对象类别的角的位置一个用于左上角,另一个用于右下角。利用来自两个模块的预测,我们定位和分组角落。该网络还预测每个被检测到的物体的嵌入向量,这样两个角到同一物体的嵌入距离就很小。

目标检测准确召回_目标检测准确召回_03


1.Detecting Corners用以生成Headmaps,找出图中所有目标的左上和右下点。

2.Grouping Corners用以Embedding,,将不同的左上、右下点进行分类处理,主要的方法是运用Newell等人提出的人体姿态估计的方法,该网络预测每个检测到的角的嵌入向量,这样,如果一个左上角和一个右下角属于同一边界框,它们之间的嵌入距离应该很小。使用“pull”损失来训练网络将各个角落分组,使用“push”损失来分离各个角落。

目标检测准确召回_图像处理_04


2.Offsets用以求出Smooth L1 Loss偏移量。使用Adam来优化全局Loss如下:其中α,β和γ的权重,分别为pull loss , push loss and offset loss。

目标检测准确召回_卷积网络_05


3.corner pooling用以检测边界,上,左边界加和,得左上角点。

目标检测准确召回_图像处理_06


top-left corner pooling可以非常有效地实现。我们从左到右扫描水平最大池,从下到上扫描垂直最大池。然后添加两个最大池功能映射,加和求出左上角点。但是,个人认为应该在corner pooling前先预测出不同物体的大致区域,因为corner pooling有一个严重的缺陷就是如果对全局进行这种操作,右下的图像有可能会影响其他图像的左上角点判断,同理,左上的图像可能会影响其他图像的右下角点判断。

以top-left为例,将CornerNet细分为下图,可以看出 corner pooling 在全局中的位置

目标检测准确召回_目标检测准确召回_07

成果:

1.测试比对

绿框为真实物体边框,红框为应用CornerNet的测试结果,图中橘色圆圈为测试中定位物体左上角和右下角的结果,可以看出,测试边框与真实边框几乎一致。

目标检测准确召回_目标检测准确召回_08


2.AP指标:

目标检测准确召回_目标检测_09


目标检测准确召回_目标检测_10


目标检测准确召回_深度学习_11


目标检测准确召回_目标检测准确召回_12


其中,在目标检测中,我们常用AP和mAP来评价模型的好坏,P是指average precision,平均精确率,即多类预测的时候每一类的precision取平均,类似地还有AR,平均召回率。以Cascade R-CNN的一张图为例,AP50,AP60,AP70……等等指的是取detector的IoU阈值大于0.5,大于0.6,大于0.7……等等。可以看到数值越高,精确率越低,表明越难。