本文最后更新于:2020年10月17日 早上

最近主要阅读了两篇基于KeyPoint的目标检测论文:CenterNet和ExtremeNet,和一篇用卷积神经网络预测光流场的论文:FlowNet。

阅读文献:

[1] Duan K, Bai S, Xie L, et al. Centernet: Keypoint triplets for object detection[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 6569-6578.

[2] Zhou X, Zhuo J, Krahenbuhl P. Bottom-up object detection by grouping extreme and center points[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 850-859.

[3] Dosovitskiy A, Fischer P, Ilg E, et al. Flownet: Learning optical flow with convolutional networks[C]//Proceedings of the IEEE international conference on computer vision. 2015: 2758-2766.

1.CenterNet

目标检测中基于关键点的方法通常会遇到大量不正确的边界框,可能是由于缺乏对被裁减掉区域的关注。本文探索了在每个被裁减的区域的视觉模式,提出了一个One-stage的关键点检测器,名为CenterNet。CenterNet将目标当做三个关键点来检测:左上角、右下角和中心点。此外文章提出了两个定制模型:Cascade corner pooling、Center pooling,用以增强左上角和右下角边角点收集到的信息、在中心区域提供更多可识别的信息。

CornerNet的性能受限于其对目标全局信息的提取能力较弱,因为CornerNet通过一对边角点来构造一个目标,导致算法对目标边界敏感,不知道哪一对边角点应被分为同一组。为了解决这一问题,作者对CornerNet做了改进,为其赋予了在每个提议区域内感知视觉模式的能力,使其能自己判断每个边界框的正确性。

在推理过程中,当用一对边角点生成一个proposal后,CenterNet通过检查是否有一个相同类的中心关键点落在该proposal的中心区域,来判断该proposal是否确实包含一个目标。

CenterNet

以CornerNet为基线,在CornerNet的基础上增加了一个分支,用于预测中心关键点的偏移。首先使用CornerNet的方法生成top-k个边界框,通过以下步骤利用检测到的中心关键点滤除不正确的边界框:

(1) 根据评分选择前k个中心关键点。

(2) 使用相应的偏移将中心关键点映射回输入图像。

(3) 为每个检测到的边界框定义一个中心区域,并检查中心区域是否包含相同类的中心关键点。

(4) 若中心区域有相同类的中心关键点,则保留该边界框。边界框的评分为左上角、中心点、右下角分数的平均值。若中心区域没有中心关键点,则丢弃该边界框。

img

中心区域的尺寸选择会影响检测结果,较小的中心区域会导致小边界框低召回率,较大的中心区域导致大边界框低精确率。因此,作者提出了一种根据边界框尺寸,自动调整中心区域大小的方法:scale-aware central region。该方法旨在为较小的边界框生成较大的中心区域,为较大的边界框生成较小的中心区域。

img

Center Pooling

用于预测中心关键点的分支,帮助中心关键点包含更多可识别的目标视觉模式,使其更容易察觉proposal的中心部分。通过在特征图上求出中心关键点的水平和垂直方向上的最大响应总和来预测中心关键点。

目标的几何中心通常没有传达可识别的视觉模式,为解决这一问题,作者提出center pooling来捕捉更丰富、更可识别的视觉模式。首先使用backbone输出特征图,然后在水平和垂直方向上查找最大值,并将其加在一起,进而决定特征图的某个像素点是否是中心关键点。

img

图(a)展示了Center Pooling的结构,为了得到水平方向上的最大值,只需将Left Pooling和Right Pooling连接在一起;为了得到垂直方向上的最大值,只需将Top Pooling和Bottom Pooling连接在一起。图(b)展示了Cascade Top Corner Pooling的结构,在Top Pooling之前,增加了一个Left Corner Pooling。

Cascade Corner Pooling

边角点通常在目标之外,缺乏局部表观特征,Corner Pooling通过寻找边界方向上的最大值来寻找边角点,然而,这样使得边角点对边缘过于敏感。因此需要边角点“看见”目标的视觉模式。Cascade Corner Pooling为Corner pooling添加了察觉内部信息的能力。通过在用于预测边角点的特征图上,求边界和内部方向上的最大值之和来实现。首先沿着边界查找边界最大值,然后沿着边界最大值的位置查找内部最大值。(最顶部的竖直向下朝着底部查找,最左边的水平向右查找,最右边的水平向左查找,最下面的竖直向上查找)

总结:

CenterNet使用一个三联组来检测目标,包括:一个中心点和两个边角点。CenterNet针对CornerNet过度关注边缘信息的缺点,增加了对目标中心点的检测,帮助更好的筛选候选框。

创新点:

CenterNet在top-left和bottom-right两条分支的基础上,新增了一条没有embeddings的分支,用于预测特征图上每个位置是中心点的概率。找出中心点后,看中心区域里面有没有中心点,如果有就检测成功,否则就失败;通过这一思路可以有力地筛去误检。

2.ExtremeNet

随着深度学习的进步,目标检测从自底向上发展为为自顶向下的识别问题。本文展示了自底向上的方法仍然有竞争力,使用标准关键点检测网络,检测目标的四个极点(最顶部、最左、最右、最低部)和一个中心点。使用纯几何方式将四个极点分为一组。这样,目标检测变为纯粹的基于表观的关键点估计问题,而不是区域分类或盲目的特征学习。

作者认为矩形边界框不是一种自然地表示目标的方法,因为许多目标没有与坐标轴对其的框,若将其拟合为一个矩形框就会包含许多背景干扰像素点。并且矩形框没有传达目标形状和姿势等细节信息。

本文提出了一种自底向上的目标检测框架:ExtremeNet,使用最新的关键点估计框架,为每个目标类别预测四张多峰值的热图,来寻找目标的四个极点。此外,为每个类别使用一张热图来预测目标中心。最后使用纯几何的方法来将四个极点分为一组:当且仅当四个极点的几何中心在中心热图的预测值高于一个预定义的阈值时,将其分为一组。

img

与CornerNet的不同:

ExtremeNet和CornerNet都是基于关键点的目标检测方法,但ExtremeNet与CornerNet有两个不同:关键点定义和分组。首先,关键点定义不同:CornerNet的边角点通常在目标之外,没有很强的表观特征,而ExtremeNet的极点在目标之上,是视觉可分的,并且与局部表观特征一致。其次,ExtremeNet使用几何方法为关键点分组,而CornerNet使用一个嵌入式向量。

网络框架:

使用Hourglass网络来为每个类检测五个关键点(四个极点、一个中心点),训练设置、损失和偏移预测都与CornerNet相同(没有为中心热图预测偏移)。网络的输出为5XC张热图和4X2张偏移图。(C为类别数)

img

Center Grouping:

一旦极点被提取出来,使用纯几何的方法将其归为一组。因为极点通常在目标的不同侧,使得将其归为一组变得复杂。联合嵌入方法[30]可能没有一个足够全局的视角来为其分组。本文提出的分组算法的输入为五张热图,对于每张热图首先根据峰值提取对应的关键点。然后采用穷举方法,根据从四张热图中提取的四个极点,计算其几何中心点。若该几何中心点在中心热图上的响应大于某个阈值,就用这四个极点生成一个边界框,评分为五张热图的均值。

img

Ghost box suppression:

当出现3个连续的目标在一排或者在一列的时候,容易出现鬼影问题,比如,3个一排,如果选择了最左边的最左点,最右边的最右点,这样在判断中心的时候,可能选择了中间目标的中心点,这样这个大box也就被保留下来了,出现了误判,怎么解决这个问题呢?作者选择了一种后处理的方法:soft non-maxima suppression来减少ghost box。如果一个大框中,包含了多个目标(大于等于3个)就将该目标的得分除以2,通过这种方法来一定程度的抑制误检的出现。

Edge aggregation:

由于极点的定义不唯一,例如目标的水平或垂直边界上的任何一个点都有可能被当做极点。因此该网络对任何排成一行的目标边界有较弱的响应,而非较强的单峰值响应。作者使用Edge aggregation(边缘聚类)来解决该问题,为每个极点提取局部最大值,对水平与竖直方向的极值点,分别向左右或上下两个方向聚类到极小值点。将第一个单调下降区间的点的score的和按一定权重累加到原极值点上,代替该极值点的分数。

img

Extreme Instance Segmentation:

作者提出了一个简单的方法来构建近似的目标mask:使用一个边界线的中心点为极点的八边形来近似表示目标。作者使用Deep Extreme Cut(DEXTR)进一步改进边界框分割。

总结:

本文提出了一种基于自底向上极点估计的目标检测框架,提取四个极值点并用几何方法将其归为一组,根据提取到的极值点生成八边形mask,在目标检测和实例分割上均取得了较好的效果。

3.FlowNet

CNN已经在多种计算机视觉任务上取得成功,但还没有成功应用于预测光流。光流估计需要精确的逐像素定位,同时需要找到两张输入图像之间的对应。这不仅涉及图像特征表达,而且要学习匹配两张图片不同位置的特征。本文使用CNN有监督学习,解决了光流估计问题。提出了两种架构:FlowNetSimple和FlowNetCorr,前者更为通用,后者包含了一层从不同图像位置收集特征向量的网络层。

本文与此前方法的最大不同是直接预测整个光流场。该网络结构受到逐像素预测任务的启发,如滑动窗口法虽然比较有效但计算量巨大,并且不能提取全局输出特征(如锋利的边缘),另一种是上采样特征图至全分辨率,可用于预测兴趣区域的像素值。本文不仅对粗糙预测进行上卷积,而且对整个粗糙特征图进行上卷积,使其能提取更高级别的信息来更好的预测。在网络的收缩部分将上卷积的结果与特征图联系起来。

卷积神经网络善于在给出大量标记数据时预测输入输出关系,因此作者使用一个端到端的学习方法来预测光流:给出一个包含一对图像和真实的光流,训练网络来直接从图像预测x-y光流场。为了实现这个目标,该如何设计网络结构呢?

img

FlowNetSimple:

一个简单的选择是将输入图像堆叠在一起,喂给一个普通的网络,使其自己决定自己该如何处理这一对图片来提取移动信息。作者将这种仅由卷积层构成的网络结构称为“FlowNetSimple”。但是这种结构不能保证使用局部梯度优化(如随机梯度下降)能使网络收敛。

FlowNetCorr:

因此,需要手工设计一个特殊的网络:为两张输入图像创建两个相互独立,但具有相同处理流程的结构,在之后的步骤中再将其合并。使用这种结构,可以强迫网络首先独立的处理两张图片有意义的表示,然后在更高的等级将其合并。类似于使用标准匹配方法从两张图像的块中首次提取特征,在给出两张图像的特征表示后,如何找到其相关性呢?作者介绍了一个“correlation layer”来帮助网络在匹配过程中,在两张特征图间执行多块对比。作者将包含了”correlation layer”的网络结构称为“FlowNetCorr”。

Refinement:

由于池化操作导致分辨率减小,作者采用上卷积层(包括上采样和卷积)来优化粗糙的池化表示,以提供密集的逐像素预测。具体是在特征图上应用上卷积层,将其与网络收缩部分的相应特征图和一个上采样的粗糙光流预测连接起来。使用这种方法能同时保留粗特征图提供的高等级信息和低级特征图提供的精细局部信息。重复这一过程4次,每次增加2倍分辨率,最终的光流分辨率仍然比原图小4倍。作者发现更一步使用该方法不能显著提高效果,最终选用variation approach作为替代方案,该方案虽然需要更多的计算量,但可以得到平滑、子像素精确的光流场。

img

此外,作者构建了一个合成数据集“Flying Chairs”(对3D椅子模型进行仿射变换得到),为网络提供高了泛化能力。在训练过程中采用了数据增强方法来避免过拟合(包括平移、旋转、缩放、增加高斯噪声、改变亮度、对比度、伽马值、颜色)。

EPE(Endpoint Error),是光流估计中标准的误差度量,是预测光流向量与真实光流向量的欧氏距离在所有像素上的均值。

总结:

优点:

  • 实现了用卷积神经网络从两张输入图片直接预测光流
  • 在非真实的Flying Chairs数据集上训练的网络在真实光流数据集上也表现良好,击败了LDOF方法。
  • FlowNet能保留更多细节信息。
  • 人工合成的Flying Chairs数据集提高了网络的泛化能力。

缺点:

  • FlowNetC更容易过拟合。
  • EPE比EpicFlow高,说明准确率比EpicFlow低