当前位置:   article > 正文

卷积运算及其变体

卷积运算

摘要

本篇博客参考一些网络博客对卷积运算及其变体进行总结,以便加深理解和记忆

卷积,是神经网络的重要组件。不同的卷积结构有着不一样的功能,但本质上都是用于特征提取。在传统图像处理中,通过设计不同的算子来提取诸如边缘、水平、垂直等固定的特征。而在CNN中,通过随机初始化一个固定大小的卷积核,通过BP实现参数的自动更新。

根据CNN的可视化结果发现,浅层的滤波器对诸如点、线、面等底层特征比较敏感,深度偏向于提取更加抽象的高级语义特征,从而完成从低级特征到高级特征的映射。

1.2D卷积

  • 卷积核大小:卷积核越小,输入输出的位置越接近;卷积核越大,距离就越远(也决定着参数数量)
  • Stride:Stride的作用是成倍缩小尺寸,而这个参数的值就是缩小的具体倍数,比如步幅为2,输出就是输入的1/2;步幅为3,输出就是输入的1/3。以此类推
  • 每个filter实际上是“卷积核”的一个集合,每个通道都对应一个卷积核。每个filter有且只有一个输出通道,filter把每个通道处理后的结果加在一起形成一个总的通道。最后,每个filter输出后都要加上一个偏置项
  • 卷积仍是线性变换

如果是任何其他类型的数据,比如应用程序的安装序列号,卷积的这种操作完全不起作用。因为序列号虽然是一系列有顺序的数字,但他们彼此间没有共享的信息,也没有潜在联系。但在图像中,像素总是以一致的顺序出现,并且会始终对周围像素产生影响:如果所有附近的像素都是红色,那么我们的目标像素就很可能也是红色的。如果这个像素最终被证明存在偏差,不是红色的,那这个有趣的点就可能会被转换为特征(早期计算机视觉特征提取的基础:通过对比像素和临近像素的差异来学习特征

边缘检测Sobel edge detection:Horizontal Sobel kernel: [ 1 0 − 1 2 0 − 2 1 0 − 1 ] [101202101] 121000121

  • 感受野

深度学习相比于传统方法,自动地寻找filter(激活特征),然而无论特征检测器有多深,在没有进一步改变的情况下,它的大小只有3×3,不可能检测到完整的边缘,这就是感受野的问题

无论是什么CNN架构,它们的基本设计就是不断压缩图像的高和宽,同时增加通道数量,也就是深度。这可以通过池化和Stride来实现。局部性影响的是临近层的输入输出观察区域,而感受野决定的则是整个网络原始输入的观察区域。图像下采样后,再进行卷积或使用更大的卷积核,感受野就会变大

  • 卷积的数学意义以及与图像中卷积运算的联系

∫ − ∞ + ∞ f ( r ) g ( x − r ) d r \int_{-∞}^{+∞} f(r)g(x-r)dr +f(r)g(xr)dr,记作 h ( x ) = ( f ∗ g ) ( x ) h(x)=(f*g)(x) h(x)=(fg)(x)。一个系统输入不稳定,输出不稳定,可以使用卷积求存量

卷积的本质:翻转、相乘、相加的过程

图像的卷积操作,可以理解为很多像素点对某一个像素点是如何产生影响的,图像是函数f,卷积核是函数g,卷积核旋转180度才是真正的卷积,但是对于图像卷积操作来说就是省去了翻转这一操作,但这并不影响图像操作。

2.分组卷积(Group Convolution)

AlexNet最早分组卷积是由于受单个GPU算力的限制,将网络切分能够在多个GPU上并行计算。Alexnet分组卷积中,不同的通道特征会被划分到不同的组里面,直到网络末端才将其融合起来,中间过程显然缺乏信息交互(考虑到不同滤波器可以提取到不同的特征)

Inception系列网络(split-transform-merge)中有两个问题:网络超参数设定针对性强,扩展时需要修改的参数较多

基于此提出ResNeXt,在ResNeXt中每个聚合的拓扑结构是一样的,为了减轻设计负担。另外,论文中提到:增加cardinality比增加深度和宽度更有效。

组卷积可以看做是对原始卷积操作的一种解耦,改善原始卷积操作中滤波器之间的稀疏性,在一定程度上起到正则化的作用。但是这样做还是只能完成组内的信息交流,因此为了能够解决跨组间的通道信息交流,提出了ShuffleNet

3.转置卷积(Transposed Convolution)

转置卷积,又称为反卷积(Deconvolution)或者微步卷积(Fractionally-strided Convolution)。CNN中通常需要进行上采样来提高图像分辨率,上采样的传统方法如:最近邻插值、双线性插值、双立方插值(不可动态调参)

转置卷积可用于上采样(提高图像分辨率、GAN中生成完整图片)

与常规卷积不同转置卷积是一种一对多的映射关系,而且这个矩阵参数是可学习的,利用转置卷积可以引入参数让网络自动学习卷积核的权重以更好地恢复空间分辨率,使用转置卷积来代替常规操作通常会取得更好的效果,但是也增大了参数量,且容易出现网络效应(Checkerboard Artifacts)

4.1×1卷积

1x1卷积最初提出的目的适用于增强模型对特定感受野下的局部区域判定能力。

  • 增强非线性,提升特征表达能力。1x1卷积本质上也是一个带参数的率滤波器,再不改变特征图本身尺寸的情况下,能够增加网络深度,通过在卷积后通过非线性激活函数可以有效增强网络的表达能力。
  • 升维和降维
  • 跨通道的信息交互。1x1卷积本质上就是多个特征图之间的线性组合(可以看做是一种全连接full connection),因此通过1x1卷积操作可以轻松实现跨通道的信息交互和整合。

5.空洞卷积(AtrousConv)

空洞卷积,也叫扩张卷积(Dilated Convolution)最早是针对语义分割任务提出来的。

由于上采样操作(如双线性插值)是不可学习的所以并不能重建回原始空间,此外引入池化操作不可避免地会导致内部数据结构丢失,导致空间层化细节信息严重丢失,经过N次池化,原则上有 2 N 2^N 2N个像素点的目标信息不可重建,这对于这种密集型预测任务来说是致命的。

  • 增大感受野。空洞卷积可以在同等卷积核参数下获得更大的感受野,对于需要全局语义信息或者需要长序列信息依赖的任务中,可以考虑使用空洞卷积。
  • 表征多尺度信息。利用带有不同空洞的卷积,还可以捕捉多尺度的上下文语义信息,不同的孔洞率代表着不同的感受野,意味着网络能够感知到不同尺寸的目标

虽然引入空洞卷积可以在参数不变的情况下增大感受野(respecitve field),但是由于空间分辨率的增大,在实际应用中不好优化,而且速度方面是一个诟病。此外应用空洞卷积也会引入网格效应(griding effect)

《Understanding Convolution for Semantic Segmentation》论文指出如果多次使用空洞率相同的卷积提取特征时会损失掉信息的连续性。特征时针对小目标来说,一个解决方案就是令所叠加的卷积空洞率不能出现大于1的公约数,如[1, 2, 5],使其呈现锯齿结构,这种做法称作Hybrid Dialted Convolution

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

深度可分离卷积DWConv,由深度卷积(Depthwise Convolution)和逐点卷积(Pointwise convolution)两部分组成(实际可以理解为group=1的分组卷积)

标准的卷积过程中对应图像区域中的所有通道被同时考虑,而深度分离卷积将通道和空间区域分开,对不同的输入通道采取不同的卷积核进行卷积,将普通的卷积操作分解为两个过程,目的是希望能用较少的参数学习更为丰富的特征表示。

深度可分离卷积虽然参数量小,模型容量小,计算次数少但未必就计算高效,因为会重复多次调用内存,导致计算效率并不高。

7.可形变卷积(DeformableConv)

传统CNNs中卷积核固定的几何结构无法对位置的物体形变进行有效建模,因此提出可形变卷积用于解决此问题。在计算机视觉领域中,同一物体在不同场景,角度中未知的集合变换是任务的一大挑战

可形变卷积并不是真正意义上的学习可形变的卷积核,而是利用额外的卷积层去学习相应的偏移量,将得到的偏移量叠加到输入特征图中相应位置的像素点中,但由于偏移量的生成会产生浮点数类型,而偏移量又必须转换为整形,如果直接取整的话是无法进行反向传播的,因此原文是利用双线性插值的方式间接计算对应的像素值。

可形变卷积的流程:

  • 原始图像大小(b×h×w×c),记做U,经过一个普通卷积,卷积填充为same,即输入输出大小不变,则对应的输出结果为(b×h×w×2c),记做V,输出的结果是指原图片batch中每个像素的偏移量(x偏移与y偏移,因此为2c)
  • 将U中图片的像素索引值与V相加,得到偏移的position(即在原始图片U中的坐标值),需要将position先固定图片大小以内,position只是一个坐标值而且是float类型的,因此需要将这些float转换为int
  • 例,一个坐标值(a,b)将其转换为四个整数,floor(a), ceil(a), floor(b), ceil(b),将这四个整数进行整合,得到四对坐标,然后用双线性插值计算需要得到的(a,b)的像素值
  • 在得到position的所有像素后,即得到了一个新的图片M作为输入数据集输入到别的层中。

传统的卷积核由于尺寸形状固定,其激活单元的感受野也相对固定,但实际上同一物体由于不同位置可能对应着不同的尺度或者变形,因此自适应感受野是进行精准定位所需要的,特别是对于密集型预测任务来说**,可形变卷积基于一个平行的网络来学习偏移,让卷积在输入特征图能够发散采样,使网络能够聚焦目标中心,从而提高对物体形变的建模能力。**

可形变卷积在一定程度上提升模型特征提取的泛化能力,但同时也会引入一些不想关的背景干扰,因此提出改进版本《Deformable ConvNets v2: More Deformable, Better Results》并给出了三种相应的解决方案:

  • 使用更多数量的可形变卷积
  • 为每个偏置添加相应的权重
  • 模仿R-CNN中的特征(R-CNN feature mimicking)

然而,可形变卷积的计算效率的确是一个值得商榷的问题,从另一个角度看,可形变卷积是对局部区域的自注意操作

8.空间可分离卷积

SSConv,与深度可分离卷积一样,空间可分离卷积也属于因式分离卷积的一种,其核心思想就是从图像空间维度(宽度和高度)进行卷积运算。空间可分离卷积的工作原理是将卷积核拆分为两部分,即将一个kxk的卷积核拆成kx1和1xk两个方向的卷积核分别对输入特征图进行卷积,以降低复杂度。

前提:卷积核得是高斯核。将高斯核拆解为两个一维向量分别于图像进行卷积操作,主要作用就是加速。

9.非对称卷积AsymmetricConv

其核心思想就是将原始卷积分解,该算法将三个分别具有正方形,水平核和垂直核的卷积分支的输出求和,从而在保证精度相当的情况下降低参数量和计算量。

非对称卷积具有增强标注卷积核的特征表达能力。ACNet有效的原因分析:方框卷积的分布参数分布不均匀,中心十字交叉位置的权值更大,使表达能力进一步增强。

10.8度卷积Octave Convolution

在自然图像中,信息以不同的频率传递,其中较高的频率通常用精细的细节编码,较低的频率通常采用全局结构编码。同样卷积层的输入特征图也可以看做是不同频率下信息的混合,因此考虑将混合特征图按其频率分解。

自然图像可以分解为描述平稳变化结构的低空间频率分量和描述快速变化精细细节的高空间频率分量,因此,卷积层的输出图也可以根据其空间频率分解和分组,即多频率特征表示方法将平滑变化的低频映射存储在低分辨率张量中,以减少空间冗余。

8度卷积的核心思想是通过对数据中低频信息减半从而达到加速卷积运算的目的。

对于普通卷积,所有输入和输出特征图具有相同的空间分辨率。根据自然图像可以分解为捕捉全局布局和粗结构的低频信号和捕捉精细细节的高频信号,类似的,卷积输出的特征也对应有一个映射机制,它捕获空间低频变化并包含空间冗余信息,为了减少这种冗余,引入了OCtave特征表示,它显示地将特征映射张量分解为对应于低频和高频的组。尺度空间理论提供了一种创建空间分辨率尺度空间的原则方法,用这种方式定义低频和高频空间,即将低频特征图的空间分辨率降低一个Octave。

输入: X 高频特征:获取高频特征: f ( X H ; W H → H )      获取低频特征: f ( p o o l ( X H , 2 ) ; W H → L ) 低频特征:获取高频特征: u p s a m p l e ( f ( X L ; W L → H ) , 2 )      获取低频特征: f ( X L ; W L → L ) a i n t , a o u t 控制高低频的输入输出通道数量 输入:X \\ 高频特征:获取高频特征:f(X^H;W^{H→H}) \;\; 获取低频特征:f(pool(X^H,2);W^{H→L})\\ 低频特征:获取高频特征:upsample(f(X^L;W^{L→H}),2) \;\;获取低频特征:f(X^L;W^{L→L}) \\ a_{int},a_{out}控制高低频的输入输出通道数量\\ 输入:X高频特征:获取高频特征:f(XH;WHH)获取低频特征:f(pool(XH,2);WHL)低频特征:获取高频特征:upsample(f(XL;WLH),2)获取低频特征:f(XL;WLL)aint,aout控制高低频的输入输出通道数量
将卷积特征图分成两组,一组低频,一组高频,(两组频率之间会通过上采样和下采样进行信息交互),低频特征图的大小会减半从而有效减少存储以及计算量,另外,由于特征图大小减半,卷积核大小不变,感受野就变大了,可以抓取更多的上下文信息。

11.异构卷积HeConv

Heterogeneous Convolution主要侧重于通过设计新的卷积核降低模型的计算成本,在保证低延时的同时做到精度无损。异构卷积的结构设计很简单,即将输入特征如的一部分通道应用kxk卷积核,其余的通道应用1x1的卷积核。其中,P为控制卷积核为k的比例。

12.条件参数化卷积CondConv

可看作为动态网络的开端,最重要的是原理简单,效果非常好。卷积层设计中的一个基本假设是,相同的卷积核应用于数据集中的每个样本 。在本文中,作者提出的条件参数化卷积(CondConv) ,通过基于输入来动态计算卷积核,从而避免了传统静态的卷积中所有样本共享一个卷积核的缺点。具体地,作者将CondConv层中的卷积核参数化为n个专家(卷积核)的线性组合,即: a 1 W 1 + a 2 W 2 + . . . + a n W n a_1W_1+a_2W_2+...+a_nW_n a1W1+a2W2+...+anWn

13.动态卷积DynamicConv

根据输入图像,自适应的调整卷积的参数,静态的卷积核对于不同的输入均作同样的处理,而动态卷积核则会根据输入的不同有针对性地利用不同的卷积核选择合适的卷积参数去进行特征提取。**通过融合注意力机制动态地聚合多个并行的卷积核。**通过对输入进行注意力机制操作后得到每个卷积核的权重,将学习到的权重叠加到不同卷积核上实现卷积核的动态选取。

本质上就是将一个常规卷积变成k个卷积的attention权重和,主要包含两个步骤:

  • SE attention 的k个权值
  • 与K个卷积核的聚合

有点类似于Condconv,对每个样本单独计算不同的卷积层,方法几乎一致,出发点不同。Condconv是从分支集成的角度,而DynamicConv是从权重attention的角度。算是对Condconv的改进版本吧。但是依旧存在着问题就是极大的内存开销。

论文中还做了不同权重聚合方式的Alation

  • attention:k套权重加权求和
  • average:k套权重去平均(不同样本使用相同的weight,weight不再有input-dependency)
  • max,k套权重中选取最大的,证明对于同一个input x使用多套权重聚合的有效性,并不是收敛到某台权重上
  • shuffle per image,同一个x,shuffle k 套权重,证明网络确实学到了该如何分配k套权重
  • shuffle acroos images:对图像使用x’计算得到attention,证明确实存在input-dependency

14.幻影卷积Ghost Block

通过堆叠卷积层可以捕获丰富的特征信息,其中也包含了冗余信息,这有利于网络对数据有全面的理解。因此,可以通过常规卷积操作提取丰富的特征信息,对于冗余信息,则利用更廉价的线性变换(指不进行BN和非线性激活的卷积)操作生成。其核心思想就是利用简单廉价的线性变化来等效生成特征图,无需多余的滤波器生成,以此提高网络的计算效率。

通常情况下,为了对输入数据有更好的理解,使用普通卷积训练的神经网络,在训练完成后会生成很多冗余的特征图,称之为“幻影”。由此,提出ghost module使用更少的参数产生更多的特征。

例子:设输入特征图的shape为[28,28,6],首先对输入特征图使用1×1卷积减少通道数,shape变为[28,28,3];再使用3×3深度卷积对每个通道特征图提取特征,shape为[28,28,3],可以看作是经过前一层的一系列线性变换得到的;最后将两次卷积的输出特征图在通道维度上堆叠,shape 变为 [28,28,6]

15.空间和通道重建卷积SCConv

Spatial and Channel reconstruction Convolution, 空间和通道重建卷积,目的是减少卷积神经网络中特征之间的空间和通道冗余,从而压缩CNN模型并提高其性能。包含两个模块:SRU (Spatial Reconstruction Unit, 空间重构单元) ,和 CRU (Channel Reconstruction Unit, 通道重构单元) 。其中 SRU 通过 分离-重构方法 来减少空间冗余,CRU 则使用 分割-转换-融合方法 来减少通道冗余。这两个单元协同工作,以减少CNN中特征的冗余信息。

  • SRU

    • 分离 操作的目的是将信息量大的特征图从信息量小的特征图中分离出来,与空间内容相对应。作者使用组归一化 (Group Normalization) 里的缩放因子来评估不同特征图中的信息含量。

    X o u t = G N ( X ) = r X − u σ 2 + ε + β , u 和 σ 为 G r o u p    N o r m 计算出的均值和标准差, r 和 β 是可学习参数 W r = { w i } = r i ∑ j = 1 C r j W = G a t e ( S i g m o i d ( W r ( G N ( X ) ) ) ) X_{out} = GN(X) = r \frac {X-u} {\sqrt{σ^2+ε} + β},u和σ为Group\;Norm计算出的均值和标准差,r和β是可学习参数\\ W_r = \{w_i\} = \frac {r_i} {\sum_{j=1}^C r_j} \\ W = Gate(Sigmoid(W_r(GN(X)))) Xout=GN(X)=rσ2+ε +βXu,uσGroupNorm计算出的均值和标准差,rβ是可学习参数Wr={wi}=j=1CrjriW=Gate(Sigmoid(Wr(GN(X))))

    • 重构 操作是将信息量较多的特征和信息量较少的特征相加,生成信息量更多的特征并节省空间。具体的操作是交叉重建,将加权后的两个不同信息特征合并,得到 X w 1 X^{w1} Xw1 X w 2 X^{w2} Xw2,连接起来后得到空间细化特征图 X W X^W XW

    X 1 w = W 1 × X ,    X 2 w = W 2 × X ( × 为元素乘法) X 11 w + X 22 w = X w 1 ,    X 21 w + X 12 w = X w 2 ( + 为元素加法) X w 1 ∪ X w 2 = X W X_1^w = W_1 × X,\;X_2^w=W_2×X(×为元素乘法)\\ X_{11}^w + X_{22}^w = X^{w1},\;X_{21}^w + X_{12}^w = X^{w2}(+为元素加法) \\ X^{w1}∪X^{w2}=X^W X1w=W1×XX2w=W2×X×为元素乘法)X11w+X22w=Xw1,X21w+X12w=Xw2+为元素加法)Xw1Xw2=XW

    经过 SRU 处理后,信息量大的特征从信息量小的特征中分离出来,减少了空间维度上的冗余特征。

  • CRU

    • 分割 操作将输入的空间细化特征 X w X^w Xw分割为两部分:一部分的通道数是aC,另一部分的通道数是 (1−a)C ,其中 a是超参数且 0≤a≤1 。随后对两组特征的通道数使用 1×1 卷积核进行压缩,分别得到 X u p X_{up} Xup X l o w X_{low} Xlow
    • 转换 操作将输入的 X u p X_{up} Xup作为“富特征提取”的输入,分别进行 GWC 和 PWC,然后相加得到输出 Y 1 Y_1 Y1 。将输入 X l o w X_{low} Xlow作为“富特征提取”的补充,进行 PWC,得到的结果和原来的输入取并集得到 Y 2 Y_2 Y2 。(分组卷积 GWC、逐点卷积 PWC)
    • 融合 操作使用简化的 SKNet 方法来自适应的合并 Y 1 Y_1 Y1 Y 2 Y_2 Y2 。具体来说,首先使用全局平均池化技术,将全局空间信息和通道统计信息结合起来,得到经过池化的 S 1 S_1 S1 S 2 S_2 S2。然后对 S 1 S_1 S1 S 2 S_2 S2 做 Softmax 得到特征权重向量 β1 和β2 。最后使用特征权重向量得到输出 Y=β1Y1+β2Y2 ,Y 即为通道提炼的特征。
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号