首发于Vision
RepPoints:可形变卷积的进阶

RepPoints:可形变卷积的进阶

一直以来都非常欣赏微软的研究,尤其是可形变卷积,这个工作在我看来非常的有创造力(很喜欢可形变卷积这个思路),这次借着RepPoints这篇最新的论文,回顾一下可形变卷积。

本文主要涉及DCNv1DCNv2RepPoints三篇文章,其中RepPoints可以认为是DCNv3。这三篇文章不断改进可形变卷积,提升模型的几何形变建模能力。

Review of DCNv1 and DCNv2

由尺度、姿态、视角和部分形变等因素引起的几何变化是目标识别和检测的主要挑战。在卷积/RoI池化模块中,DCN通过学习采样点的位置来得到几何形变建模的能力。

Deformable Convolution

由输入特征学习得到的偏移量来改变标准卷积的采样位置。

可形变卷积可以表示为:

y(p)=\sum_{k=1}^{K} w_{k} \cdot x\left(p+p_{k}+\Delta p_{k}\right)\\

给定一个有 K 个采样点的卷积核, w_{k} 表示为第 k 个采样点的权值, p_{k} 表示为第 k 个采样点预定义的偏移量(例如, K=9p_{k} \in\{(-1,-1),(-1,0), \ldots,(1,1)\} 定义了一个3x3的卷积核)。 x(p) 定义为输入特征位置 p 的特征, y(p) 定义为输出特征位置 p 的特征。 \Delta p_{k} 为卷积学习得到的第 k采样点的位置偏移量。因为 p+p_{k}+\Delta p_{k} 是小数,所以 x\left(p+p_{k}+\Delta p_{k}\right) 通过双线性插值得到。

PS:偏移量特征的分辨率与输入特征的分辨率相同,且通道数为采样点个数的两倍(即每个位置都有x和y两个方向的偏移量)。

Modulated Deformable Convolution

相比可形变卷积多了一个调制因子。

调制可形变卷积可以表示为:

y(p)=\sum_{k=1}^{K} w_{k} \cdot x\left(p+p_{k}+\Delta p_{k}\right) \cdot \Delta m_{k}\\

\Delta m_{k} 表示为第 k采样点的调制因子(范围在 [0,1] 之间)。

PS:调制因子特征的分辨率与输入特征的分辨率相同,且通道数为采样点的个数,加上偏移量特征后的通道数为采样点个数的三倍(即每个位置都有x和y两个方向的偏移量,还有一个调制因子)。

Deformable RoI Pooling

给定一个输入RoI,RoI pooling将它分成 K 个bins。首先通过RoI pooling得到池化后的feature maps,然后通过一个fc层产生归一化偏移量 \Delta \widehat{{p}}_{k} (该偏移量可以转化为 \Delta p_{k} )。

单个bin的输出特征可表示为:

y(k)=\sum_{j=1}^{n_{k}} x\left(p_{k j}+\Delta p_{k}\right)  / n_{k}\\

p_{k j} 表示为第 k 个bin的第 j 个采样点的位置, n_{k} 表示为第 k 个bin的采样点数量。 x\left(p_{k j}+\Delta p_{k}\right) 通过双线性插值得到。 \Delta p_{k} 为第 kbin的偏移量。

PS:fc层的输出为bin个数的两倍(即每个bin都有x和y两个方向的偏移量)。

Modulated Deformable RoI Pooling

带调制因子的单个bin的输出特征可表示为:

y(k)=\sum_{j=1}^{n_{k}} x\left(p_{k j}+\Delta p_{k}\right) \cdot \Delta m_{k} / n_{k}\\

\Delta m_{k} 为第 kbin的调制因子(范围在 [0,1] 之间)。

PS:有两个fc层,第二个fc层的输出为bin个数的三倍(即每个bin都有x和y两个方向的偏移量,还有一个调制因子)。

RepPoints

Motivation

在目标检测任务中,边界框描述了目标检测器各阶段的目标位置。

虽然边界框便于计算,但它们仅提供目标的粗略定位,并不完全拟合目标的形状和姿态。因此,从边界框的规则单元格中提取的特征可能会受到背景内容或前景区域的无效信息的严重影响。这可能导致特征质量降低,从而降低了目标检测的分类性能。

本文提出一种新的表示方法,称为 RepPoints,它提供了更细粒度的定位和更方便的分类。

如图所示,RepPoints 是一组,通过学习自适应地将自己置于目标之上,该方式限定了目标的空间范围,并且表示具有重要语义信息的局部区域。

RepPoints 的训练由目标定位和识别共同驱动的,因此,RepPoints 与 ground-truth 的边界框紧密相关,并引导检测器正确地分类目标。

Bounding Box Representation

边界框是一个4维表示,编码目标的空间位置,即 \mathcal{B}=(x, y, w, h)x, y 表示中心点, w, h 表示宽度和高度。

由于其使用简单方便,现代目标检测器严重依赖于边界框来表示检测 pipeline 中各个阶段的对象。

性能最优的目标检测器通常遵循一个 multi-stage 的识别范式,其中目标定位是逐步细化的。其中,目标表示的角色如下:

RepPoints

如前所述,4维边界框是目标位置的一个粗略表示。边界框表示只考虑目标的矩形空间范围,不考虑形状、姿态和语义上重要的局部区域的位置,这些可用于更好的定位和更好的目标特征提取。

为了克服上述限制,RepPoints 转而对一组自适应样本点进行建模:

\mathcal{R}=\left\{\left(x_{k}, y_{k}\right)\right\}_{k=1}^{n}\\

其中 n 为表示中使用的样本点的总数。在这项工作中, n 默认设置为 9。

Learning RepPoints

RepPoints 的学习是由目标定位损失和目标识别损失共同驱动的。为了计算目标定位损失,我们首先用一个转换函数 \mathcal{T} 将 RepPoints 转换为伪框 (pseudo box)。然后,计算转换后的伪框与 ground truth 边界框之间的差异。

RPDet

作者设计了一种不使用 anchor 的对象检测器,它利用 RepPoints 代替边界框作为目标的基本表示。

目标表示的演化过程如下:

RepPoints Detector (RPDet) 由两个基于可变形卷积的识别阶段构成,如图所示。

可变形卷积与 RepPoints 很好地结合在一起,因为它的卷积是在一组不规则分布的采样点上计算的,另外,它的分类可以指导训练这些点的定位。

上图的第一个偏移量通过对角点监督学习得到,第二个偏移量在前一个偏移量的基础上通过分类监督学习得到。

从另一个角度来理解RepPoints:

可形变卷积通过最后的分类分支和回归分支的监督,自适应的关注到合适的特征位置,提取更好的特征,但是我一直没想明白的是可形变卷积真的能够关注到合适的特征位置吗,可形变卷积的偏移量学习是非常自由的,可能会跑到远离目标的位置,那么这些特征真的是有帮助的吗,这些问题一直困扰着我,我觉得可形变卷积的中间过程太模糊了,太不直接了,是难以解释的。而RepPoints通过定位和分类的监督信号来直接监督偏移量的学习,这样偏移量不就有可解释性了吗,偏移的位置使得定位和分类更加准确(即偏移的位置可定位目标并且语义信息可识别目标),这样偏移量就不会乱跑了,而且是可解释的。

从这个角度来想,RepPoints其实是对可形变卷积进一步的改进,相比可形变卷积有两个优点

1.通过定位和分类的直接监督来学习可形变卷积的偏移量,使得偏移量具有可解释性。

2.可以通过采样点来直接生成伪框 (pseudo box),不需要另外学习边界框,并且分类和定位有联系。


Reference

1.Deformable Convolutional Networks

2.Deformable ConvNets v2: More Deformable, Better Results

3.RepPoints: Point Set Representation for Object Detection

4.孔涛:Deformable ConvNets v2 paper reading

5.北大、清华、微软联合提出RepPoints,比边界框更好用的目标检测方法


欢迎交流指正~~~

编辑于 2019-05-07

文章被以下专栏收录