参考文献:https://arxiv.org/abs/1703.06211
代码实现:https://github.com/msracver/Deformable-ConvNets
包括理解!
卷积神经网络(CNNs)由于其构建模块中固定的几何结构,导致模型的几何变换存在局限性。在这项工作中,我们引入了两个新的模块来增强CNNs的转换建模能力,即可变形卷积和可变形RoI pooling。这两种方法的思想都是在不需要额外监控的情况下,使用附加偏移量来增加模块中的空间采样位置,并从目标任务中学习偏移量。新模块可以很容易地取代现有CNN中的普通模块,并且可以通过标准的反向传播进行端到端的简单训练,从而产生可变形卷积网络。大量实验验证了该方法在复杂的目标检测和图像分割视觉任务中的有效性。
视觉识别任务中的一个关键挑战是如何适应物体尺寸、姿态、视野和部分变形中的几何变化或模型几何变换(理解:目标有几何变换这个好理解,模型中也可以加入几何变换机制,以学习目标的几何变换)。一般来说,有两种方法:第一是建立足够的具有多样性变化的训练数据集,通常是在现有数据集上通过如仿射变换等方式增加数据样本,进而可以从数据中学习鲁棒性表示,但需要大量训练和复杂的模型参数。第二是利用非变换性质的特征和算法(理解:模型中没有几何变换机制),包含了许多众所周知的技术,例如SIFT(scale-invariant feature transform)[42]和基于目标检测的滑动窗。
上述方法有两个缺点:第一,假设几何变换是固定且已知的。利用这些先验知识对数据进行扩充、设计特征和算法,这种假设不能对具有未知几何变换的新任务进行正确建模。第二,即使变换是已知的,手工设计非变换性质的特征和算法对过于复杂的转换来说可能也是困难或不可行的。
近年来,卷积神经网络(CNNs)[35]在图像分类[31]、图像分割[41]和目标检测[16]等视觉识别任务中取得了显著的成功。尽管如此,他们仍然有上述两个缺点。它们对几何变换的建模能力主要来自于数据集扩展、较大的模型和一些简单的手工设计模块(例如,用于小平移不变性的max pooling[1])。
简而言之,CNNs对复杂未知转换进行建模存在局限性,限制来源于CNN模型的固定几何结构:卷积单元在固定位置对输入特征图进行采样;池化层以固定比率降低空间分辨率;RoI pooling(感兴趣区域)层将RoI分成固定的空间bins等。CNNs中缺乏处理几何变换的中间机制,这会引起明显的问题,例如,同一CNN层中所有激活单元的感受野大小是相同的,这对于在空间位置上编码语义信息的高层CNN层来说是不可取的,因为不同位置可能对应于具有不同尺度或变换的目标,对于精细定位的视觉识别任务来说,需要自适应地确定尺度或感受野的大小,例如,使用完全卷积网络的语义分割[41]。另一个例子是,虽然目标检测最近有了显著而迅速的进展[16,52,15,47,46,40,7],但是所有的方法仍然依赖于基于特征提取的anchor box,对于非刚性目标,这种方式显然不是最好的。
在这项工作中,我们引入了两个新的模块,大大增强了CNNs对几何变换的建模能力:
第一种是可变形卷积,它在标准卷积基础上对每个方格采样点增加了一个2D偏移,从而允许采样网格自由变形,如图1所示。偏移量通过额外的卷积层从前面的特征图中学习,因此变形方式(局部、密集和自适应)取决于输入特征。
第二种是可变形的RoI pooling,在标准RoI pooling的基础上对每个bin位置添加一个偏移[15,7],类似地,偏移量从前面的特征图和Rois中学习,从而可以对不同形状的目标进行自适应的局部定位。
两个模块都是轻量级的,只增加了少量的参数和计算量学习偏移量,它们可以很容易地替换深度CNN的普通模块,并且可以使用标准反向传播进行端到端的训练,由此产生的CNN称为可变形卷积网络或可变形ConvNets。
我们的方法与空间变换网络[26]和可变形part模型[11]在主旨上具有较高的相似性,它们都从数据中学习内部转换参数,区别在于可变形卷积网络是以简单、高效、深入和端到端的方式处理密集的空间变换。在第3.1节中,我们详细讨论了我们的工作与以往工作的关系,并分析了可变形卷积网络的优越性。
CNNs的特征图和卷积都是3D的,而可变形卷积和RoI pooling模块都在2D空间上进行操作,整个操作保持通道数不发生变化。在不丧失通用性的情况下,为了表示清楚,在这里用2D描述,可直接扩展到3D。
2D卷积包括两个步骤:1)在输入特征图 x x x上使用规则方格 R R R进行采样;2)对采样值进行加权求和。 R R R定义了感受野及空洞大小,比如下列定义了一个3x3的卷积核,空洞大小为1。
对输出特征图 y y y的每个位置 p 0 p_0 p0,有以下操作, p n p_n pn枚举了 R R R中的位置。
在可变形卷积中,规则方格 R R R增加了偏移量{ ∆ p n ∣ n = 1 , … , N ∆p_n|n=1,…,N ∆pn∣n=1,…,N}, N = ∣ R ∣ N=|R| N=∣R∣,公式1变为
现在,采样是在不规则和偏移位置 p n + ∆ p n p_n+∆p_n pn+∆pn上。由于偏移量 ∆ p n ∆p_n ∆pn通常是分数,等式(2)通过双线性插值实现,如下所示
其中 p p p表示任意位置( p = p 0 + p n + ∆ p n p=p_0+p_n+∆p_n p=p0+pn+∆pn,公式2), q q q枚举特征图 x x x中的所有空间位置, G ( ⋅ , ⋅ ) G(·,·) G(⋅,⋅)是双线性插值核。注意 G G G是二维的,可以分成两个一维核
其中 g ( a , b ) = m a x ( 0 , 1 − ∣ a − b ∣ ) g(a,b)=max(0,1-|a-b|) g(a,b)=max(0,1−∣a−b∣),公式3计算起来很快,因为 G ( q , p ) G(q,p) G(q,p)仅仅对几个 q q q非零。
如图2所示,通过在相同的输入特征图上应用卷积层来获得偏移,conv的卷积核具有与当前卷积层相同的空间分辨率和空洞(例如,图2中的空洞为1的3×3),输出offset fields具有与输入特征图相同的空间分辨率,通道数为2N对应于N个2D偏移(为什么通道数是2N,为什么不是2?)。在训练过程中,同时学习用于生成输出特征的卷积核和偏移量,为了学习偏移量,梯度通过等式(3)和等式(4)中的双线性运算反向传播。详见附录A。
RoI pooling用于所有基于区域建议的目标检测方法[16,15,47,7],它将任意大小的输入矩形区域转换为固定大小的特征。
RoI pooling[15]:在给定输入特征图 x x x和大小为 w × h w×h w×h且左上角为 p 0 p_0 p0的RoI的情况下,RoI pooling将RoI分成成 k × k k×k k×k( k k k是一个任意参数)个bins,得到 k × k k×k k×k的输出特征图 y y y,对于第 ( i , j ) (i, j) (i,j)个bin ( 0 ≤ i , j < k ) (0 ≤ i, j < k) (0≤i,j<k),有
类似于公式2,在空间bin位置处增加偏移量{ ∆ p i j ∣ 0 ≤ i , j < k ∆p_{ij}|0 ≤ i, j < k ∆pij∣0≤i,j<k},结果如下
通常, ∆ p i j ∆p_{ij} ∆pij是分数,式(6)通过式(3)和(4)的双线性插值来实现。
图3说明了如何获得offsets:首先RoI pooling(公式5)会产生pooled特征图,然后经过一个全连接层产生标准化的offsets ∆ p i j 冒 ∆p_{ij}冒 ∆pij冒,得到公式(6)中的偏移量 ∆ p i j ∆p_{ij} ∆pij,通过RoI的宽和高的元素乘积,如 ∆ p i j = γ ⋅ ∆ p i j 冒 ◦ ( w , h ) ∆p_{ij}=γ·∆p_{ij}冒◦(w,h) ∆pij=γ⋅∆pij冒◦(w,h)。 γ γ γ是一个预先定义的标量,用来调节偏移量的大小,经验上设置为 γ = 0.1 γ=0.1 γ=0.1。为了使偏移的学习对RoI大小保持不变,需要进行偏移归一化。全连接层通过反向传播进行学习,详见附录A。(这一段有些不明白?)
位置敏感性RoI pooling[7]:与RoI pooling不同,它全部是卷积。通过conv层,所有的输入特征图首先针对每个目标类别转换为 k 2 k^2 k2的score maps(对于C类,总共是C+1),如图4的底部分支所示。不需要区分类,score maps被表示为 x i , j x_{i,j} xi,j,其中 ( i , j ) (i,j) (i,j)枚举所有bins。在得到的score maps上执行pooling操作,第 ( i , j ) (i,j) (i,j)处bin的输出值通过计算bin对应的score maps值的相加得到。简言之,与前面的可变形RoI pooling的不同点在于使用位置敏感的score map x i , j x_{i,j} xi,j替换其中的feature map。(这一段有些不明白?)
在可变形PS-ROI pooling中,公式(6)的唯一变化是 x x x也被修改为 x i , j x_{i,j} xi,j,然而偏移量学习是不同的。它遵循了[7]中的“完全卷积”的思想,如图4所示的顶部分支中,conv层生成一个对应空间分辨率的offset fields。对于每个RoI(也针对每个类),对这些fields应用PS RoI pooling以获得标准化偏移量 ∆ p i j 冒 ∆p_{ij}冒 ∆pij冒,然后以可变形RoI pooling中相同的方式将其转换为实际偏移量 ∆ p i j ∆p_{ij} ∆pij。
可变形卷积和RoI pooling模块与普通版本的卷积和RoI pooling的输入和输出相同,因此,它们可以很容易地替换现有CNN中的普通版本。在训练时,这些增加的用于偏移学习的conv和fc层的权重被初始化为零,学习率被设置为当前层数的 β β β倍(默认 β = 1 β=1 β=1,在Faster R-CNN中,fc层的 β = 0.01 β=0.01 β=0.01),它们通过公式(3)和公式(4)中的双线性插值操作进行反向传播,由此产生的CNN称为可变形ConvNets。
为了将可变形ConvNets与当前优秀的CNN网络结构进行结合,我们注意到这些网络结构包括两个阶段。首先,深度完全卷积网络对整个输入图像生成特征图,其次,特征图经过附加任务网络得到结果。我们详细说明以下两个步骤:
用于特征提取的可变形卷积:我们采用了两种最新的特征提取架构ResNet-101[22]和InceptionResNet[51]的改进版本,两者都是在ImageNet[8]分类数据集上预先训练的。
最初的Inception-ResNet是为图像分类任务设计的,针于密集的预测任务具有特征不匹配的问题,对其修改后能够解决该问题[20],修改后的版本被称为“Aligned-Inception-ResNet”,详见附录B。
两个模型都包括几个卷积块、一个平均池化层和一个用于ImageNet分类的1000路全连接层,删除平均池化层和全连接层,最后加入一个随机初始化的1×1卷积,使通道维数降到1024。为了增加feature map的分辨率,最后一个卷积块的有效stride由32变为16。具体来说,在最后一个卷积块的开始处,stride由2变为1(ResNet-101和Aligned Inception ResNet的“conv5”)。同时为了进行补偿,所有卷积核的dilation由1变为2。
可变形卷积应用于最后几个卷积层(核大小>1),我们对不同数量的可变形卷积层进行了实验,发现3是不同任务的一个很好的折衷方案,如表1所示。
分割和检测网络基于上述特征提取网络的输出特征图构建特定于任务的网络,下文中的C表示对象类的数量。
DeepLab [5]是图像分割网络,略……
RPN[47]是区域提议网络,略……
Faster R-CNN [47]是目标检测网络,略……
R-FCN[7]是目标检测网络,略……
可选地将RoI pooling替换为可变形的RoI pooling
本文的主要工作是增强卷积中的空间采样位置(可变形卷积),带偏移的RoI pooling及目标任务中偏移量的学习。
当可变形卷积块叠加时,对复合变换的影响是深远的。如图5所示,标准卷积中的感受野和采样位置在顶部特征图(左)上都是固定的,在可变形卷积(右)中,它们根据目标大小和形状进行自适应调整,更多的例子如图6所示,表2提供了这种适应性变形的定量证据。
可变形RoI pooling的效果与可变形卷积类似,如图7所示。在可变形Roi Pooling中,标准RoI pooling的grid不存在,部分与RoI bins发生偏离,并移至附近的前景区域中,对非刚性物体的定位能力进行增强。
下面花了长度文字描述了与可变形卷积具有相似效果的工作,比如STN等等,略……
对于图像分割,采用PASCAL VOC [10] 和CityScapes [6]数据集,以mIoU衡量,还有训练的设置,略。
对于目标检测,采用PASCAL VOC and COCO [39]数据集,以mAP衡量,还有训练的设置,略。
进行了广泛的消融研究,以验证我们的方法的有效性和效率。
可变形卷积:表1评估了在ResNet-101特征提取网络中使用可变形卷积的效果,当使用更多可变形卷积层时,精度稳步提高,特别是对于DeepLab和class-aware RPN。在DeepLab中使用3个可变形卷积层,而在其他情况下使用6个可变形卷积层时,这种改进会饱和,因此在剩下的实验中,我们在特征提取网络中使用了3个可变形卷积。
我们经验地观察到,可变形卷积层中的学习偏移高度适应图像内容,如图5和图6所示。为了更好地理解可变形卷积的机理,我们定义了一种称为effective dilation的可变形卷积filter,它是filter中所有相邻采样位置对之间距离的平均值,对filter的感受野的大小进行粗略测量。
我们将具有3个可变形卷积层的R-FCN网络应用于VOC 2007测试图像。根据真实标注的边界框和filter中心的位置,将可变形卷积filter分为小、中、大和背景四类。表2记录了有效dilation的统计值(平均值和标准差),研究表明:1)可变形卷积的感受野大小与目标大小相关,说明变形是从图像内容中有效地学习到的;2)背景区域的filter大小介于大中型目标之间,说明在识别背景区域时需要一个较大的感受野。
默认的ResNet-101模型对最后三个3×3卷积层使用 dilation为2的空洞卷积,我们进一步尝试了dilation为4、6和8,并在表3中报告了结果。结果表明:1)当使用较大的dilation值时,所有任务的精度都会提高,表明默认网络的感受野太小;2)不同任务的最佳dilation值不同,例如DeepLab为6,而R-CNN为4;3)可变形卷积的精度最好。
可变形RoI pooling适用于Faster RCNN和R-FCN。如表3所示,单独使用可变形卷积已经使性能显著提高,特别是在[email protected]度量下,当同时使用可变形卷积和RoI pooling时,精度得到了显著的提高。
模型复杂度和运行时间:表4报告了所提出的可变形ConvNets及其原始版本的模型复杂度和运行时间,可变形变换网络只在模型参数和计算上增加少量开销,这表明除了增加模型参数外,显著的性能改进主要是因为几何变换的建模能力。
在表5中,我们在COCO数据集上对用于目标检测的可变形ConvNets和普通ConvNets进行了广泛的比较。我们首先使用ResNet-101模型进行实验,class-aware RPN、Faster R-CNN和R-FCN的可变形版本的mAP@[0.5:0.95]分别为25.8%、33.1%和34.5%,分别比普通ConvNets版本高11%、13%和12%。通过在Faster R-CNN和RFCN中将ResNet101替换为对齐的Inception ResNet,它们的普通ConvNet基线都由于更强大的特性表示而得到改进。同时,可变形变换网络带来的有效性能也得到了保证。通过在多个图像尺度上进一步测试(图像较短的一侧在[480、576、688、864、1200、1400]中)并执行iterative边界框的平均值[14],可变形版本R-FCN的mAP@[0.5:0.95]增加到37.5%。
本文提出了一种简单、有效、深入、端到端的可变形变换网络模型。我们首次证明了在CNNs中学习密集空间变换对于复杂的视觉任务(如目标检测和图像分割)是可行和有效的。