上期回顾

卷积神经网络进阶用法—残差网络如何解决梯度消失问题

什么是可变形卷积?

可变形卷积是指卷积核在每一个元素上额外增加了一个参数方向参数,这样卷积核就能在训练过程中扩展到很大的范围。
在这里插入图片描述
上图来自论文Deformable Convolutional Networks
上图中

(a)是传统的标准卷积核,尺寸为3x3(图中绿色的点);
(b)就是我们今天要谈论的可变形卷积,通过在图(a)的基础上给每个卷积核的参数添加一个方向向量(图b中的浅绿色箭头),使的我们的卷积核可以变为任意形状;
(c)和(d)是可变形卷积的特殊形式。

为什么要可变形卷积?

我们知道卷积核的目的是为了提取输入物的特征。我们传统的卷积核通常是固定尺寸、固定大小的(例如3x3,5x5,7x7.)。这种卷积核存在的最大问题就是,对于未知的变化适应性差,泛化能力不强。

卷积单元对输入的特征图在固定的位置进行采样;池化层不断减小着特征图的尺寸;RoI池化层产生空间位置受限的RoI。网络内部缺乏能够解决这个问题的模块,这会产生显著的问题,例如,同一CNN层的激活单元的感受野尺寸都相同,这对于编码位置信息的浅层神经网络并不可取,因为不同的位置可能对应有不同尺度或者不同形变的物体,这些层需要能够自动调整尺度或者感受野的方法。再比如,目标检测虽然效果很好但是都依赖于基于特征提取的边界框,这并不是最优的方法,尤其是对于非网格状的物体而言。

解决上述问题最直观的想法就是,我们的卷积核可以根据实际情况调整本身的形状,更好的提取输入的特征。

可变形卷积结构形式?

我们知道了可变形卷积的概念和意义,下一步就是它的实现过程。
我们先上图,有个只管概念:


在这里插入图片描述
上图是可变形卷积的学习过程,首先偏差是通过一个卷积层获得,该卷积层的卷积核与普通卷积核一样。输出的偏差尺寸和输入的特征图尺寸一致。生成通道维度是2N,分别对应原始输出特征和偏移特征。这两个卷积核通过双线性插值后向传播算法同时学习。

事实上,可变形卷积单元中增加的偏移量是网络结构的一部分,通过另外一个平行的标准卷积单元计算得到,进而也可以通过梯度反向传播进行端到端的学习。加上该偏移量的学习之后,可变形卷积核的大小和位置可以根据当前需要识别的图像内容进行动态调整,其直观效果就是不同位置的卷积核采样点位置会根据图像内容发生自适应的变化,从而适应不同物体的形状、大小等几何形变。然而,这样的操作引入了一个问题,即需要对不连续的位置变量求导。作者在这里借鉴了之前Spatial Transformer Network和若干Optical Flow中warp操作的想法,使用了bilinear插值将任何一个位置的输出,转换成对于feature map的插值操作。同理,类似的想法可以直接用于 (ROI) Pooling中改进。

可变形卷积网络与传统网络结构上的区别如下图所示:
在这里插入图片描述

可变形卷积的学习过程?

在这里插入图片描述
图a是标准卷积的采样过程,图b是可变形卷积的采样过程。

我们一层层的看:

最上面的图像是在大小不同的物体上的激活单元。
中间层是为了得到顶层激活单元所进行的采样过程,左图是标准的3x3方阵采样,右图是非标准形状的采样,但是采样的点依然是3x3.
最下面一层是为了得到中间层进行的采样区域。明显发现,可变形卷积在采样时可以更贴近物体的形状和尺寸,而标准卷积无法做到这一点。

可变形卷积如何实现?

上面我们说过,可变形卷积是在传统卷积的基础上,增加了调整卷积核的方向向量,使的卷积核的形态更贴近特征物。那么这个过程是如何实现的?下面我们详细说一下这个过程。

① 我们一开始,和正常的卷积神经网络一样,根据输入的图像,利用传统的卷积核提取特征图。

②我们把得到的特征图作为输入,对特征图再施加一个卷积层,这么做的目的是为了得到可变形卷积的变形的偏移量。

③偏移层是2N,是因为我们在平面上做平移,需要改变x xx值和y yy值两个方向。

在训练的时候,用于生成输出特征的卷积核和用于生成偏移量的卷积核是同步学习的。其中偏移量的学习是利用插值算法,通过反向传播进行学习。

在这里插入图片描述

在这里插入图片描述
上图就是可变形卷积核的计算思想。真可谓是简单而不简约。

参考文章
可变形卷积Deformable Convolution Net(DCN)理解
论文阅读-可变形卷积网络:Deformable Convolutional Networks
deformable convolution(可变形卷积)算法解析及代码分析
可变形的卷积网络