【图解AI:动图】各种类型的卷积,你认全了吗?

本文详细介绍了深度学习中的卷积操作,包括卷积的基本属性如卷积核、步长和填充,以及卷积的不同类型:标准卷积(二维和三维)、1x1卷积、反卷积、空洞卷积、可分离卷积(空间和深度可分离)、扁平卷积和分组卷积。这些卷积类型在图像特征提取和计算效率方面各有优势,广泛应用于现代深度学习模型中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a72876b488df2b747f250e9e6b9a8373e9d.jpg

       转自这里

      卷积(convolution)是深度学习中非常有用的计算操作,主要用于提取图像的特征。在近几年来深度学习快速发展的过程中,卷积从标准卷积演变出了反卷积、可分离卷积、分组卷积等各种类型,以适应于不同的场景,接下来一起来认识它们吧。

一、卷积的基本属性
 

卷积核(Kernel):卷积操作的感受野,直观理解就是一个滤波矩阵,普遍使用的卷积核大小为3×3、5×5等;
步长(Stride):卷积核遍历特征图时每步移动的像素,如步长为1则每次移动1个像素,步长为2则每次移动2个像素(即跳过1个像素),以此类推;
填充(Padding):处理特征图边界的方式,一般有两种,一种是对边界外完全不填充,只对输入像素执行卷积操作,这样会使输出特征图的尺寸小于输入特征图尺寸;另一种是对边界外进行填充(一般填充为0),再执行卷积操作,这样可使输出特征图的尺寸与输入特征图的尺寸一致;
通道(Channel):卷积层的通道数(层数)。
如下图是一个卷积核(kernel)为3×3、步长(stride)为1、填充(padding)为1的二维卷积:

二、卷积的计算过程
       

          卷积的计算过程非常简单,当卷积核在输入图像上扫描时,将卷积核与输入图像中对应位置的数值逐个相乘,最后汇总求和,就得到该位置的卷积结果。不断移动卷积核,就可算出各个位置的卷积结果。如下图:

3e0200b4dbbc34d2f96e20aa5e072c1ff4a.jpg

三、卷积的各种类型
     

       卷积现在已衍生出了各种类型,包括标准卷积、反卷积、可分离卷积、分组卷积等等,下面逐一进行介绍。
 

1、标准卷积
 

(1)二维卷积(单通道卷积版本)(2D Convolution: the single channel version)

          只有一个通道的卷积。如下图是一个卷积核(kernel)为3×3、步长(stride)为1、填充(padding)为0的卷积:

(2)二维卷积(多通道版本)(2D Convolution: the multi-channel version)
         

          拥有多个通道的卷积,例如处理彩色图像时,分别对R, G, B这3个层处理的3通道卷积,如下图:

       再将三个通道的卷积结果进行合并(一般采用元素相加),得到卷积后的结果,如下图:

(3)三维卷积(3D Convolution)
         

          卷积有三个维度(高度、宽度、通道),沿着输入图像的3个方向进行滑动,最后输出三维的结果,如下图:

9d95948c9d59894995d50fcbfe107dc2299.jpg

(4)1x1卷积(1 x 1 Convolution)
         

            当卷积核尺寸为1x1时的卷积,也即卷积核变成只有一个数字。如下图:

c86bf4291094f83aa93208008a0bc31676c.jpg

        从上图可以看出,1x1卷积的作用在于能有效地减少维度,降低计算的复杂度。1x1卷积在GoogLeNet网络结构中广泛使用。

2、反卷积(转置卷积)(Deconvolution / Transposed Convolution)
       

          卷积是对输入图像提取出特征(可能尺寸会变小),而所谓的“反卷积”便是进行相反的操作。但这里说是“反卷积”并不严谨,因为并不会完全还原到跟输入图像一样,一般是还原后的尺寸与输入图像一致,主要用于向上采样。从数学计算上看,“反卷积”相当于是将卷积核转换为稀疏矩阵后进行转置计算,因此,也被称为“转置卷积”
       如下图,在2x2的输入图像上应用步长为1、边界全0填充的3x3卷积核,进行转置卷积(反卷积)计算,向上采样后输出的图像大小为4x4

3、空洞卷积(膨胀卷积)(Dilated Convolution / Atrous Convolution)
       

       为扩大感受野,在卷积核里面的元素之间插入空格来“膨胀”内核,形成“空洞卷积”(或称膨胀卷积),并用膨胀率参数L表示要扩大内核的范围,即在内核元素之间插入L-1个空格。当L=1时,则内核元素之间没有插入空格,变为标准卷积。
       如下图为膨胀率L=2的空洞卷积:

4、可分离卷积(Separable Convolutions)
 

(1)空间可分离卷积(Spatially Separable Convolutions)
           

             空间可分离卷积是将卷积核分解为两项独立的核分别进行操作。一个3x3的卷积核分解如下图:

1a243d8d808a9f40b9f167946aa7af28fcc.jpg

          分解后的卷积计算过程如下图,先用3x1的卷积核作横向扫描计算,再用1x3的卷积核作纵向扫描计算,最后得到结果。采用可分离卷积的计算量比标准卷积要少。

7f02b4fcc0cf58a07a536dfe40ff6cbe816.jpg

(2)深度可分离卷积(Depthwise Separable Convolutions)
     

       深度可分离卷积由两步组成:深度卷积和1x1卷积。
      首先,在输入层上应用深度卷积。如下图,使用3个卷积核分别对输入层的3个通道作卷积计算,再堆叠在一起。

bb3b53ab9b1c517b88df6190785c314d19a.jpg

        再使用1x1的卷积(3个通道)进行计算,得到只有1个通道的结果

b57852e7bef6abe667acb8a804b8e7719ee.jpg

       重复多次1x1的卷积操作(如下图为128次),则最后便会得到一个深度的卷积结果。

7de52ee96501d2ab58f213cd9bc42e31b69.jpg

        完整的过程如下:

c36f99138e32724705aa5c210a1067013ef.jpg

5、扁平卷积(Flattened convolutions)
       

          扁平卷积是将标准卷积核拆分为3个1x1的卷积核,然后再分别对输入层进行卷积计算。这种方式,跟前面的“空间可分离卷积”类似,如下图:

2d07be592c6891e7e4557c10a86689290e7.jpg

6、分组卷积(Grouped Convolution)
       

        2012年,AlexNet论文中最先提出来的概念,当时主要为了解决GPU显存不足问题,将卷积分组后放到两个GPU并行执行。
        在分组卷积中,卷积核被分成不同的组,每组负责对相应的输入层进行卷积计算,最后再进行合并。如下图,卷积核被分成前后两个组,前半部分的卷积组负责处理前半部分的输入层,后半部分的卷积组负责处理后半部分的输入层,  最后将结果合并组合。

785efa16bf500dd13c3d099d7746cfa4039.jpg

7、混洗分组卷积(Shuffled Grouped Convolution)
       

        在分组卷积中,卷积核被分成多个组后,输入层卷积计算的结果仍按照原先的顺序进行合并组合,这就阻碍了模型在训练期间特征信息在通道组之间流动,同时还削弱了特征表示。而混洗分组卷积,便是将分组卷积后的计算结果混合交叉在一起输出。
        如下图,在第一层分组卷积(GConv1)计算后,得到的特征图先进行拆组,再混合交叉,形成新的结果输入到第二层分组卷积(GConv2)中:

d1e03fe76ed80f9a4396730d150aa3b3d93.jpg

 

### 卷积计算过程图解 卷积操作是深度学习特别是卷积神经网络(CNNs)的核心组成部分之一。为了更好地理解这一概念,下面提供了一个简单的二维卷积运算图解说明。 #### 输入矩阵与滤波器 假设有一个大小为 \(5 \times 5\) 的输入特征以及一个尺寸为 \(3 \times 3\) 的滤波器(或称为内核)。在这个例子中,将展示如何应用该滤波器到输入上以生成新的表示形式[^1]。 | 输入 Feature Map (5x5) | Filter/Kernel (3x3) | |------------------------|---------------------| | ![Input Matrix](https://latex.codecogs.com/svg.latex?\begin{matrix}0&0&1&1&0\\0&1&1&1&0\\1&1&1&1&1\\0&1&1&1&0\\0&0&1&1&0\end{matrix}) | ![Filter](https://latex.codecogs.com/svg.latex?\begin{matrix}1&0&-1\\1&0&-1\\1&0&-1\end{matrix}) | #### 步骤执行 当进行卷积时,会按照一定的步幅(stride),通常是逐像素移此滤波器遍历整个输入像,并在每次位置处执行元素乘法并求和的操作得到单个数值作为输出的一部分。对于上述给定的例子: 1. 将滤波器放置于左上方角点; 2. 对应位置相乘并将结果累加起来形成第一个输出单元格内的值; 3. 移滤波器至下一个指定的位置继续重复相同的过程直到覆盖部区域; 最终产生的输出将会是一个较小维度的新矩阵,这取决于所使用的具体参数设置如填充(padding) 和步长(strides)。 ```plaintext 原始输入 -> 应用过滤器 -> 输出特征映射 ``` 例如,采用零填充(pad=1) 并保持单位步距,则可以确保输出形状不变仍为\(5\times5\) 或者根据实际情况调整这些超参使得输出更小一些。 #### 形化解释 下展示了完整的卷积流程,其中包含了不同阶段的变化情况: ![Convolution Operation Diagram](https://miro.medium.com/max/700/1*ZzvUJjKXgG8QrYHfDmLwuw.gif) 请注意,在实际实现当中还涉及到多通道的情况,即RGB彩色片会有三个独立的颜色平面参与运算,此时需要扩展成三维张量来进行相应的广播机制下的批量处理。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值