ExtremeNet论文学习

2019-01-31  本文已影响0人  酸菜霉霉

论文地址:Bottom-up Object Detection by Grouping Extreme and Center Points
发表时间:2019.1.23
github:https://github.com/xingyizhou/ExtremeNet
这篇文章是由德克萨斯大学提出,号称是目前(2019-01-26)One-stage目标检测最强算法 ExtremeNet。

Abstract

随着深度学习的出现,目标检测从一个自底而上的问题发展到一个自上而下的识别问题。最先进的算法列举了一个几乎详尽的目标对象位置列表,并将每个位置分类为:目标对象或非目标对象。在本文中,我们展示了自底向上方法仍然具有竞争力。我们使用标准关键点估计网络检测对象的四个极点(最上面、最左边、最下面、最右边)和一个中心点。如果这五个关键点是几何对齐的,我们将它们分组到一个边界框中。因此,目标检测是一个纯粹的基于外观的关键点估计问题,没有区域分类和隐式特征学习。该方法的性能与最先进的基于区域检测方法相当,在COCO test-dev上的box AP为43:2%。此外,我们估计的极点直接生成一个粗糙的八边形掩模,在COCO上Mask AP为18:9%,比vanilla bbox的Mask AP要好得多。极点引导分割进一步改善这到34:6%的Mask AP。

1. Introduction

自上而下的算法目前在目标检测领域占据主导地位,常用的做法是将目标检测任务转化为矩形区域分类任务,如one stage检测和two stage检测。然而,矩形框(box)并不是一个比较好的对象表示,主要有一下三个缺点
① 大多数的目标对象不是轴对称的,它们的外接矩形框包含许多不必要的背景信息(图1);
② 自上而下的目标检测算法罗列了大量可能的矩形框位置,并没有真正理解目标图片的视觉语法信息;
③ 矩形框不能很好的表示目标对象,难以表示目标对象的细节信息(如形状和姿势)

图1

通过检测对象的四个极点(最上、最左,最底、最右),本文提出了一种自底而上的目标检测框架ExtremeNet。ExtremeNet使用最新的关键点检测框架,通过预测每个对象类别的4个peak heatmaps来找到极点,通过每个类别的一个center heatmap来预测对象中心,作为x维和y维上两个box的边缘平均值。然后,用基于几何的方式将极点分组到具体对象中。四个极点每个对应一个heatmap,当且仅当它们的几何中心已被预测在center heatmap上,且得分高于预定义的阈值时才会被分组到同一对象上。论文罗列了极点的所有O(n4)组合,并选择有效的那个(极点数n通常比较小),如图2.

图2

本文不是第一个提出使用深度关键点预测来进行目标检测任务的,CornerNet就提出了预测矩形框的两个角点corner(左上和右下),并使用associative embedding feature将角点组合到相应的矩形框中。本文是受到Papadopoulos等人[33]的启发,他们提出通过单击四个极点来标注边界框,这个标注收集信息的速度大约是边框的四倍,并且提供了比边框更丰富的信息。本文与CornerNet有两点不同:

1.关键点定义
CornerNet预测bbox的左上右下一对角点,是另一种形式的矩形框,存在自顶向下检测算法所面临的的一些问题。另角点经常落在对象外部,没有足够的对象特征。ExtremeNet的极点在对象上,是视觉可分的,有一致的局部外观特征(如人的最上面的是头)。

2.关键点组合
CornerNet的角点是几何组合。ExtremeNet是完全基于外观的特征的组合,无需学习任何复杂的特征。

另外,极点与目标掩码object masks有紧密的联系,与矩形框相比,直接连接极点提供了更细粒度的对象掩码信息。本文实验证明,将一个简单的八边形拟合到极值点可以得到一个很好的目标掩码估计。本文可以进一步与DeepExtremeCut结合,将极点标注转换为指定对象的分割掩码。直接将本文的极点预测作为对DeepExtremeCut[29]的指导,可以得到接近最先进的实例分割结果。

2. Related Work

Two-stage object detectors。two-stage检测算法分为两步:一是生成大量未知类别的候选bbox并裁剪;二是使用图片分类模块对裁剪区域特征进行分类。detection-by-classification的思想是很直观的,到目前为止一直保持最好的效果。

one-stage object detections。one-stage检测算法可看作是类别明确的区域或anchor建议网络,并直接为每个anchor分配一个类别标签。ExtremeNet属于one-stage检测方法。ExtremeNet不是在O(h2w2)空间中设置anchor,而是检测O(hw)空间中框的五个点。ExtremeNet只预测每个像素位置作为关键点的概率,而不是在每个像素位置设置默认大小和比例的anchor。center heatmap可以看做不回归矩形框的大小比例不可知的区域建议网络。

Deformable Part Model。作为自底而上的检测方法,本文组合极点和中心点的思想和Deformable Part Model有关。

Grouping in bottom-up human pose estimation。在自底向上的多人姿势估计算法中,找到哪些点属于同一个人是很重要的。目前有很多方法,比如学习每个点的关联特征、学习位关键点投射人类骨骼树上的父关节,作为每个关键点的二维特征、学习了作为相对于对象中心的偏移量的特征等。相比这些算法,本文利用极点和中心点的几何结构进行分组,仅仅基于外观特征,很容易学习。

Implicit keypoint detection。流行的关键点检测方法适用于定义良好的语义关键点,例如人类关节。StarMap[53]使用单个heatmap混合所有类型的关键点进行一般关键点检测。极值点和中心点是一种一般的隐式关键点,但具有更显式的几何性质。

3. Preliminaries(预热)

Extreme and center points。常见做法会用左上和右下两点标注矩形框。由于两个角点经常位于对象外部,这会导致效果不准确,并且需要多次调整,整个过程平均花费时间较长。本文则直接用极点代替矩形框。若四个极点为((x^t,y^t),(x^i,y^i),(x^b,y^b),(x^r,y^r)),则中心点为:
(\frac{x^l+x^r}{2}, \frac{y^t+y^b}{2})

Keypoint detection。目前效果最好的关键点估计网络是104层的HourglassNetwork,该网络采用完全卷积的方式进行训练。HourglassNetwork为每个输出通道回归一个宽为W、高为H的heatmap:
\hat{Y}\in (0,1)^{HW}
训练时的label为多峰高斯热图multi-peak Gaussian heatmap Y,其中每个关键点定义高斯核的平均值。标准差要么是固定的,要么与对象大小成正比。高斯热图在L2 loss的情况下会作为回归目标,在逻辑回归的情况下作为weight map来减少正样本点附近像素点的惩罚。

CornetNetCornerNet使用HourglassNetwork作为检测器进行关键点估计,为矩形框的两个角点预测两套热图。为了平衡正样本点和负样本点,CornerNetwork在训练时使用了修正的focal loss
{L}_{det}=\frac{1}{N}\sum_{i=1}^{H}\sum_{j=1}^{W}\left\{\begin{matrix} {{(1-\hat {Y}_{ij})^\alpha log({\hat {Y}}_{ij})}, Y_{ij}=1} \\{(1-Y_{ij})^\beta ({\hat Y}_{ij})^\alpha log(1-{\hat {Y}}_{ij}), otherwise} \end{matrix}\right.

其中α和β是超参数,训练期间固定α=2、β=4,N是图片中对象的数量。
为了极点的sub-pixel准确度,CornerNetwork为每个角点回归了类别未知的关键点偏移量△(α)。这个回归过程恢复了HourglassNetwork下采样过程中丢失的信息。The offset map is trained with smooth L1 Loss [11] SL1 on ground truth extreme point locations:
{L}_off=\frac{1}{N}\sum_{k=1}^{N}SL_1(\Delta ^{\alpha},\frac{\vec x}{s}-\left \lfloor {\frac{\vec x}{s}} \right \rfloor)

其中,s是下采样因子(HourglassNetwork的s=4),\vec{x}为关键点坐标。
接着,CornerNet使用关联特征将角点分组,本文沿用了CornerNet的网络架构和loss,但没有沿用关联特征。

Deep Extreme Cut。DeepExtremeCut (DEXTRE)是一种基于极点的图像分割算法,该算法取了四个极点并裁剪这四个极点组成的矩形框的图片区域作为输入,利用语义分割网络对相应对象进行类别不确定的前景分割。DeepExtremeCut学习了匹配输入极点的分割掩码。

4. ExtremeNet for Object detection

ExtremeNet采用HourglassNetwork检测每个类别的5个关键点(四个极点、一个中心点),沿用了CornerNet训练配置、loss和偏移量预测部分。偏移量预测部分是类别未知的,但极点是类别明确的。偏移量预测是针对极点的,中心点是没有偏移量预测的。ExtremeNet网络输出5xC个heatmaps和4x2个偏移量maps(如图3),其中C是类别数量。一旦极点明确了,网络就用几何的方式将他们分组到检测中。

图3

4.1. Center Grouping

极点位于对象不同的边上,这使得组合变得比较复杂,比如关联特征没有足够的全局特征来分组关键点。本文通过利用极点的扩散性,提出了一个不同的分组方法。

本文分组算法的输入是每个类别的五个heatmaps:一个中心heatmap和上下左右四个极点。已知一个heatmap,本文通过检测所有的峰值点来抽取相应的关键点。一个峰值点是值大于\tau _p的任意像素点,在周围的3x3像素窗口是局部最大值,这个过程叫做ExtrectPeak

已知从热力图\hat Y^{(t)},\hat Y^{(l)},\hat Y^{(b)},\hat Y^{(r)}中抽取的四个极点t, b, r, l,可计算出几何中心c=(\frac{l_x+r_x}{2}, \frac{t_y+b_y}{2})。如果中心点c被预测在center map\hat Y^{(c)}中,且分数较高,则认为这四个极点是一个有效检测:\hat Y_{c_x,c_y}^{(c)} \geq \tau _c(\tau _c为阈值)。接着,以暴力方式罗列出所有的关键点t, b, r, l,分别从每一类中抽取检测。如图4,实验中设置\tau_p=0.1, \tau_c=0.1

上述的暴力分组算法时间复杂度为O(n^4),其中n为每个基础方向抽取的极点数量。补充的材料中提出一种比我们更快的时间复杂度为O(n^2)的算法,然而很难在GPU上加速,且当n=40时在MS COCO数据集上的效果比我们的算法要慢。

图4

4.2. Ghost box suppression

中心点分组可能对相同大小的三个等间距共线对象给出高置信度的false-positive检测。这里位于中间的对象有两个选择,检测出正确的小框,或预测一个包含相邻对象极点的比较大的框,这些false-positive检测被称作ghost boxes。在我们的实验中,这些ghost boxes是不常见的,但却是我们分组中的唯一错误类型。

我们提出了一种简单的后处理方法来相处ghost boxes。根据定义一个ghost box包含许多其他小的检测对象,我们采用soft nms解决这个问题。若某个box所包含的所有框的分数总和大于其自身的3倍,则最终分数除以2。soft nms类似于标准的基于重叠的nms,但惩罚的是ghost boxes,而不是重叠的boxes。

4.3. Edge aggregation

极点不总是唯一定义的,若极点来自物体的垂直或水平边(如汽车顶部),则沿边缘任何一点都可被认为是极点。因此我们的网络在对象的任一对齐边上产生弱响应,而不是单一的强峰值响应。这种弱响应存在两个问题:①弱响应可能低于峰值选择阈值,将完全错过极点;②即使检测到关键点,它的分值也低于一个轻微旋转对象的强峰值响应。

我们使用边缘聚合来解决这个问题。对于每个提取为局部最大值的极点,我们在垂直方向(左右极点)或水平方向(顶部和底部极点)汇总其得分。然后对所有单调递减的分数进行聚合,并在聚合方向上的局部最小值处停止聚合。特别地,使m为极点,N_i^{(m)}=\hat Y_{m_xi,m_y}为该点的垂直或水平线段。若i_0<0, i_1>0,则两个最近的局部最小值为N_{i_0}^{(m)}N_{i_1}^{(m)},其中N_{i_0-1}^{(m)}>N_{i_0}^{(m)},N_{i_1}^{(m)}<N_{i_1+1}^{(m)}。边缘聚合更新关键点的值为\tilde Y_m=\hat Y_m+\lambda_aggr \sum_{i=i_0}^{i_1}N_i^{(m)},其中\lambda_aggr是聚合权重。在我们的实验中,设置\lambda_aggr=0.1,如图5.

图5

4.4. Extreme Instance Segmentation

极点相比简单的边界框携带更多的关于对象的信息,其标注值至少是极值的两倍(8 vs 4)。我们提出一种使用极值点来近似对象掩码的简单方法,方法是创建一个以极值点为中心的八边形。具体地说,对于一个极值点,我们在其对应的边的两个方向上将其扩展到整个边长度的1/4的一段。当它遇到一个角点时,线段被截断。然后我们把这四个部分的端点连接起来形成八边形

为了进一步细化边界框分割,我们使用了DeepExtremeCut[29],这是一个经过训练的深度网络,可以将手动提供的极点转换为实例分割掩码。在本工作中,我们简单地将DeepExtremeCut[29]的手工输入替换为极点预测,执行2个阶段的实例分割。具体地说,对于预测的每个边界框,需要裁剪边界框区域,使用预测的极值点绘制高斯图,然后将串联的图像提供给预先训练的DeepExtremeCut模型。DeepExtremeCut[29]是类别未知的,因此我们直接使用检测到的类别和ExtremeNet的得分,没有进一步的后处理。

5. Experiments

作者在MS COCO上做实验进行算法评估。

5.1. Extreme point annotations

在COCO数据集中没有直接的极点标注,不过对于对象分割掩码有完整的标注,因此,可以在多边形掩码标注中找到作为极值点的极点。如果多边形的一条边平行于轴,或者有小于3^。的误差,边缘的中点则为中心点。

5.2. Training details

本文是基于CornerNet实现的,沿用了CornerNet的超参数:
1)输入和输出分辨率分别为511x511、128x128;
2)数据增强使用了翻转、0.6到1.3的随机缩放、随机裁剪和随机颜色抖动;
3)使用Adam优化方式,学习率为2.5e-4;
4)CornerNet在10个GPU上训练了500k次迭代,相当于在一个GPU上训练140天。考虑到GPU资源的限制,作者在CornerNet预训练模型上微调网络,随机初始化head layers,在5个GPU上迭代250k次,batch size设为24,在200k次迭代时学习率缩降10倍。

5.3. Testing details

对于每个输入图像,网络为极点生成4个c通道的heatmaps,为中心点生成1个c通道heatmap,以及4个2通道的offset maps。本文将边缘聚合应用于每个极点的heatmap,并将中心点的heatmap乘以2,以修正整体尺度变化。然后将中心分组算法应用于heatmap,在ExtrectPeak中最多提取40个top点,以保持枚举效率。通过在offset maps的相应位置添加偏移量,以细化预测的边界框坐标。

与CornerNet一样,输入图片分辨率可以不同,不会resize到固定大小。测试时数据增强方式为图片翻转,在本文实验中,额外使用了5个多尺度(0.5,0.75,1,1.25,1.5)增强。最后,使用soft-NMS过滤检测结果。测试时,一张图片耗时322ms,其中网络前向传播耗时13ms,分组耗时150ms,剩余时间消耗在NMS后处理上。

5.5. Stateoftheart comparisons

图6为ExtremeNet和目前比较好的方法在COCO test-dev上的对比结果。
ExtremeNet在小目标和大小居中的目标上的效果比CornerNet要好,对于大目标,中心点响应图不够精确,这是因为几个像素的移动可能就会造成检测和false-negative之间的差异。

图6

结论

极点和分组的思想很新颖,但是大目标检测效果不够准确,且效率太低。

上一篇下一篇

猜你喜欢

热点阅读