参考文献:https://arxiv.org/abs/1703.06211
代码实现:https://github.com/msracver/Deformable-ConvNets
包括理解!
Deformable Convolutional Networks
摘要
卷积神经网络(CNNs)由于其构建模块中固定的几何结构,其固有的局限性在于模型的几何变换。在这项工作中,我们引入了两个新的模块来增强CNNs的转换建模能力,即可变形卷积和可变形RoI池。这两种方法都基于这样的思想,即在不需要额外监控的情况下,使用附加偏移量来增加模块中的空间采样位置,并从目标任务中学习偏移量。新的模块可以很容易地取代现有cnn中的普通模块,并且可以通过标准的反向传播进行端到端的简单训练,从而产生可变形卷积网络。大量实验验证了该方法在复杂的目标检测和语义分割视觉任务中的有效性。代码将被释放。
1 引言
视觉识别任务中的一个关键挑战是如何适应物体尺寸、姿态、视野和部分变形中的几何变化或模型几何变换(啥意思?)。一般来说,有两种方法:第一是建立足够的具有多样性变化的训练数据集,通常是在现有数据集上通过如仿射变换等方式增加数据样本,进而可以从数据中学习鲁棒性表示,但需要大量训练和复杂的模型参数。第二是利用非变换性质的特征和算法(啥意思?),包含了许多众所周知的技术,例如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节中,我们详细讨论了我们的工作与以往工作的关系,并分析了可变形卷积网络的优越性。
2 可变形卷积网络
CNNs的特征图和卷积都是3D的,而可变形卷积和RoI pooling模块都在2D空间上进行操作,整个操作保持通道数不发生变化。在不丧失通用性的情况下,为了表示清楚,在这里用2D描述,可直接扩展到3D。
2.1 可变形卷积
2D卷积包括两个步骤:1)在输入特征图上使用规则方格进行采样;2)对采样值进行加权求和。定义了感受野及空洞大小,比如下列定义了一个3x3的卷积核,空洞大小为1。
对输出特征图的每个位置,有以下操作,枚举了中的位置。
在可变形卷积中,规则方格增加了偏移量{},,公式1变为
现在,采样是在不规则和偏移位置上。由于偏移量通常是分数,等式(2)通过双线性插值实现,如下所示
其中表示任意位置(,公式2),枚举特征图中的所有空间位置,是双线性插值核。注意是二维的,可以分成两个一维核
其中,公式3计算起来很快,因为仅仅对几个非零。
如图2所示,通过在相同的输入特征图上应用卷积层来获得偏移,conv的卷积核具有与当前卷积层相同的空间分辨率和空洞(例如,图2中的空洞为1的3×3),输出offset fields具有与输入特征图相同的空间分辨率,通道数为2N对应于N个2D偏移(为什么通道数是2N,为什么不是2)。在训练过程中,同时学习用于生成输出特征的卷积核和偏移量,为了学习偏移量,梯度通过等式(3)和等式(4)中的双线性运算反向传播。详见附录A。
2.2 可变形RoI pooling
RoI pooling用于所有基于区域建议的目标检测方法[16,15,47,7],它将任意大小的输入矩形区域转换为固定大小的特征。
RoI pooling[15]:在给定输入特征图和大小为且左上角为的RoI的情况下,RoI pooling将RoI分成成(是一个任意参数)个bins,得到的输出特征图,对于第个bin ,有
类似于公式2,在空间bin位置处增加偏移量{},结果如下
通常,是分数,式(6)通过式(3)和(4)的双线性插值来实现。
未完,明天继续……