Deformable Convolutional Networks
可变形卷积网络
from MSRA
Paper
Code
受限于卷积操作本身具有固定的几何结构,卷积神经网络仅能建模几何变换。本文则引入了两个新的模块来增强CNN的模型变换能力,分别是可变形卷积(deformable pooling)和可变形RoI池化(deformable RoI pooling),通过增加偏移量来增加空间采样位置,bong从目标任务中学习这一偏移量无需额外的监督信息。这种模块可以很方便的取代现在CNN中的现有模块,并且可以通过反向传播进行端到端的训练。进行了广泛的实验验证了可变形卷积网络的有效性,并且首次验证了在深度神经网络中学习密集的空间变换对于复杂的视觉任务(如目标检测、语义分割)是十分有效的。
视觉识别任务的一大挑战就是如何适应物体、姿态、视觉以及一些部位的几何变形。主要由两种方法:一是构建具有足够多样性的数据集,这就需要借助数据增强手段扩充训练样本,比如通过仿射变换。二就是使用一些几何不变的特征或算法,如SIFT,sliding window等。
但上述方法有两大缺陷:一是几何变换都是固定模式的,无法产生新的模式,抑制了应对未知几何变换的泛化性,对未知情况难以正确建模。二是一些人为设计的特征或算法无法处理一些复杂的变换,即使它们是已知的。
卷积神经网络虽然在许多视觉识别任务上大放异彩但仍然存在以上局限,受限于模型规模和未知的变换。原因在于卷积模块基于固定的几何结构,卷积单元在固定的位置采样输入特征;池化操作以固定的比例降低空间分辨率;通过RoI池化将RoI区域以固定比例分离到不同的bin中。这些都缺少应对几何变换的内部机制,这就容易产生问题:每一层激活单元的感受野大小是一样大的;而对于高层次语义特征借助空间位置来编码显然是不可取的;几乎所有的物体检测算法都依赖于根据特征取得bounding box,显然不是最优的。
因此本文提出应对图像几何变换的两个模块:deformable convolution和deformable RoI pooling。
deformable convolution在标准卷积操作的常规网格采样中加入了2D偏移,这样可使采样网格的形状自由变换。这些偏移基于前面的特征映射进行学习,因此具体的变形取决于输入特征的局部、密集程度,自适应的进行调整。
deformable RoI pooling会对前一层RoI pooling每一个bin的位置添加一个偏移量,偏移量依旧是基于前层的特征映射和RoI学习的,会根据物体的形状自适应的进行定位。
这两个模块均是轻量级的,偏移量的学习金辉增加少量的参数和计算成本,但可以很方便的替代传统卷积的对应部分并进行反向传播,基于此搭建的网络叫做可变形卷积网络(deformable Convnets)。
本文的方法与空间变换网络(spatial transform networks)和deformable part models类似,它们都有内部变形参数,参数是从数据中学习的。本文的独特之处在于使用一种简单高效的端到端的方法处理密集的空间变换。下面来介绍一下可变形卷积的优越性。
卷积神经网络中的特征图和卷积操作都是三维的,而本文的可变卷积和RoIpooling都是在二维空间进行的变换,在通道维度上保持不变。
Fig1展示了常规卷积和可变卷积的采样方式(3x3大小),(a)为常规卷积,(b)©(d)为可变卷积,与常规卷积相比,多了一个蓝色代表的偏移量。而(c)(d)则是(b)的特例,表明可变卷积可以进行不同程度的比例缩放,分别代表着缩放和旋转。
Part A Deformable Convolution
二维卷积包含两个步骤:(1)对输入的特征图以一定网格大小采样;(2)计算采样值的加权和。
采样的网格R决定了感受野的大小和膨胀的多少,输出特征图的每一点的计算可以表述为:
而在可变卷积中采样的网格形状多包涵了偏移量,也就是说每一点的输出是基于不规则的偏移量作用后的结果。
每个像素点pn的权重为w,po代表的是输出的每个像素点,而偏移量△pn就是需要学习的偏移量,
对应于FIG2中的offset field,因此offset field的大小和输入特征图的尺寸是一样的,而卷积操作在offset field上进行就得到了偏移的效果。 而offset field的通道数为2N代表着N个二维的偏移量。在训练过程中offset field的参数会和卷积和参数同时学习。
Part B Deformable RoI Pooling
在目标检测做region proposal时都会进行RoI pooling。作用就是将任意大小的区域映射到同样大小。
RoI Pooling:会将任意大小的RoI分成kxk个bin中。
nij就是每一块bin中包含的像素综述,而Deformable RoI pooling依旧是对每一个输出像素增加一个偏移量△pij。Fig3展示了具体的操作过程;首先通过RoI pooling获得池化后的特征图,而后通过一个fc生成normalized offset后再计算每一个bin对应的offset:
其中gamma设置为0.1。而使用偏移归一化是十分有必要的,这两确保offset的学习与RoISize无关。
Position-Sensitive(PS)
RoI Pooling
位置敏感的RoI Pooling
它和RoI Pooling完全不同。经过一层卷积后,所有的输入featuremap,对应每一类物体类别都会变成一个k2的score map,然后在这些score map上进行pooling。相应变成deformable PS RoI Pooling进行的变化也只是把输入像素x替换为xij,但是这个参数量学习起来就和前面不一样了。
Part C Defoemable ConvNets
Defoemable Convolution和Deformable RoI pooling和它们对应的常规版本的输入输出是同样的,所以可以非常方便的作为常规版本的替代。在训练时可变卷积中增加的卷积层和FC层的权重都初始化为0,lr分别为1和0,1(0.1用于目标检测)。
为了可以将本文的deformable ConvNet与目前的SOTA作对比,本文将网络分成两部分搭建,第一部分搭建一个深层次的全卷积神经网络用来产生特征图;随后搭建浅层次的任务网络根据前面的特征图产生结果。
Deformable Convolution for Feature Extraction
本文用于特征提取的网络有:ResNet1-1和改动过后的Inception-ResNet,都是在ImageNet预训练后的。
因为原始的Inception-ResNet网络是用来图像识别的,会有特征失配的问题,因此对它进行了修改-Alogned-Inception-ResNet.
两个模型都包括卷积模块、均值池化和1000类的fc层用于ImageNet分类,本文中移除了均值池化和fc层,而是通过1x1conv将输出压缩到1024.;最后一个卷积模块的有效步长从32pixel降到16pixel这样可以有效提升featuremap的分辨率。然后本文会有选择性的将最后几层卷积层替换为deformable convolution,并且实验结果表明替换3层权衡下来效果最好。
Segmentation and Detection Networks
任务相关网络需要基于特征提取网络提取到的feature map进行分割或者目标检测。
C代表分类的类别
DeepLab是一个用于语义分割的网络,通过对特征图进行1X1卷积获得(C+1)张分割图谱代表每一个像素的分类得分,随后经过softmax获得每一个像素点的类别概率。
Category-Aware RPN和RPN网络没什么不同,除了最后的2分类卷积分类器替换成了(C+1)类的分类器。可以看做是SSD的一种简化版本。
Faster R-CNN是当前目标检测的SOTA。在前人的工作中在conv4和conv5之间插入了RoI pooling,虽然达到了很好的检测精度但也增加了每一个RoI的计算成本,因为每一个RoI要计算10层。因此本文采用了一种简化版本,仅在最后进行RoIpooling。前面是两层1024个维度的fc层,随后进行bbox回归和最后的分类。虽然精度有所下降但仍然可以作为baseline。
本文可也以选择性的将RoI pooling替换为deformable pooling。
检测任务还用了另一个网络-R-FCN,也可以将其中的RoI pooling进行替换。
本文的出发点在于借助学习偏移量增强卷积和RoI pooling的空间采样信息。当可变卷积堆叠使用,这种复合变形产生的影响是十分深远的。
Fig 5展示了常规卷积和可变卷积的感受野的对比。
(a)是常规卷积,(b)是可变卷积。
最上面是两个不同尺度不同形状目标的激活点;第二层则是对应的3x3感受野,可以看到两者激活神经元就已经不同了;而最后一层则显示出激活了不同的两组神经元。而在常规卷积中感受野和采样的位置都是固定不变的,而在可变卷积中会根据物体的尺度、形状进行自适应的变换。
Fig 6进一步展示了一些样本基于三种不同层次可变卷积上的激活效果;可变RoI pooling的效果也是类似的,可以看到常规的RoI pooling的那种规律性不再存在,而一部分RoI偏离了bin,并且移动到了物体附近区域;可变RoI尤其对非刚性对象的定位能力增强了。
Part A In context of Related Works
与其他工作的对比
Spatial Transform Networks(STN)是第一个借助深度学习框架从数据中学习空间变换的网络。它通过全局的参数变换(如仿射变换)来扭曲特征映射。但是这一扭曲参数学习起来十分困难,而且仅在尺度较小的分类任务上效果较好。而本文对偏移量的学习可以认为是STN中超级轻量级的空间变换但是并没有通过一个全局的参数变换来扭曲特征,而是对特征图的局部进行密集采样,而为了产生新的特征图谱还有一步来求加权和计算,这也是STN没有的。
而且可变卷积可以非常方便的集合进CNN框架,训练也很简单,并且对于一些需要密集分类/分割的视觉任务非常有效,这是STN所不具备的。
Active convolution:在Active convolution中也使用偏离来增强采样的位置信息,从而有效提升了分类任务的性能。
和本文可变卷积的区别在于Active convolution的泛化性和自适应性交叉,因为在不同位置共享offset,而且学习到的offset是静态的。而本文中使用的是动态模型,还适用于做密集预测,比如分割和目标检测。
RoI pooling中的空间调控:空间金字塔池化在不同尺度上手动进行池化,也是基于深度学习进行目标检测的主流方法。但是对池化空间布局的研究很少。比如[28]的工作是从一个大的过完备的集合中学习池化区域的子集,但是整个大的集合是手工设计的,学习也不是端到端的。因此Deformable RoI pooling是第一个在CNN中进行端到端学习池化区域的工作,虽然现在区域的规模还都一样大小,但扩展到多个大小的空间金字塔池化也是可行的。
Transformation invariant features and their learning
在变换不变形特征的学习上已经开展了诸多研究,最著名的有SIFT和ORB。有的工作聚焦于不同变换的不变形或等价表示,比如(scattering networks,convolutional jungles),有的工作聚焦于如何特定的变换不变形特征的学习,比如非对称性、scale尺度和旋转。
但是他们都是基于先验知识,比如已经研究过的SIFT,或者是CNN已经学习过的一些参数,是无法应对没有见过的变形的。而本文的变换模块对各种变形都是可泛化的,是根据特定的任务来学习变换不变形特征的。
Dynamic Filter:与deformable convolution相似,也会基于输出的特征进行调整,但是区别在于仅学习filter的权重,而不是像本文学习采样的地点。Dynamic Filter在视频识别中进行了测试。
Combination of low level filters:高斯滤波及其导数广泛用于提取图像低级特征,比如边缘、角、,以这种类型的filter为基进行线性组合可以形成新的filter提取其他不同形状不同尺度的特征。
Effective Receptive Field:
ERF的主要发现是感受野中的每个像素点对输出的贡献是不一样等贡献的,实际有效的感受野仅占很小一部分,服从高斯分布。虽然会随着卷积层数目理论上感受野的范围线性增加,但是实际上是卷积层数的平方根,也就是增加的比率比预想的要低。
基于这一发现即使最顶层的单元对应的感受野也不会很大,这也解释了为什么在一些视觉任务中广泛使用空洞卷积,也体现出自适应的学习感受野是多么重要。
Atrous Convolution:空洞卷积与常规卷积的区别在于其步长>1,从而有效增加了感受野的规模还不会引起参数量的增加,已经被广泛的用于语义分割、目标检测和图像分类等任务。而本文的可变卷积正是空洞卷积的一般形式(参见Fig1©)。
Deformable Part Models:本文的RoI Pooling与DPM很类似,因为都是通过学习检测物体的形状来提升分类精度,但是本文的Deformable RoI pooling更加简单因为没有考虑空间关系。而DPM层次不深,学习空间变换的能力有限,并且训练不是端到端的;而Deformable RoI pooling一方面可以端到端学习,另一方面可以通过堆叠module的形式提升模型的学习能力。
**DeepID-Net:**在DeepID-Net中引入了一种变形受限的池化层,也一定程度考虑了目标变形的情况,与Deformable RoI pooling类似但是实现起来更加复杂,并且是基于RCNN进行的,暂时还不知道应该如何端到端的迁移到其他SOTA的目标检测任务中。
上述工作都与本文工作有一定程度的相关,比如结合使用不同尺度的多个filter最终就是本文deformable filter的效果。但是可变卷积学习的是采样的位置而不是filter的权重。
Part A实验准备
语义分割:
数据集 PASCAL VOC,CityScapes
PASCAL VOC:training:test=10582:1449
CityScapes:training:test=2975:500
评价指标:mIoU
目标检测:
数据集:
PASCAL VOC
COCO
在目标检测中,根据标注框信息和filter中心在哪里将可变卷积分为四类:small medium,large,background.
Table II展示了effective dilation的具体数据,可以简洁明了的看出:
(1)可变卷积感受野的大小很明显和识别物体的代销有关,这也说明是根据图像的内容来学习变形信息的;
(2)背景区域的filter size介于medium和large之间说明相对较大范围的感受野对于背景区域的识别很有必要。
随后还测试了不同膨胀率的空洞卷积的效果,结果参见Table III.可以得出以下结论:
(1)使用更大的膨胀系数精度越高说明原始网络的感受野都太小了;
(2)不同的任务对应最佳的膨胀率是不同的;
(3)可变卷积取得最佳的精确度。
Part B 消融实验
Deformable convolution
Table I展示了基于ResNet-101使用可变卷积进行特征提取的效果,可以看到当更多层使用可变卷积准确率是逐渐提升的,尤其是对于DeepLab和class-aware RPN.后续试验中使用3层可变卷积。
根据观察结果也显示出学习到的偏移量是自适应的(参考Fig5 Fig6).
为了能够更好的理解可变卷积的机制,本文定义了一个矩阵-有效膨胀(effective dilation)来衡量可变卷积的有效性。这是所有相邻filter之间距离的平均值,可以粗略评估感受野的大小。
DeformableRoI pooling:
Table III也展示了DeformableRoI pooling的效果。
Table 4还展示了模型的复杂度及运行时间,可以看到使用可变卷积仅仅增加了一小部分的模型参数和计算成本,但却对性能有很大提升,得益于其对几何变形的建模能力。
Table 5展示了基于COCO数据集做目标检测的结果。
本文提出了可变卷积,是一种简单高效的,用于端到端学习模型密集的空间变换的解决方案。首次阐明了基于可变卷积可以有效学习一些复杂视觉任务中的空间变换信息,比如用于目标检测和语义分割。