记录一下一些卷积模块

文章目录

  • 很久之前记录的。不知道来源,侵权联系可删。(●'◡'●)
  • 分组卷积
  • 膨胀卷积
  • 深度可分离卷积
  • 池化
  • 层归一化
  • 混合膨胀卷积

很久之前记录的。不知道来源,侵权联系可删。(●’◡’●)

分组卷积

分组卷积是一种在卷积神经网络中常用的技术,它将输入和卷积核分成多个组。在每个组内进行卷积操作后,再将结果进行合并。
具体来说,如果有一个输入张量和一个卷积核张量,两个张量的形状分别为 ( N , C i n , H i n , W i n ) (N, C{in}, H{in}, W{in}) (N,Cin,Hin,Win) ( C o u t , C i n G , k h , k w ) (C{out}, \frac{C{in}}{G}, kh, kw) (Cout,GCin,kh,kw),其中 N N N是批量大小, C i n C{in} Cin是输入通道数, H i n H{in} Hin W i n W{in} Win分别为输入的高度和宽度, C o u t C{out} Cout是输出通道数, k h kh kh k w k_w kw是卷积核的高度和宽度, G G G是组数。
那么,分组卷积将输入和卷积核分成 G G G组,每个组的通道数为 C i n G \frac{C{in}}{G} GCin(注意, C i n C{in} Cin必须是 G G G的倍数)。然后,对于每个组,用对应的卷积核进行卷积操作。最后,将所有组的结果合并为输出张量,其形状为 ( N , C o u t , H o u t , W o u t ) (N, C{out}, H{out}, W{out}) (N,Cout,Hout,Wout),其中 H o u t H{out} Hout W o u t W_{out} Wout分别为输出的高度和宽度。
分组卷积的优点是能够减少网络的计算量,从而降低模型的复杂度。例如,在深度可分离卷积中,就利用了分组卷积的思想,将一个普通卷积分解为一个深度卷积和一个逐点卷积,从而减少了计算量,同时还能提高模型的效果。

分组卷积是一种将输入和权重拆分为多个部分,并在每个部分上独立执行卷积操作的方式。分组卷积中的“组”指的是将输入和权重划分为多个部分,每个组只与一部分权重进行卷积。这种方式可以将计算分布到多个部分,从而增加并行度,并且通过减少参数数量来有效地控制模型的大小。


膨胀卷积

膨胀卷积(Dilated, Atrous Convolution)是一种卷积神经网络中常用的卷积操作,主要用于在保持特征图大小的情况下扩大卷积核的感受野。
在传统的卷积操作中,卷积核的大小以及步幅都是固定的,因此只能获取局部信息。而膨胀卷积则通过在卷积核的周围添加一定间隔的空洞来扩展卷积核的野。此时,卷积核中间的空洞相当于用0填充了一定数量,从而间接的使得感受野扩大了,这样就可以获取更多的上下文信息。
具体来说,如果有一个输入张量和一个卷积核张量,两个张量的形状分别为 ( N , C i n , H i n , W i n ) (N, C{in}, H{in}, W{in}) (N,Cin,Hin,Win) ( C o u t , C i n , k h , k w ) (C{out}, C{in}, kh, kw) (Cout,Cin,kh,kw),其中 N N N是批量大小, C i n C{in} Cin是输入通道数, H i n H{in} Hin W i n W{in} Win分别为输入的高度和宽度, C o u t C{out} Cout是输出通道数, k h kh kh k w k_w kw是卷积核的高度和宽度。
那么,膨胀卷积就是在卷积核中添加一定的空洞,空洞的数量即为膨胀率(dilation rate),通常是1、2、3等。在卷积操作中,卷积核的每个位置都只与输入张量中相应位置的值进行卷积计算,空白区域则不计算。最后,将所有卷积操作的结果相加并输出。
膨胀卷积的优点在于,它能够通过扩大卷积核的野来获取更多的上下文信息,从而在不增加计算量和参数数量的情况下提高了模型性能。在图像处理、语音处理等领域,膨胀卷积被广泛应用于特征提取和下采样操作中,例如DeepLab中就使用膨胀卷积来提高语义分割的性能。
膨胀卷积的主要缺点是网格效应(grid effect),即在膨胀卷积中,卷积核的一些部分可能会对输入特征图中相邻像素进行重复计算,从而导致过拟合和破坏卷积操作的局部性。为了解决这个问题,通常使用混合膨胀卷积,即在一个层中使用不同膨胀率的卷积核,并将它们在通道维度上连接起来。这种方法可以提高神经网络的感受野大小,同时缓解网格效应带来的影响。


计算膨胀卷积感受野的公式为:

R i = R i − 1 + ( k d − 1 ) × ( J i − 1 ) R_{i} = R_{i-1} + (k_d - 1) \times (J_{i-1}) Ri=Ri1+(kd1)×(Ji1)

其中, R i R_i Ri 表示第 i i i 层输入特征图的感受野大小, R i − 1 R_{i-1} Ri1 表示前一层的感受野大小, k d k_d kd 表示卷积核的空洞率(dilation), J i − 1 J_{i-1} Ji1 表示前一层的步长大小。

膨胀卷积是一种扩展卷积核感受野的方法,通过在卷积核中间插入一定数量的空洞,可以实现在不增加参数数量的情况下扩展卷积核的有效感受野,进而增加神经网络的感受野大小。膨胀卷积的公式和标准卷积非常相似,只不过卷积核中间插入了一定数量的空洞。

深度可分离卷积

深度可分离卷积是一种卷积操作,它将标准卷积解耦成两个操作:深度卷积和逐点卷积。深度卷积只考虑通道之间的相关性,而逐点卷积则只考虑各通道内的空间相关性。这种解耦的方法通过减少冗余计算和参数数量,从而实现更高效的卷积操作,并且可以在一定程度上减少过拟合。

池化

池化是一种从特征图中提取特征的方式,它通过对输入特征图的不同区域(如子区域或通道)进行简单操作,例如平均或最大池化,从而将输出特征图的大小缩小。它可以帮助模型具有一定的平移不变性和尺度不变性,并且可以减少模型的参数数量。

层归一化

层归一化是一种归一化技术,它通过沿着通道维度进行归一化,从而减少网络的内部协变量位移(internal covariate shift),并且可以帮助神经网络更快地收敛并降低训练和测试之间的差距。

混合膨胀卷积

混合膨胀卷积使用的条件取决于输入特征图的尺寸和卷积核的大小。一般来说,使用不同膨胀率的卷积核的混合膨胀卷积适用于相对较大的输入特征图和卷积核,以确保在膨胀卷积时不会出现太多的网格效应。另外,混合膨胀卷积对于更深的神经网络结构和更高的精度要求也更为重要。为了进一步降低网格效应,还可以使用空洞可分离卷积等其他卷积技术,或者使用残差连接等网络结构。

你可能感兴趣的:(深度学习,cnn,神经网络)