Deformable Convolutional Networks
Abstract
- 卷积神经网络(cnn)由于其构建模块中固定的几何结构,固有地局限于模拟几何变换。在这项工作中,我们引入了两个新的模块来增强cnn的变换建模能力,即变形卷积和变形RoI池。两者都是基于用额外的偏移量来增加模块中的空间采样位置,并在没有额外监督的情况下从目标任务中学习偏移量的想法。新的模块可以很容易地取代现有cnn中的普通模块,并且可以很容易地通过标准反向传播进行端到端训练,从而产生可变形的卷积网络。大量的实验验证了我们的方法的性能。我们首次证明了在深度cnn中学习密集空间变换对于复杂的视觉任务(如目标检测和语义分割)是有效的。
- 该代码发布于 :msracver/Deformable-ConvNets: Deformable Convolutional Networks (github.com)
- 论文地址:[1703.06211] Deformable Convolutional Networks (arxiv.org)
- **常规的卷积,包括池化这些操作,由于其固定的形状难以适应几何变形,在对不规则的目标建模的时候有非常大的局限性。作者提出了一种新的卷积方式:可变形卷积,并在此基础上提出了一种新的RoI池化方法:可变形RoI池化,DCN优点在于:可以很容易替换现有CNN中的普通卷积模块,并且不需要额外的监督,从而更准确的达到对不规则物体的识别的效果。**由微软亚洲研究院发表在ICCV 2017。
Introduction
-
视觉识别的一个关键挑战是如何适应物体尺度、姿态、视点和部分变形中的几何变化或模型几何变换。一般来说,有两种方法。首先是建立具有足够期望变量的训练数据集。这通常是通过增加现有数据样本来实现的,例如,通过仿射变换。鲁棒表示可以从数据中学习,但通常以昂贵的训练和复杂的模型参数为代价。二是利用变换不变的特征和算法。这一类别包含了许多众所周知的技术,如SIFT(尺度不变特征变换)和基于滑动窗口的目标检测范式。
-
上述方法有两个缺点。首先,假设几何变换是固定且已知的。利用这些先验知识扩充数据,设计特征和算法。这种假设阻止了对具有未知几何变换的新任务的推广,这些任务没有正确建模。其次,手工设计不变特征和算法对于过于复杂的转换来说可能是困难的或不可行的,即使它们是已知的。
-
最近,卷积神经网络(cnn)在图像分类、语义分割和目标检测等视觉识别任务上取得了显著的成功。然而,它们仍然有上述两个缺点。它们对几何变换建模的能力主要来自于广泛的数据扩充、大的模型容量和一些简单的手工制作模块(例如,用于小平移不变性的max-pooling)。
-
简而言之,cnn本质上局限于模拟大型未知变换。这种限制源于CNN模块的固定几何结构:卷积单元在固定位置对输入特征图进行采样;池化层以固定比例降低空间分辨率;RoI(兴趣区域)池化层将RoI分成固定的空间箱,等等。缺乏处理几何变换的内部机制。这会引起明显的问题。例如,同一CNN层中所有激活单元的感受野大小是相同的。这对于在空间位置上编码语义的高级CNN层来说是不可取的。由于不同的位置可能对应不同尺度或变形的物体,因此对于具有精细定位的视觉识别来说,需要自适应地确定尺度或接受野大小,例如,使用全卷积网络进行语义分割。另一个例子是,虽然目标检测取得了显著而快速的进展,但所有方法仍然依赖于基于原始边界盒的特征提取。这显然是次优的,特别是对于非刚性对象。
-
在这项工作中,我们引入了两个新的模块,极大地增强了cnn对几何变换的建模能力。第一个是可变形卷积。它在标准卷积中为规则网格采样位置添加2D偏移量。它允许采样网格的自由变形。如下图所示。偏移量是通过额外的卷积层从前面的特征映射中学习到的。因此,变形以局部、密集和自适应的方式取决于输入特征。
-
-
在3 × 3标准和可变形卷积中采样位置的说明。(a)标准卷积的规则采样网格(绿色点)。(b)在可变形卷积中具有增广偏移量(浅蓝色箭头)的变形采样位置(深蓝色点)。©和(d)是(b)的特殊情况,表明可变形卷积推广了尺度、(各向异性)纵横比和旋转的各种变换。
-
-
第二种是可变形的RoI池。它为之前RoI池的常规bin分区中的每个bin位置添加偏移量[Fast R-CNN,R-fcn]。同样,从前面的特征映射和roi中学习偏移量,从而实现不同形状物体的自适应部件定位。
-
两个模块都很轻。他们为偏移学习增加了少量的参数和计算量。它们可以很容易地取代深度cnn中的普通对应,并且可以很容易地用标准反向传播进行端到端训练。由此产生的cnn被称为可变形卷积网络,或可变形卷积网络。
-
我们的方法与空间变换网络和可变形部件模型具有类似的高层次精神。它们都有内部转换参数,并完全从数据中学习这些参数。可变形卷积神经网络的一个关键区别是,它们以一种简单、高效、深入和端到端的方式处理密集的空间变换。我们详细讨论了我们的工作与之前工作的关系,并分析了可变形卷积神经网络的优越性。
-
本文的motivation就是通过“Deformable Convolutional Networks”来解决对非刚性目标的检测问题。可变形卷积和可变形ROI池化可以很容易取代CNN中的对应部分,从而获得可变形卷积网络。
Deformable Convolutional Networks
- cnn的特征映射和卷积是三维的。可变形卷积和RoI池模块都在二维空间域上运行。该操作在通道维度上保持相同。在不丧失一般性的情况下,为了标记清晰,这里用2D描述模块。扩展到3D很简单。
Deformable Convolution
-
二维卷积包括两个步骤:1)在输入特征映射x上使用规则网格R进行采样;2)采样值加权w的总和。网格R定义了感受野的大小和扩张。例如,
-
R = { ( − 1 , − 1 ) , ( − 1 , 0 ) , . . . , ( 0 , 1 ) , ( 1 , 1 ) } \mathcal{R}=\{(-1,-1),(-1,0),...,(0,1),(1,1)\} R={(−1,−1),(−1,0),...,(0,1),(1,1)}
-
定义一个扩展为1的3 × 3内核。
-
-
对于输出特征映射y上的每个位置 P 0 P_0 P0,我们有
-
y ( P 0 ) = ∑ p n ∈ R w ( P n ) ⋅ ( P 0 + P n ) , ( 1 ) y(P_0)=\sum_{p_n\in\mathcal{R}}w(P_n)·(P_0+P_n),(1) y(P0)=pn∈R∑w(Pn)⋅(P0+Pn),(1)
-
其中 p n p_n pn 枚举R中的位置。在可变形卷积中,正则网格R。用偏移量 { ∆ P n ∣ n = 1 , … , N } \{∆P_n|n = 1,…, N\} {∆Pn∣n=1,…,N},其中 N = ∣ R ∣ N = |\mathcal{R}| N=∣R∣。式(1)变为
-
y ( P 0 ) = ∑ P n ∈ R w ( P n ) ⋅ x ( P 0 + P n + ∆ P n ) y(P_0)=\sum_{P_n\in\mathcal{R}}w(P_n)·x(P_0+P_n+∆P_n) y(P0)=Pn∈R∑w(Pn)⋅x(P0+Pn+∆Pn)
-
现在,采样在不规则和偏移位置 p n + ∆ p n p_n+∆p_n pn+∆pn 上。由于偏移量 ∆ p n ∆p_n ∆pn 通常是分数阶的,Eq.(2)通过双线性插值实现为
-
x ( p ) ∑ p G ( q , p ) ⋅ x ( q ) , ( 3 ) x(p)\sum_pG(q,p)·x(q),(3) x(p)p∑G(q,p)⋅x(q),(3)
-
其中p表示任意(分数)位置( p = p 0 + p n + ∆ p n p = p_0 + p_n +∆p_n p=p0+pn+∆pn,对于Eq. (2)), q枚举特征映射x中的所有积分空间位置,G(·,·)为双线性插值核。注意G是二维的。它被分成两个一维核
-
G ( q , p ) = g ( q x , p x ) ⋅ g ( q y , p y ) , ( 4 ) G(q,p)=g(q_x,p_x)·g(q_y,p_y),(4) G(q,p)=g(qx,px)⋅g(qy,py),(4)
-
式中 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∣)。Eq.(3)的计算速度很快,因为 G ( q , p ) G(q, p) G(q,p) 仅在几个 q s q_s qs 内不为零。
-
-
如下图所示,通过在相同的输入特征映射上应用卷积层来获得偏移量。卷积核与当前卷积层具有相同的空间分辨率和扩展(例如,下图中也是3 × 3,扩展为1)。输出偏移场与输入特征图具有相同的空间分辨率。通道维度2N对应于N个2D偏移量。在训练过程中,同时学习生成输出特征的卷积核和偏移量。为了学习偏移量,通过Eq.(3)和Eq.(4)中的双线性操作反向传播梯度。详细信息见附录A。
-
-
3 × 3可变形卷积的说明。deformable convolution在特征图的每个位置都生成一组偏移量。以kernel=3x3为例,图中的N就是9,经过卷积后输出HxWx18的feature map,每个location位置的18分别对应3x3卷积的9个位置的9组偏移量。
-
-
解释了可变形卷积是通过对常规卷积的每个采样点进行偏移而成。由于添加的偏移量往往是小数,比较难处理,作者采用了双线性插值的办法,根据相邻的点来计算。
-
图片放大是图像处理中的一个特别基础的操作。在几乎每一个图片相关的项目中,从传统图像处理到深度学习,都有应用。生活里,和朋友通过微信传张图片,从图片发出,到朋友收到图片,查看图片,都会数次的的改变图像的尺寸,从而用到这个算法。但是大家只是在用这个算法,很少关注这个算法的实现细节:插值算法是如何工作的。插值指利用已知的点来“猜”未知的点,图像领域插值常用在修改图像尺寸的过程,由旧的图像矩阵中的点计算新图像矩阵中的点并插入,不同的计算过程就是不同的插值算法。
-
最近邻法(Nearest Interpolation):计算速度最快,但是效果最差。
-
已知中P1点和P2点,坐标分别为(x1, y1)、(x2, y2),要计算 [x1, x2] 区间内某一位置 x 在直线上的y值
-
-
-
双线性插值(Bilinear Interpolation):双线性插值是用原图像中4(2*2)个点计算新图像中1个点,效果略逊于双三次插值,速度比双三次插值快,属于一种平衡美,在很多框架中属于默认算法。
-
已知Q11(x1,y1)、Q12(x1,y2)、Q21(x2,y1)、Q22(x2,y2),求其中点P(x,y)的值
-
-
双线性插值是分别在两个方向计算了共3次单线性插值,如图所示,先在x方向求2次单线性插值,获得R1(x, y1)、R2(x, y2)两个临时点,再在y方向计算1次单线性插值得出P(x, y)(实际上调换2次轴的方向先y后x也是一样的结果)。
-
双三次插值(Bicubic interpolation):双三次插值是用原图像中16(4*4)个点计算新图像中1个点,效果比较好,但是计算代价过大。
-
Deformable RoI Pooling
-
RoI池用于所有基于区域建议的目标检测方法[Fast R-CNN,Rich feature hierarchies for accurate object detection and semantic segmentation,R-fcn,Faster R-CNN]。它将任意大小的输入矩形区域转换为固定大小的特征。
-
RoI Pooling给定输入特征映射x和一个大小为w×h,左上角为 p 0 p_0 p0 的RoI, RoI Pooling将RoI分成k × k (k为自由参数)个bin,输出k × k个feature map y。对于(i, j)-第一个bin ( 0 ≤ i , j < k ) (0≤i, j < k) (0≤i,j<k),我们有
-
y ( i , j ) = ∑ p ∈ b i n ( i , j ) x ( p 0 + p ) / n i j , ( 5 ) y(i,j)=\sum_{p\in bin(i,j)}x(p_0+p)/n_{ij},(5) y(i,j)=p∈bin(i,j)∑x(p0+p)/nij,(5)
-
其中 n i j n_{ij} nij 是bin中的像素数。(i, j)- bin张成 [ i w k ] ≤ p x < [ ( i + 1 ) ] i w k [i\frac wk]≤p_x < [(i + 1)]i\frac wk [ikw]≤px<[(i+1)]ikw 和 [ i w k ] ≤ p x < [ ( i + 1 ) ] i w k [i\frac wk]≤p_x < [(i + 1)] i\frac wk [ikw]≤px<[(i+1)]ikw。
-
与式(2)相似,在可变形RoI池中,在空间分组位置上添加偏移量 { ∆ p i j ∣ 0 ≤ i , j < k } \{∆p_{ij}|0≤i, j < k\} {∆pij∣0≤i,j<k}。Eq(5)
-
y ( i , j ) = ∑ p ∈ b i n ( i , j ) x ( p 0 + p + ∆ P i j ) / n i j , ( 6 ) y(i,j)=\sum_{p\in bin(i,j)}x(p_0+p+∆P_{ij})/n_{ij},(6) y(i,j)=p∈bin(i,j)∑x(p0+p+∆Pij)/nij,(6)
-
通常, ∆ p i j ∆p_{ij} ∆pij 是分数。Eq.(6)是通过Eq.(3)和(4)的双线性插值实现的。
-
-
上图说明了如何获得偏移量。首先,RoI池化(Eq.(5))生成池化特征映射。从地图中,fc层生成归一化偏移量 ∆ p ^ i j ∆\hat p_{ij} ∆p^ij,然后通过与RoI宽度和高度的元素积将其转换为Eq.(6)中的偏移量 ∆ p i j ∆p_{ij} ∆pij,如 ∆ p i j = γ ⋅ ∆ p ^ i j ◦ ( w , h ) ∆p_{ij} = γ·∆\hat p_{ij}◦(w, h) ∆pij=γ⋅∆p^ij◦(w,h)。这里γ是一个预定义的标量,用于调制偏移量的大小。它被经验地设定为γ = 0.1。为了使偏移量学习不受RoI大小的影响,偏移量归一化是必要的。fc层是通过反向传播学习的,详见附录A。
-
Position-Sensitive (PS) RoI Pooling它是完全卷积的,不同于RoI Pooling。通过一个转换层,所有的输入特征图首先被转换为每个对象类的k2个分数图(C对象类总共C + 1),如下图底部分支所示。不需要区分类别,这样的分数映射表示为 { x i , j } \{x_{i,j}\} {xi,j},其中(i, j)枚举所有bin。在这些分数图上执行池化。(i, j)-th bin的输出值由对应于该bin的一个分数映射xi,j求和得到。简而言之,与Eq.(5)中的RoI池化的不同之处在于,将一般的特征映射x替换为特定的正敏感评分映射 x i , j x_{i,j} xi,j。
-
-
3 × 3可变形PS RoI池的说明。
-
-
在可变形PS RoI池中,Eq.(6)中唯一的变化是x也被修改为 x i , j x_{i,j} xi,j。然而,偏移学习是不同的。它遵循中的“完全卷积”精神,如上图所示。在顶部分支中,一个转换层生成全空间分辨率偏移字段。对于每个RoI(也是每个类),在这些字段上应用PS RoI池以获得归一化偏移量 ∆ p ^ i j ∆\hat p_{ij} ∆p^ij,然后将其转换为实际偏移量 ∆ p i j ∆p_{ij} ∆pij,方法与上述可变形RoI池相同。
-
由于学到的偏置一般都很小,新的坐标并不能落在整数的坐标点上,所以需要用到双线性插值来实现。可变卷积是由改变采样点的位置决定的,而采样点是对于输入特征而言的。更宏观一点来看,它是对采样点对了偏置,就是对输入feature的每个位置学习一个offset。
Deformable ConvNets
-
可变形卷积和RoI池模块都具有与其普通版本相同的输入和输出。因此,它们可以很容易地取代现有cnn中的普通对应物。在训练中,这些为偏移学习添加的conv和fc层被初始化为零权重。它们的学习率被设置为现有层学习率的β倍(默认为β = 1, Faster R-CNN中的fc层为β = 0.01)。它们通过Eq.(3)和Eq.(4)中的双线性插值操作的反向传播进行训练。得到的cnn被称为可变形卷积神经网络。
-
为了将可变形卷积神经网络与最先进的CNN体系结构集成,我们注意到这些体系结构由两个阶段组成。首先,深度全卷积网络在整个输入图像上生成特征映射。其次,浅层任务特定网络从特征映射中生成结果。我们在下面详细说明两个步骤。我们采用了两种最先进的特征提取架构:ResNet-101和修改版本的InceptionResNet。两者都在ImageNet分类数据集上进行预训练。最初的Inception-ResNet是为图像识别而设计的。它存在特征不对齐问题,并且对于密集的预测任务来说存在问题。它被修改以解决对齐问题。修改后的版本被称为“Aligned-Inception-ResNet”,详细内容见附录B。
-
这两个模型都由几个卷积块、一个平均池化和一个用于ImageNet分类的1000路fc层组成。平均池化和fc层被删除。最后加入随机初始化的1 × 1卷积,将通道维数降至1024。与通常的做法一样[Semantic image segmentation with deep convolutional nets and fully connected crfs,R-fcn],最后一个卷积块的有效步幅从32像素减少到16像素,以提高特征图的分辨率。具体来说,在最后一个块的开始,stride从2变为1(对于ResNet-101和Aligned-Inception-ResNet都是“conv5”)。为了补偿,该块(核大小> 1)中所有卷积滤波器的扩展从1变为2。
-
可变形卷积应用于最后几个卷积层(核大小> 1)。我们实验了不同数量的这样的层,发现3是不同任务的良好权衡,如下表所示。
-
-
在ResNet-101特征提取网络的最后1层、2层、3层和6层(3 × 3滤波器)使用可变形卷积的结果。对于类别感知RPN、Faster R-CNN和R-FCN,我们报告了VOC 2007测试的结果。
-
-
Segmentation and Detection Networks 基于上述特征提取网络的输出特征映射,构建任务特定网络。
-
在下文中,C表示对象类的数量。DeepLab是一种先进的语义分割方法。它在特征映射上添加一个1 × 1的卷积层,生成代表每像素分类分数的(C + 1)映射。接下来的softmax层输出每像素概率。
-
类别感知RPN与[Faster R-CNN]中的区域建议网络几乎相同,只是将2类(对象或非对象)卷积分类器替换为(C + 1)类卷积分类器。它可以看作是SSD的简化版。
-
Faster R-CNN是先进的探测器。在我们的实现中,RPN分支被添加到conv4块的顶部。在之前的实践中,在ResNet-101中的conv4和conv5块之间插入RoI池层,为每个RoI留下10层。该设计实现了良好的精度,但具有较高的每roi计算量。相反,我们采用了[Feature pyramid networks for object detection]中的简化设计。最后增加RoI池层1。在汇集的RoI特征之上,添加了两个维度1024的fc层,然后是边界框回归和分类分支。虽然这种简化(从10层conv5块到2层fc块)会稍微降低精度,但它仍然是一个足够强大的基线。
-
RoI池层可以更改为可变形的RoI池。R-FCN是另一种最先进的探测器。它的每roi计算成本可以忽略不计。我们遵循最初的实现。可选地,它的RoI池层可以更改为可变形的位置敏感RoI池。
-
-
可变形卷积和RoI池化模块具有和普通版本相同的输入和输出,所以它们可能很容易的取代现有CNN中的普通模块。作者通过在ResNet-101的特征提取网络中用可变卷积模块替换普通模块,并通过VOC 2007测试集验证,对于class-aware RPN,Faster R-CNN和R-FCN都有着精确度的提升,并且替换层数达到3层时,在不同的任务中能达到很好的权重。
Understanding Deformable ConvNets
-
这项工作是建立在卷积和RoI池中增加额外偏移量的空间采样位置以及从目标任务中学习偏移量的思想之上的。
-
当变形卷积叠加时,复合变形的影响是深远的。下图举例说明了这一点。标准卷积中的接受野和采样位置在顶部特征映射(左)上是固定的。它们在可变形卷积中根据物体的规模和形状自适应调整(右)。
-
-
标准卷积中的固定感受野(a)和可变形卷积中的自适应感受野(b)的图解,使用两层。顶部:顶部特征图上的两个激活单元,在两个不同比例和形状的对象上。激活来自一个3 × 3的过滤器。中间:3 × 3滤波器在上述特征图上的采样位置。另外两个激活单元被突出显示。下图为两级3 × 3滤波器在上述特征图上的采样位置。突出显示了两组位置,对应于上面突出显示的单元。
-
-
图下显示了更多示例。下表提供了这种自适应变形的定量证据。
-
-
每个图像三元组分别显示了背景(左)、小物体(中)和大物体(右)的三个激活单元(绿点)在3 × 3可变形滤波器的三个级别中的采样位置(每张图像中有 9 3 = 729 9^3 = 729 93=729 个红点)。
-
-
三层四类可变形卷积滤波器的有效膨胀值统计。与COCO相似,我们根据边界框面积将对象平均分为三类。小:面积< 9 6 2 96^2 962像素;介质: 9 6 2 96^2 962 <面积< 22 4 2 224^2 2242 ;大:面积> 22 4 2 224^2 2242 像素。
-
-
可变形RoI池的效果类似,如下图所示。标准RoI池化中网格结构的规律性不再成立。相反,部分偏离RoI bin并移动到附近的对象前景区域。增强了定位能力,特别是对于非刚性对象。
-
-
R-FCN中可变形(正敏感)RoI池中的偏移部分示意图和输入RoI(黄色)的3 × 3 bin(红色)。注意零件是如何偏移以覆盖非刚性物体的。
-
In Context of Related Works
-
我们的工作在不同方面与前人的工作有关联。我们将详细讨论它们之间的关系和差异。
-
空间变换网络(STN)这是第一个在深度学习框架中从数据中学习空间变换的工作。它通过仿射变换等全局参数变换对特征映射进行翘曲。这种翘曲是昂贵的,并且学习转换参数是已知的困难。STN在小尺度图像分类问题上取得了成功。逆STN方法用高效的变换参数传播取代代价高昂的特征扭曲。可变形卷积中的偏移学习可以看作是STN中一个极轻的空间Transform。然而,可变形卷积不采用全局参数变换和特征翘曲。相反,它以局部和密集的方式对特征映射进行采样。为了生成新的特征映射,它有一个加权求和步骤,这在STN中是不存在的。可变形卷积很容易集成到任何CNN架构中。训练它很容易。对于需要密集(例如,语义分割)或半密集(例如,目标检测)预测的复杂视觉任务,它被证明是有效的。这些任务对于STN来说是困难的(如果不是不可行的)。
-
Activate卷积这项工作是并行的工作的。它还利用偏移量来增加卷积中的采样位置,并通过端到端反向传播来学习偏移量。结果表明,该方法在图像分类任务中是有效的。与可变形卷积的两个关键区别使得这项工作不那么通用和自适应。首先,它在不同的空间位置共享偏移量。其次,偏移量是每个任务或每次训练学习的静态模型参数。相反,可变形卷积中的偏移量是动态模型输出,随图像位置的不同而变化。它们对图像中的密集空间变换进行建模,并有效地用于(半)密集预测任务,如目标检测和语义分割。
-
Effective Receptive Field 研究发现,并非一个接受域中的所有像素对输出响应的贡献都是相同的。靠近中心的像素有更大的影响。有效感受野只占理论感受野的一小部分,且呈高斯分布。虽然理论上的接受野大小随着卷积层的数量线性增加,但令人惊讶的结果是,有效的接受野大小随着数字的平方根线性增加,因此,其速度比我们预期的要慢得多。这一发现表明,即使是深层cnn的顶层单元也可能没有足够大的接受场。这部分解释了为什么atrous convolution被广泛应用于视觉任务(见下文)。这表明了适应性接受野学习的需要。
-
Atrous convolution 将普通滤波器的步长增加到大于1,并将原始权重保持在稀疏化的采样位置。这增加了接受域的大小,并在参数和计算上保持了相同的复杂性。它被广泛应用于语义分割(也称为扩张卷积)、目标检测和图像分类。如第一张图 ©所示,可变形卷积是atrous convolution的一种推广。下表给出了与atrous convolution的广泛比较。
-
-
评估我们的可变形模块和 atrous convolution,使用ResNet-101。
-
-
(Deformable Part Models, DPM)可变形RoI池与DPM相似,都是通过学习对象部件的空间变形来最大化分类分数。可变形RoI池更简单,因为没有考虑部件之间的空间关系。DPM是一种浅层模型,对变形的模拟能力有限。虽然它的推理算法可以通过将距离变换作为一种特殊的池化操作转换为cnn,但它的训练不是端到端,并且涉及启发式选择,例如组件和部件尺寸的选择。相比之下,可变形卷积神经网络是深度的,并且执行端到端训练。当多个可变形模块堆叠在一起时,建模变形的能力变得更强。
-
DeepID-Net引入了一个变形约束池化层,该层也考虑了物体检测的局部变形。因此,它与可变形RoI池具有类似的精神,但要复杂得多。这项工作是高度工程化的,基于RCNN。目前尚不清楚如何以端到端方式使其适应最新的最先进的目标检测方法。
-
Spatial manipulation in RoI pooling 在尺度上使用手工制作的池化区域。它是计算机视觉中的主要方法,也用于基于深度学习的目标检测。关于池化区域空间布局的研究很少。[Beyond spatial pyramids: Receptive field learning for pooled image features]中的工作从一个大的过完全集合中学习池化区域的稀疏子集。大的集合是手工设计的,学习不是端到端的。可变形RoI池是cnn中第一个端到端学习池化区域的方法。虽然目前这些区域的大小是相同的,但像空间金字塔池那样扩展到多个大小是很简单的。
-
Transformation invariant features and their learning 在设计变换不变特征方面已经做了大量的工作。值得注意的例子包括尺度不变特征变换(SIFT)和ORB (O表示方向)。在cnn的背景下,有大量这样的作品。[Understanding image representations by measuring their equivariance and equivalence.]研究了CNN表示对图像变换的不变性和等价性。一些作品针对不同类型的变换学习不变的CNN表示,如[Learning invariant representations with local transformations]、scattering networks、convolutional jungles和TIpooling。一些作品致力于特定的变换,如 symmetry,scale和 rotation。
-
正如第1节所分析的那样,在这些工作中,转换是先验的。这些知识(如参数化)被用来手工制作特征提取算法的结构,要么是固定的,如SIFT,要么是具有可学习参数的,如基于cnn的特征提取算法。它们不能处理新任务中的未知转换。相反,我们的可变形模块概括了各种转换,转换不变性是从目标任务中学习的。
-
Dynamic Filter 与可变形卷积相似,动态滤波器也取决于输入特征并随样本变化。不同的是,只学习了过滤器的权重,而不是像我们这样的采样位置。该工作应用于视频和立体预测。
-
Combination of low level filters 高斯滤波器及其光滑导数被广泛用于提取低电平图像结构,如角、边、t点等。在一定条件下,这些滤波器形成一组基,它们的线性组合在同一组几何变换中形成新的滤波器,如Steerable filters中的多方向滤波器和 Deformable kernels for early vision 中的多尺度滤波器。我们注意到,虽然在[Deformable kernels for early vision]中使用了术语“可变形核”,但其含义与我们在这项工作中的含义不同。
-
大多数cnn从头开始学习所有的卷积滤波器。最近的研究[Structured receptive fields in cnns]表明,这可能是不必要的。它用低阶滤波器(高斯导数高达4阶)的加权组合取代自由形式滤波器,并学习权重系数。在训练数据较小的情况下,滤波函数空间上的正则化可以提高泛化能力。
-
上述工作与我们的相关之处在于,当多个滤波器,特别是不同尺度的滤波器组合在一起时,得到的滤波器可能具有复杂的权重,类似于我们的可变形卷积滤波器。然而,可变形卷积学习采样位置而不是滤波器权重。
-
对比STN。可变形卷积不采用全局参数变换和特征扭曲,更容易集成到任何CNN架构中,对于STN困难的任务如要求密集(语义分割)或半密集(目标检测)预测的复杂视觉任务来说,可变形卷积是有效的。对比主动卷积。可变形卷积中的偏移量是每个图像位置变化的动态模型输出。而主动卷积是静态的。
-
对比空洞卷积。通过大量的与空洞卷积的比较可以发现,可变形卷积是空洞卷积的推广。对比各种滤波器,虽然不同尺度的滤波组合时与可变形卷积滤波相似,但是可变形卷积学习的是采样位置。
Experiments
Experiment Setup and Implementation
-
语义分割我们使用PASCAL VOC和cityscape。对于PASCAL VOC,有20个语义类别。按照[Simultaneous detection and segmentation,Fully convolutional networks for semantic segmentation,Semantic image segmentation with deep convolutional nets and fully connected crfs]中的协议,我们使用了VOC 2012数据集和[Semantic contours from inverse detectors]中的附加掩码注释。训练集包括10,582张图像。对验证集中的1449张图像进行了评估。对于cityscape,按照[Deeplab]中的协议,分别对训练集中的2,975张图像和验证集中的500张图像进行训练和评估。有19个语义类别加上一个背景类别。
-
为了评估,我们使用在图像像素上定义的平均相交-过并(mIoU)度量,遵循标准协议。我们分别为PASCAl VOC和cityscape使用mIoU@V和mIoU@C。
-
在训练和推理中,将图像调整为PASCAL VOC的短边360像素和cityscape的短边1024像素。在SGD训练中,每个小批随机抽取一张图像。PASCAL VOC和cityscape总共分别执行了30k和45k次迭代,分别使用8个gpu和一个迷你批处理。在前 2 3 \frac 23 32次迭代和后 1 3 \frac 13 31 次迭代中,学习率分别为 1 0 − 3 10^{−3} 10−3 和 1 0 − 4 10^{−4} 10−4。
-
我们使用PASCAL VOC和COCO数据集。对于PASCAL VOC,按照[Fast R-CNN]中的方案,将VOC 2007训练和VOC 2012 训练结合起来进行培训。评价依据VOC 2007测试。对于COCO,按照标准方案[Microsoft COCO],分别对training中的120k图像和test-dev中的20k图像进行训练和评估。
-
为了评估,使用标准平均精度(mAP)分数。对于PASCAL VOC,我们使用IoU阈值0.5和0.7报告mAP分数。对于COCO,我们使用mAP@[0.5:0.95]的标准COCO度量,以及mAP@0.5。
-
在训练和推理中,图像被调整为具有600像素的短边。在SGD训练中,每个小批随机抽取一张图像。对于类感知的RPN,从图像中采样256个roi。对于更快的RCNN和R-FCN,分别为区域提议和目标检测网络采样256和128个roi。RoI池采用7 × 7个bin。为了便于VOC的消融实验,利用预训练和固定的RPN提议来训练Faster R-CNN和R-FCN,而区域提议和目标检测网络之间没有特征共享。与文献[Faster R-CNN]中过程的第一阶段一样,RPN网络被单独训练。对于COCO,执行联合训练,并启用特征共享进行训练。PASCAL VOC和COCO在8个gpu上分别执行了30k和240k次迭代。在前 2 3 \frac23 32 次迭代和后 1 3 \frac13 31 次迭代中,学习率分别设置为 1 0 − 3 10^{−3} 10−3和 1 0 − 4 10^{−4} 10−4。
Ablation Study
-
我们进行了广泛的消融研究来验证我们方法的疗效和效率。下表评估了使用ResNet-101特征提取网络进行可变形卷积的效果。当使用更多可变形的卷积层时,精度稳步提高,特别是对于DeepLab和类感知RPN。当为DeepLab使用3个可变形层,为其他层使用6个可变形层时,改进达到饱和。在剩下的实验中,我们在特征提取网络中使用3。
-
-
在ResNet-101特征提取网络的最后1层、2层、3层和6层(3 × 3滤波器)使用可变形卷积的结果。对于类别感知RPN、Faster R-CNN和R-FCN,我们报告了VOC 2007测试的结果。
-
-
我们通过经验观察到,在可变形卷积层中学习到的偏移量对图像内容具有高度的适应性,如上图所示。为了更好地理解可变形卷积的机制,我们为可变形卷积滤波器定义了一个称为有效扩张的度量。它是滤波器中所有相邻采样位置对之间距离的平均值。这是对过滤器接受野大小的粗略测量。
-
我们将具有3个可变形层的R-FCN网络应用于VOC 2007测试图像。我们根据ground truth bounding box annotation和滤波中心的位置,将可变形卷积滤波器分为小、中、大、背景四类。第一张表报告了有效膨胀值的统计数据(平均值和标准差)。结果表明:
-
1)变形滤波器的感受野大小与物体大小相关,表明变形是有效地从图像内容中学习到的;
-
2)背景区域的滤波尺寸介于中、大型目标之间,说明背景区域的识别需要较大的接受场。这些观测结果在不同的地层中是一致的。
-
-
默认的ResNet-101模型在最后三个3 × 3卷积层中使用膨胀2的属性卷积。我们进一步尝试了膨胀值4、6和8,结果见下表。
-
-
评估我们的可变形模块和属性卷积,使用ResNet-101。
-
-
结果表明:
-
1)当使用较大的扩张值时,所有任务的准确率都有所提高,说明默认网络的接受域过小;
-
2)不同任务的最优膨胀值不同,DeepLab为6,Faster R-CNN为4;
-
3)可变形卷积的精度最好。这些观察结果验证了自适应学习滤波器变形是有效和必要的。
-
-
可变形RoI池适用于更快的RCNN和R-FCN。如上表所示,单独使用它已经产生了显著的性能提升,特别是在严格的mAP@0.7指标下。当同时使用可变形卷积和RoI池时,精度得到了显著提高。
-
下表报告了建议的可变形卷积神经网络及其普通版本的模型复杂性和运行时间。可变形的卷积神经网络只增加了很小的模型参数和计算开销。这表明显著的性能改进来自于建模几何变换的能力,而不是增加模型参数。
-
-
使用ResNet-101的可变形卷积网络和普通卷积网络的模型复杂性和运行时比较。上一cloumn 中的总体运行时包括图像调整大小、网络转发和后处理(例如,用于对象检测的NMS)。运行时间计算在Intel E5-2650 v2 CPU和Nvidia K40 GPU的工作站上。
-
-
用可变形ConvNets的ResNet-101与普通版本的ResNet-101作对比,观察到了3点:模型的复杂度增加很小,仅增加了很小的模型参数和计算量;模型的精确度得到了显著的提升;模型的运行时间的增加了也很少。这表明显著的性能改进来自于建模几何变换的能力而不是增加模型参数。
Object Detection on COCO
-
在下表中,我们对COCO测试开发集上的对象检测的可变形卷积神经网络和普通卷积神经网络进行了广泛的比较。我们首先使用ResNet-101模型进行实验。可变形版本的类感知RPN、Faster R-CNN和R-FCN分别实现了25.8%、33.1%和34.5%的mAP@[0.5:0.95]分数,分别比它们的plainConvNets相对高11%、13%和12%。通过在Faster R-CNN和RFCN中用Aligned-Inception-ResNet取代ResNet101,由于更强大的特征表示,它们的plain-ConvNet基线都得到了改善。变形卷积神经网络带来的有效性能提升也同样有效。通过在多个图像尺度上的进一步测试(图像较短的边在[480,576,688,864,1200,1400])并执行迭代边界盒平均,可变形版本的R-FCN的mAP@[0.5:0.95]分数提高到37.5%。请注意,可变形卷积神经网络的性能增益与这些附加功能是互补的。
-
-
可变形卷积神经网络与普通卷积神经网络在COCO测试开发集上的目标检测结果。M表示多尺度测试,B表示表中的迭代边界盒平均。
-
Conclusion
- 本文提出了一种简单、高效、深入、端到端的可变形卷积神经网络模型。我们首次证明了在cnn中学习密集空间变换用于复杂的视觉任务(如目标检测和语义分割)是可行和有效的。
A. Deformable Convolution/RoI Pooling Backpropagation
-
在可变形卷积Eq.(2)中,梯度w.r.t。偏移量 ∆ p n ∆p_n ∆pn 计算为
-
∂ y ( p 0 ) ∂ Δ p n = ∑ p n ∈ R w ( p n ) ⋅ ∂ x ( p 0 + p n + Δ p n ) Δ p n = ∑ p n ∈ R [ w ( p n ) ⋅ ∑ q ∂ G ( q , p 0 + p n + Δ p n ) ∂ Δ p n x ( q ) ] , ( 7 ) \frac{∂y(p_0)}{∂\varDelta p_n}=\sum_{p_n\in R}w(p_n)·\frac{∂x(p_0+p_n+\varDelta p_n)}{\varDelta p_n}\\ =\sum_{p_n\in R}[w(p_n)·\sum_q\frac{∂G(q,p_0+p_n+\varDelta p_n)}{∂\varDelta p_n}x(q)],(7) ∂Δpn∂y(p0)=pn∈R∑w(pn)⋅Δpn∂x(p0+pn+Δpn)=pn∈R∑[w(pn)⋅q∑∂Δpn∂G(q,p0+pn+Δpn)x(q)],(7)
-
其中, $\frac{∂G(q,p_0+p_n+∆p_n)}{∂∆p_n} $ 可以从式(4)中推导出来。注意,偏移量 ∆ p n ∆p_n ∆pn 是2D,为了简单起见,我们用 ∂ ∆ p n ∂∆p_n ∂∆pn 表示 ∂ ∆ p n x ∂∆p^x_n ∂∆pnx 和 ∂ ∆ p n y ∂∆p^y_n ∂∆pny。
-
-
同样,在可变形的RoI Pooling模块中,梯度w.r.t.偏移量 ∆ p i j ∆p_{ij} ∆pij 可以通过
- ∂ y ( i , j ) ∂ Δ p n = 1 n i j ∑ p n ∈ b i n ( i , j ) ∂ x ( p 0 + p n + Δ p n ) Δ p i j = 1 n i j ∑ p n ∈ b i n ( i , j ) [ ∑ q ∂ G ( q , p 0 + p n + Δ p n ) ∂ Δ p i j x ( q ) ] , ( 8 ) \frac{∂y(i,j)}{∂\varDelta p_n}=\frac{1}{n_{ij}}\sum_{p_n\in bin(i,j)}\frac{∂x(p_0+p_{n}+\varDelta p_n)}{\varDelta p_{ij}}\\ =\frac{1}{n_{ij}}\sum_{p_n\in bin(i,j)}[\sum_q\frac{∂G(q,p_0+p_n+\varDelta p_n)}{∂\varDelta p_{ij}}x(q)],(8) ∂Δpn∂y(i,j)=nij1pn∈bin(i,j)∑Δpij∂x(p0+pn+Δpn)=nij1pn∈bin(i,j)∑[q∑∂Δpij∂G(q,p0+pn+Δpn)x(q)],(8)
-
通过计算 ∆ p i j = γ ⋅ ∆ p ^ i j ◦ ( w , h ) ∆p_{ij} = γ·∆\hat p_{ij}◦(w, h) ∆pij=γ⋅∆p^ij◦(w,h) 的导数,可以很容易地得到归一化偏移量 ∆ p ^ i j ∆\hat p_{ij} ∆p^ij 的梯度w.r.t.。
B. Details of Aligned-Inception-ResNet
-
在最初的Inception-ResNet架构中,使用了多层有效的卷积/池化,这给密集预测任务带来了特征对齐问题。对于靠近输出的特征映射上的细胞,其在图像上的投影空间位置与其接受野中心的位置不对齐。同时,任务专用网络通常在对齐假设下设计。例如,在用于语义分割的流行fcn中,利用来自单元格的特征来预测相应投影图像位置的像素标签。
-
为了解决这个问题,对网络架构进行了修改,称为“Aligned-Inception-ResNet”,如下表所示。当特征维数发生变化时,使用1 × 1步长为2的卷积层。Aligned-Inception-ResNet和原始的Inception-ResNet之间有两个主要的区别。首先,通过在卷积层和池化层中适当填充,AlignedInception-ResNet不存在特征对齐问题。其次,Aligned-Inception-ResNet由重复的模块组成,其设计比原来的Inception-ResNet架构更简单。
-
-
Aligned-InceptionResNet的网络架构。初始残留块(Inception Residual Block, IRB)在下图中有详细描述。
-
-
align -Inception- resnet的不同阶段的Inception残差块(IRB),其中不同阶段的维度用斜杠(conv2/conv3/conv4/conv5)分隔。
-
-
align - inception - resnet模型在ImageNet-1K分类上进行预训练。训练步骤如下。下表报告了模型复杂度、top-1和top-5分类误差。
-
-
Aligned-Inception-ResNet与ResNet-101和Inception-ResNet-v2在ImageNet-1K验证上的比较。
-
-
MSRA的文章,严格意义上讲,deformable convolutional不仅仅只适用于object detection,作为对常见的卷积的一种改良,它可以广泛应用在各个网络中,和空洞卷积一样,是对传统卷积的改良,而且某种意义上也可以说是空洞卷积的进一步拓展。