相关链接

论文地址:https://arxiv.org/abs/1901.08043

论文代码:https://github.com/xingyizhou/ExtremeNet

概述

ExtremeNet是今年(2019)1月23号挂在arxiv上的目标检测论文,是至今为止检测效果最好的单阶段目标检测算法。思想借鉴CornerNet,使用标准的关键点估计网络检测目标关键点进而构造目标的预测框。ExtremeNet预测四个extreme point(顶、左、底、右)以及目标的中心点,如果这五个点满足几何对齐关系,就将其组合成一个目标框。ExtremeNet在COCO test-dev上的AP达到43.2%。此外,根据extreme point还可以得到更加精细的八边形分割估计结果,在COCO Mask上的AP达到34.6%。

ExtremeNet介绍

ExtremeNet是一个自底向上的目标检测框架,检测目标的四个极值点(顶端、左端、底端、右端),使用state-of-the-art的关键点估计框架产生每个类别的五个Heatmaps(四个极值点和一个中心点)。使用纯几何方法组合同一目标的极值点:四个极值点的几何中心与预测的中心点heatmap匹配且高于阈值(暴力枚举,时间复杂度O(n^4),不过n一般非常小)。

论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points-LMLPHP

图2 展示了算法的大致流程。首先产生四个预测极值点的heatmap(图2顶部)和一个预测中心点的heatmap(图2左下),提取极值点heatmap的峰值(图2中左),暴力枚举所有组合,计算几何中心(图2中右),如果几何中心与中心heatmap高度匹配,则接受该组合,否则拒绝(图2右下)。

该算法与CornerNet的区别在于关键点定义和组合。(1)CornerNet采用左上和右下角点,角点往往不在目标上,没有较强的外观特征;而ExtremeNet采用极值点,极值点在目标上,容易区分且具有一致的局部外观特征。(2)CornerNet点对组合是根据embedding vector的距离,而ExtremeNet则是根据几何中心点。ExtremeNet完全基于外观,没有任何的隐特征学习。

网络结构

网络结构如下图所示:

论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points-LMLPHP

ExtremeNet使用Hourglass网络作为backbone,产生4个C通道、大小为H*W的heatmaps,一个C通道、大小为H*W的heatmap,以及4个2通道、大小为H*W的偏移map。Heatmaps通过加权逐像素逻辑回归进行训练,其中权重用于减少在ground-truth位置附近的假阳性惩罚(详见CornerNet)。四个极值点的估计使用了CornerNet的结构和损失函数,不过没有使用embedding部分。

focal loss的变体来处理heatmap损失:

论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points-LMLPHP

其中,pcij是类别c在位置(i, j)的score,ycij是非标准化高斯增强的ground-truth,N是图像中目标数,α和β是超参数(实验中α设为2,β 设为4)。

Offsets则是位置偏移。下采样的使用使得输出尺寸小于原始图像尺寸,假设下采样因子为n,则图像中(x, y)映射到Heatmaps的([x/n], [y/n])。取整计算会导致精度丢失,使用offsets来更准确地进行Heatmaps到输入图像的映射。

论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points-LMLPHP

训练过程中使用smooth L1损失,即:

论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points-LMLPHP

训练设置、损失函数以及offset预测与CornerNet相同。

Center grouping算法如下:

论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points-LMLPHP

ExtractPeak就是给定一个heatmap,检测其中所有的峰值来提取相应的关键点。峰值就是3*3窗口中的局部最大值。预设阈值进行筛选。暴力枚举所有组合,计算几何中心,如果其在中心点的heatmap上有高响应则接受结果,得分为五个heatmap的平均值。阈值设置τp=0.1,τc=0.1。

Center grouping算法可能会出现这样的情况:处理三个共线且尺度相同的目标时,是产生三个正确的小框还是一个错误的大框呢?这种假阳性的检测结果称为“ghost box”。文中使用一种soft NMS来抑制ghost box:如果某个边框中包含的所有框的分数之和超过其本身得分的3倍,则将其得分除以2。

此外,极值点并非总是唯一的,比如一个汽车的极值点可能是水平或竖直的线段,文中极值点的响应是对边缘多个点的弱响应而不是一个点的强响应。这有可能产生几个问题:弱响应可能会被忽略;目标如果发生轻微旋转即便检测到关键点,得分也有很大差异。作者采用边缘聚集的方法来解决:对于每个极值点(局部最大值点),分别沿水平和垂直两个方向进行聚集,也就是在每个方向上找极值点最近的左右两个局部最小值,在区间内做加权和作为极值点的得分。公式如下所示:

论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points-LMLPHP

其中,m为极值点位置,i0、i1分别为距离m最近的两个局部最小值。

如下图所示,使用边缘聚集策略后,边缘中心的像素点的置信度明显提升:

论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points-LMLPHP

实例分割

文中提出了一个简单的八边形逼近目标的方法(基于四个极值点形成的矩形边界框):将一个极值点左右各延长1/8形成线段,如果遇到矩形框的角时则截断。将这四个线段的端点连接起来,形成八边形。

实验

在COCO数据集上进行实验,如果一条边与坐标轴平行或者夹角小于3度,就将其中心作为极值点。从头训练太耗时,使用了CornerNet的预训练模型进行finetune。

细节:最多只取ExtractPeak 中top40的点进行枚举;测试阶段使用flip argumentation策略;对增强的检测结果使用soft NMS。检测速度3.1fps。

在COCO数据集上的检测结果:

论文阅读 | ExtremeNet:Bottom-up Object Detection by Grouping Extreme and Center Points-LMLPHP

由上表可见,ExtremeNet多尺度模型的效果达到目前单阶段算法的最佳AP(43.2%),比CornerNet提升1.1%;而单尺度模型的AP比CornerNet低了0.4%,在中、小目标的检测上AP都高于CornerNet,而大目标检测略差,可能原因是中心点的response map不够准确造成的。

在实例分割方面,ExtremeNet与DeepExtremeCut结合,在COCO val2017上达到34.6%的AP,而当前最先进的Mask RCNN的AP为34.0%(基于ResNet-50+FPN)、37.5%(基于ResNeXt-101+FPN)。在实例分割方面也与最先进的方法相当。

05-11 21:47