各种卷积的流程和优缺点

一.常规卷积

各种卷积的流程和优缺点_第1张图片

假设5x5x3的输入,如果想要得到3x3x4的feature map,那么卷积核的shape为3x3x3x4。

卷积层的参数数量可以用如下公式来计算 (即:卷积核W x 卷积核H x 输入通道数 x 输出通道数):

参数量 = 3 × 3 × 3 × 4 = 108

计算量 = 3*3*(5-2)*(5-2)*3*4=972

(即:卷积核W x 卷积核H x (图片W-卷积核W+1) x (图片H-卷积核H+1) x 输入通道数 x 输出通道数

二. 深度可分离卷积(Depthwise separable convolution)

(1)卷积过程

      深度可分离卷积主要分为两个过程,分别为逐通道卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。

 1.逐通道卷积(Depthwise Convolution)

  • 各种卷积的流程和优缺点_第2张图片

每个卷积核只卷对应通道,

参数量 = 3 × 3 × 3  = 27

计算量=3x3x(5-2)x(5-2)x3=243(即:卷积核W x 卷积核H x (图片W-卷积核W+1) x (图片H-卷积核H+1) x 输入通道数

2.逐点卷积(Pointwise Convolution)

Pointwise Convolution的运算与常规卷积运算非常相似,只是它的卷积核的尺寸为 1×1×M,M为上一层的通道数。

各种卷积的流程和优缺点_第3张图片

 参数量 = 1 × 1 × 3 × 4 = 12

计算量 = 1 × 1 × 3 × 3 × 3 × 4 = 108

(2)优缺点

   深度可分离卷积的优点是可大幅度减少卷积的参数。因此对于规模较小的模型,如果将2D卷积替换为深度可分离卷积,其模型大小可能会显著降低,模型的能力可能会变得不太理想,因此得到的模型可能是次优的。但如果使用得当,深度可分离卷积能在不牺牲模型性能的前提下显著提高效率。由于内存带宽和数据IO的限制,深度可分离卷积在GPU上的速度并不快,其主要原因是内存访问量很高。

各种卷积的流程和优缺点_第4张图片

 三. 可变形卷积(deformable convolution,DConv)

(1)卷积过程

可变形卷积的核心就是增加一个offset矩阵,实现无规律踩点卷积。

(a)是正常卷积,(b),(c),(d)是可变形卷积,箭头就是offset偏移量。

 如上图所示,偏差通过一个卷积层conv获得,输入特征图,输出偏差。生成通道维度是2N,其中的2分别对应X和Y这2个2D偏移,N是通道数。两个卷积核通过双线性插值后向传播算法同时学习。相当于比正常的卷积多输出了偏移特征。

(2)优缺点

 效果更好,支持了任意形状。特别是对于不规则和旋转目标的检测。

缺点是增加了计算量。卷积核一旦很大,那么整个算法会消耗掉非常大的空间,所以不建议在大卷积核中使用。

可以用分组思想降低计算量。

四. 分组卷积

(1)卷积过程

 分组卷积是将过滤器进行分组,上图为分为两组的形式,各自卷一半。组合成最后特征图。如果分两组,分组卷积的计算量会减小一般。

计算量 = 3*3*(5-2)*(5-2)*3/2*2=972

即:卷积核W x 卷积核H x (图片W-卷积核W+1) x (图片H-卷积核H+1) x 输入通道数/分组数 x 输出通道数/分组数 x 组数

(2)优缺点

优点.:分组卷积的参数量是正常卷积的1/N; 分组卷积可以看成是正常卷积的稀疏结构,可以视为一种正则,有防止过拟合的作用;过滤器分组似乎会将学习到的过滤器结构性地组织成两个不同的分组(AlexNet作者)。

缺点:数据信息只存在本组里面。通道之间的信息没有交互,存在信息的屏蔽和阻塞,不流通。

五. 空洞卷积(Dilated Convolution)

(1)卷积过程

image

 空洞卷积有一个参数可以设置dilation rate,具体含义就是在卷积核中相邻两个值内填充dilation rate-1个0。如图所示,3x3的卷积感受野变成了5x5。

(2)优缺点

优点:1.扩大感受野。但需要明确一点,池化也可以扩大感受野,但空间分辨率降低了,相比之下,空洞卷积可以在扩大感受野的同时不丢失分辨率,且保持像素的相对空间位置不变。简单而言,空洞卷积可以同时控制感受野和分辨率。2. 获取多尺度上下文信息。当多个带有不同dilation rate的空洞卷积核叠加时,不同的感受野会带来多尺度信息,这对于分割任务是非常重要的。3.可以降低计算量,不需要引入额外的参数。

缺点:1.网格效应:仅仅多次叠加 dilation rate 相同的相同尺寸卷积核,会导致kernel 不连续,进而导致不是所有的像素都用来计算了,因此这会损失信息的连续性。2.远距离特征可能不相关:空洞卷积卷的不是相邻像素,不相邻像素对小目标可能并不是同一物体。如果光采用大的扩张率的卷积可能只对一些大物体分割有效果,那么对小目标来说就不太友好了。因此设计好空洞卷积层的关键在于如何同时处理不同大小物体的关系。

你可能感兴趣的:(深度学习,卷积)