在文章中提出了两个新模块:也就是可变形卷积核可变形ROI池化。新模块可以很容易取代现有CNN中的普通卷积和池化,并且其可以通过标准反向传播轻松的进行端到端训练。
一:可变形卷积(DCN/DConv)
普通卷积核可变形卷积之间的对比图如下
在图中(a)是普通的卷积,(b),(c),(d)都是可变形卷积
可变形卷积实际是指标准卷积操作中采样位置增加了一个偏移量offset,这样卷积核就能在训练过程中扩展到很大的范围。
(c)和(d)是(b)的特例,表明了可变形卷积推广了尺度,长宽比和旋转的各种变换
二:为什么要用可变形卷积?
卷积核的是为了提取输入物的特征。我们传统的卷积核通常是固定尺寸、固定大小的(例如3×3,5×5,7×7.)。这种卷积核存在的最大问题就是,对于未知的变化适应性差,泛化能力不强。–普通卷积存在的问题
卷积单元对输入的特征图在固定位置进行采样,池化层不断减小特征图的尺寸。ROI池化层产生空间位置受限的RoI这会产生显著的问题。
例如,同一CNN层的激活单元的感受野尺寸都相同,这对于编码位置信息的深层卷积神经网络并不可取,因为不同的位置可能对应有不同的尺度或者不同形变的物体。这些层需要能够自动调整尺度或者感受野的方法
解决普通卷积最直观的方法就是可以使得我们的卷积核根据实际情况调整本身的形状,从而更好的提取输入特征
图a是正常卷积,图b是可变形卷积。最上面的图像是大小不同的物体上的激活单元。中间层是为了得到顶层激活单元所进行的采样过程,左图是标准的3*3方阵采样,右图是非标准形状的采样,但是采样点依然是3*3的。
最下面一层是为了得到中间层进行的采样区域。明显发现,可变形卷积在采样时可以更贴近物体的形状和尺寸,而标准卷积无法做到这一点。
三:可变形卷积的实现
、如上图所示,偏差通过一个卷积层conv获得,输入特征图,输出偏差。生成通道维度是2N,其中的2分别对应X和Y这2个2D偏移,N是通道数。两个卷积核通过双线性插值后向传播算法同时学习。相当于比正常的卷积多输出了偏移特征。
总体来说,可变形卷积比普通卷积就是多了下图中的灰色区域
可变形卷积的流程
1:我们一开始,和正常的卷积神经网络一样,根据输入的图像,利用传统的卷积核提取特征图。
2:我们把得到的特征图作为输入,对特征图再施加一个卷积层,这么做的目的是为了得到可变形卷积的变形的偏移量。(重点)
3:偏移层是2N,因为我们在平面上做平移,需要改变x值和y值两个方向。
4:在训练的时候,用于生成输出特征的卷积核和用于生成偏移量的卷积核是同步学习的。其中偏移量的学习是利用插值算法,通过反向传播进行学习。
文章出处登录后可见!