赞
踩
本篇博客参考一些网络博客对卷积运算及其变体进行总结,以便加深理解和记忆
卷积,是神经网络的重要组件。不同的卷积结构有着不一样的功能,但本质上都是用于特征提取。在传统图像处理中,通过设计不同的算子来提取诸如边缘、水平、垂直等固定的特征。而在CNN中,通过随机初始化一个固定大小的卷积核,通过BP实现参数的自动更新。
根据CNN的可视化结果发现,浅层的滤波器对诸如点、线、面等底层特征比较敏感,深度偏向于提取更加抽象的高级语义特征,从而完成从低级特征到高级特征的映射。
如果是任何其他类型的数据,比如应用程序的安装序列号,卷积的这种操作完全不起作用。因为序列号虽然是一系列有顺序的数字,但他们彼此间没有共享的信息,也没有潜在联系。但在图像中,像素总是以一致的顺序出现,并且会始终对周围像素产生影响:如果所有附近的像素都是红色,那么我们的目标像素就很可能也是红色的。如果这个像素最终被证明存在偏差,不是红色的,那这个有趣的点就可能会被转换为特征(早期计算机视觉特征提取的基础:通过对比像素和临近像素的差异来学习特征)
边缘检测Sobel edge detection:Horizontal Sobel kernel: [ 1 0 − 1 2 0 − 2 1 0 − 1 ] [10−120−210−1] 121000−1−2−1
深度学习相比于传统方法,自动地寻找filter(激活特征),然而无论特征检测器有多深,在没有进一步改变的情况下,它的大小只有3×3,不可能检测到完整的边缘,这就是感受野的问题
无论是什么CNN架构,它们的基本设计就是不断压缩图像的高和宽,同时增加通道数量,也就是深度。这可以通过池化和Stride来实现。局部性影响的是临近层的输入输出观察区域,而感受野决定的则是整个网络原始输入的观察区域。图像下采样后,再进行卷积或使用更大的卷积核,感受野就会变大
∫ − ∞ + ∞ f ( r ) g ( x − r ) d r \int_{-∞}^{+∞} f(r)g(x-r)dr ∫−∞+∞f(r)g(x−r)dr,记作 h ( x ) = ( f ∗ g ) ( x ) h(x)=(f*g)(x) h(x)=(f∗g)(x)。一个系统输入不稳定,输出不稳定,可以使用卷积求存量
卷积的本质:翻转、相乘、相加的过程
图像的卷积操作,可以理解为很多像素点对某一个像素点是如何产生影响的,图像是函数f,卷积核是函数g,卷积核旋转180度才是真正的卷积,但是对于图像卷积操作来说就是省去了翻转这一操作,但这并不影响图像操作。
AlexNet最早分组卷积是由于受单个GPU算力的限制,将网络切分能够在多个GPU上并行计算。Alexnet分组卷积中,不同的通道特征会被划分到不同的组里面,直到网络末端才将其融合起来,中间过程显然缺乏信息交互(考虑到不同滤波器可以提取到不同的特征)
Inception系列网络(split-transform-merge)中有两个问题:网络超参数设定针对性强,扩展时需要修改的参数较多
基于此提出ResNeXt,在ResNeXt中每个聚合的拓扑结构是一样的,为了减轻设计负担。另外,论文中提到:增加cardinality比增加深度和宽度更有效。
组卷积可以看做是对原始卷积操作的一种解耦,改善原始卷积操作中滤波器之间的稀疏性,在一定程度上起到正则化的作用。但是这样做还是只能完成组内的信息交流,因此为了能够解决跨组间的通道信息交流,提出了ShuffleNet
转置卷积,又称为反卷积(Deconvolution)或者微步卷积(Fractionally-strided Convolution)。CNN中通常需要进行上采样来提高图像分辨率,上采样的传统方法如:最近邻插值、双线性插值、双立方插值(不可动态调参)
转置卷积可用于上采样(提高图像分辨率、GAN中生成完整图片)
与常规卷积不同转置卷积是一种一对多的映射关系,而且这个矩阵参数是可学习的,利用转置卷积可以引入参数让网络自动学习卷积核的权重以更好地恢复空间分辨率,使用转置卷积来代替常规操作通常会取得更好的效果,但是也增大了参数量,且容易出现网络效应(Checkerboard Artifacts)
1x1卷积最初提出的目的适用于增强模型对特定感受野下的局部区域判定能力。
空洞卷积,也叫扩张卷积(Dilated Convolution)最早是针对语义分割任务提出来的。
由于上采样操作(如双线性插值)是不可学习的所以并不能重建回原始空间,此外引入池化操作不可避免地会导致内部数据结构丢失,导致空间层化细节信息严重丢失,经过N次池化,原则上有 2 N 2^N 2N个像素点的目标信息不可重建,这对于这种密集型预测任务来说是致命的。
虽然引入空洞卷积可以在参数不变的情况下增大感受野(respecitve field),但是由于空间分辨率的增大,在实际应用中不好优化,而且速度方面是一个诟病。此外应用空洞卷积也会引入网格效应(griding effect)
《Understanding Convolution for Semantic Segmentation》论文指出如果多次使用空洞率相同的卷积提取特征时会损失掉信息的连续性。特征时针对小目标来说,一个解决方案就是令所叠加的卷积空洞率不能出现大于1的公约数,如[1, 2, 5],使其呈现锯齿结构,这种做法称作Hybrid Dialted Convolution
深度可分离卷积DWConv,由深度卷积(Depthwise Convolution)和逐点卷积(Pointwise convolution)两部分组成(实际可以理解为group=1的分组卷积)
标准的卷积过程中对应图像区域中的所有通道被同时考虑,而深度分离卷积将通道和空间区域分开,对不同的输入通道采取不同的卷积核进行卷积,将普通的卷积操作分解为两个过程,目的是希望能用较少的参数学习更为丰富的特征表示。
深度可分离卷积虽然参数量小,模型容量小,计算次数少但未必就计算高效,因为会重复多次调用内存,导致计算效率并不高。
传统CNNs中卷积核固定的几何结构无法对位置的物体形变进行有效建模,因此提出可形变卷积用于解决此问题。在计算机视觉领域中,同一物体在不同场景,角度中未知的集合变换是任务的一大挑战。
可形变卷积并不是真正意义上的学习可形变的卷积核,而是利用额外的卷积层去学习相应的偏移量,将得到的偏移量叠加到输入特征图中相应位置的像素点中,但由于偏移量的生成会产生浮点数类型,而偏移量又必须转换为整形,如果直接取整的话是无法进行反向传播的,因此原文是利用双线性插值的方式间接计算对应的像素值。
可形变卷积的流程:
传统的卷积核由于尺寸形状固定,其激活单元的感受野也相对固定,但实际上同一物体由于不同位置可能对应着不同的尺度或者变形,因此自适应感受野是进行精准定位所需要的,特别是对于密集型预测任务来说**,可形变卷积基于一个平行的网络来学习偏移,让卷积在输入特征图能够发散采样,使网络能够聚焦目标中心,从而提高对物体形变的建模能力。**
可形变卷积在一定程度上提升模型特征提取的泛化能力,但同时也会引入一些不想关的背景干扰,因此提出改进版本《Deformable ConvNets v2: More Deformable, Better Results》并给出了三种相应的解决方案:
然而,可形变卷积的计算效率的确是一个值得商榷的问题,从另一个角度看,可形变卷积是对局部区域的自注意操作。
SSConv,与深度可分离卷积一样,空间可分离卷积也属于因式分离卷积的一种,其核心思想就是从图像空间维度(宽度和高度)进行卷积运算。空间可分离卷积的工作原理是将卷积核拆分为两部分,即将一个kxk的卷积核拆成kx1和1xk两个方向的卷积核分别对输入特征图进行卷积,以降低复杂度。
前提:卷积核得是高斯核。将高斯核拆解为两个一维向量分别于图像进行卷积操作,主要作用就是加速。
其核心思想就是将原始卷积分解,该算法将三个分别具有正方形,水平核和垂直核的卷积分支的输出求和,从而在保证精度相当的情况下降低参数量和计算量。
非对称卷积具有增强标注卷积核的特征表达能力。ACNet有效的原因分析:方框卷积的分布参数分布不均匀,中心十字交叉位置的权值更大,使表达能力进一步增强。
在自然图像中,信息以不同的频率传递,其中较高的频率通常用精细的细节编码,较低的频率通常采用全局结构编码。同样卷积层的输入特征图也可以看做是不同频率下信息的混合,因此考虑将混合特征图按其频率分解。
自然图像可以分解为描述平稳变化结构的低空间频率分量和描述快速变化精细细节的高空间频率分量,因此,卷积层的输出图也可以根据其空间频率分解和分组,即多频率特征表示方法将平滑变化的低频映射存储在低分辨率张量中,以减少空间冗余。
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;WH→H)获取低频特征:f(pool(XH,2);WH→L)低频特征:获取高频特征:upsample(f(XL;WL→H),2)获取低频特征:f(XL;WL→L)aint,aout控制高低频的输入输出通道数量
将卷积特征图分成两组,一组低频,一组高频,(两组频率之间会通过上采样和下采样进行信息交互),低频特征图的大小会减半从而有效减少存储以及计算量,另外,由于特征图大小减半,卷积核大小不变,感受野就变大了,可以抓取更多的上下文信息。
Heterogeneous Convolution主要侧重于通过设计新的卷积核降低模型的计算成本,在保证低延时的同时做到精度无损。异构卷积的结构设计很简单,即将输入特征如的一部分通道应用kxk卷积核,其余的通道应用1x1的卷积核。其中,P为控制卷积核为k的比例。
可看作为动态网络的开端,最重要的是原理简单,效果非常好。卷积层设计中的一个基本假设是,相同的卷积核应用于数据集中的每个样本 。在本文中,作者提出的条件参数化卷积(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
根据输入图像,自适应的调整卷积的参数,静态的卷积核对于不同的输入均作同样的处理,而动态卷积核则会根据输入的不同有针对性地利用不同的卷积核选择合适的卷积参数去进行特征提取。**通过融合注意力机制动态地聚合多个并行的卷积核。**通过对输入进行注意力机制操作后得到每个卷积核的权重,将学习到的权重叠加到不同卷积核上实现卷积核的动态选取。
本质上就是将一个常规卷积变成k个卷积的attention权重和,主要包含两个步骤:
有点类似于Condconv,对每个样本单独计算不同的卷积层,方法几乎一致,出发点不同。Condconv是从分支集成的角度,而DynamicConv是从权重attention的角度。算是对Condconv的改进版本吧。但是依旧存在着问题就是极大的内存开销。
论文中还做了不同权重聚合方式的Alation:
通过堆叠卷积层可以捕获丰富的特征信息,其中也包含了冗余信息,这有利于网络对数据有全面的理解。因此,可以通过常规卷积操作提取丰富的特征信息,对于冗余信息,则利用更廉价的线性变换(指不进行BN和非线性激活的卷积)操作生成。其核心思想就是利用简单廉价的线性变化来等效生成特征图,无需多余的滤波器生成,以此提高网络的计算效率。
通常情况下,为了对输入数据有更好的理解,使用普通卷积训练的神经网络,在训练完成后会生成很多冗余的特征图,称之为“幻影”。由此,提出ghost module使用更少的参数产生更多的特征。
例子:设输入特征图的shape为[28,28,6],首先对输入特征图使用1×1卷积减少通道数,shape变为[28,28,3];再使用3×3深度卷积对每个通道特征图提取特征,shape为[28,28,3],可以看作是经过前一层的一系列线性变换得到的;最后将两次卷积的输出特征图在通道维度上堆叠,shape 变为 [28,28,6]
Spatial and Channel reconstruction Convolution, 空间和通道重建卷积,目的是减少卷积神经网络中特征之间的空间和通道冗余,从而压缩CNN模型并提高其性能。包含两个模块:SRU (Spatial Reconstruction Unit, 空间重构单元) ,和 CRU (Channel Reconstruction Unit, 通道重构单元) 。其中 SRU 通过 分离-重构方法 来减少空间冗余,CRU 则使用 分割-转换-融合方法 来减少通道冗余。这两个单元协同工作,以减少CNN中特征的冗余信息。
SRU
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+ε +βX−u,u和σ为GroupNorm计算出的均值和标准差,r和β是可学习参数Wr={wi}=∑j=1CrjriW=Gate(Sigmoid(Wr(GN(X))))
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×X,X2w=W2×X(×为元素乘法)X11w+X22w=Xw1,X21w+X12w=Xw2(+为元素加法)Xw1∪Xw2=XW
经过 SRU 处理后,信息量大的特征从信息量小的特征中分离出来,减少了空间维度上的冗余特征。
CRU
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。