问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

一文读懂深度学习中常见的卷积操作

创作时间:
作者:
@小白创作中心

一文读懂深度学习中常见的卷积操作

引用
CSDN
1.
https://m.blog.csdn.net/diidiii/article/details/144114864

卷积操作是深度学习中一个核心且重要的概念,特别是在卷积神经网络(CNNs)中,它被用来从输入数据(如图像)中提取特征。本文将详细介绍深度学习中常见的几种卷积操作,包括普通卷积、空洞卷积和分组卷积,帮助读者全面理解这些技术及其应用场景。

卷积

卷积是一种数学运算,在信号处理、图像处理等领域有着广泛的应用。它通过两个函数f和g生成第三个函数,这个新函数表示其中一个函数(通常称为卷积核或滤波器)相对于另一个函数的位置变化时两者的重叠程度。在深度学习领域,尤其是在卷积神经网络(CNNs)中,卷积被用来从输入数据(如图像)中提取特征。

普通卷积

在计算机视觉中,卷积通常指的是二维卷积,用于处理图像等二维数据。卷积过程涉及一个称为卷积核(或滤波器)的小矩阵,该矩阵在输入数据(如图像)上滑动,并与每个位置的相应区域进行点乘后相加,生成新的数值作为输出的一部分。这一过程可以形象地理解为用一个“放大镜”在图像上滑动,每次只关注图像的一小部分,通过特定的计算方式(即卷积操作)来生成一个新的、代表了原图像某些特征的输出图像。

2D卷积的具体步骤包括:

  1. 选择卷积核:根据需要提取的特征类型选择合适的卷积核。卷积核的大小通常较小,比如3x3或5x5。

  2. 卷积核滑动:将卷积核放置在输入数据的一个位置,通常是左上角,然后按指定的步长(Stride)水平和垂直方向移动。

  3. 计算卷积:在每个位置,卷积核与覆盖的输入数据对应元素相乘,所有乘积相加得到一个值,该值成为输出矩阵中的一个元素。

  4. 填充(Padding):为了保持输出大小与输入大小相同,或者为了增加边界信息的重要性,可以在输入的边缘添加额外的行和列(通常填充0)。这被称为填充。

  5. 步长(Stride):步长决定了卷积核从当前位置移动到下一个位置的距离。较大的步长会导致输出尺寸减小。

  6. 输出尺寸计算:卷积操作后的输出尺寸可以通过以下公式计算:

其中,W1 是输入矩阵的宽度,K是卷积核的宽度,P是填充的宽度,S是步长,而W2则是输出矩阵的宽度。高度的计算方式相同。

空洞卷积

空洞卷积(Atrous Convolution),也被称为膨胀卷积(Dilated Convolution),是一种特殊的卷积操作,其主要特点是能够在不改变卷积核大小的情况下扩大感受野。这种特性使得空洞卷积在保持计算效率的同时,能够捕获更大范围的上下文信息,特别适用于需要捕捉较大范围背景信息的任务,如语义分割、目标检测等。

空洞卷积的工作原理

空洞卷积通过在卷积核元素之间插入一定数量的零值来实现对感受野的扩展。插入零的数量由一个称为膨胀率(Dilation Rate)的参数控制。当膨胀率为1时,空洞卷积退化为普通的卷积;当膨胀率大于1时,卷积核的元素之间会插入相应数量的零,从而形成一个更大的“有效”卷积核,但实际参与计算的参数数量并没有增加。

膨胀率(Dilation Rate)

膨胀率决定了卷积核元素之间的间隔,从而影响感受野的大小。假设膨胀率为(d),则卷积核中相邻元素之间的实际距离为(d)。例如,对于一个3x3的卷积核,如果膨胀率为2,则卷积核的有效大小变为5x5(中心元素周围的每个方向都有两个零填充)。

计算输出尺寸

空洞卷积的输出尺寸计算公式与普通卷积略有不同,需要考虑膨胀率的影响。假设输入尺寸为W1,卷积核大小为(K),膨胀率为(d),填充为(P),步长为(S),则输出尺寸(W_2)可以通过以下公式计算:

这里的(K-1)(d-1)项反映了由于膨胀率导致的有效卷积核尺寸的增加。

应用场景:
  • 语义分割:空洞卷积可以有效地在不降低分辨率的情况下扩大感受野,这对于需要精细分割的任务非常有用。

  • 目标检测:通过调整膨胀率,可以在不同尺度上检测目标,有助于多尺度目标的检测。

  • 图像生成:在生成模型中,空洞卷积可以帮助生成具有更大上下文依赖的图像。

分组卷积

分组卷积(Grouped Convolution)是一种优化卷积操作的技术,通过将输入通道分成多个独立的组来进行卷积,从而减少计算量和模型参数。这种技术在许多现代深度学习模型中得到了广泛应用,特别是在处理高分辨率图像或大量输入通道时,能够显著提高计算效率和模型性能。

分组卷积的工作原理

在传统的卷积操作中,每个卷积核都会跨所有输入通道进行计算,这意味着每个输出通道都是所有输入通道的线性组合。而在分组卷积中,输入通道被分成多个组,每个组内的通道独立进行卷积操作,然后再将各组的输出合并成最终的输出。

具体过程
  • 输入通道被分成多个组。

  • 每个组内的通道使用独立的卷积核进行卷积操作。

  • 每个组的输出通道数通常等于总输出通道数除以组数。

  • 最终将所有组的输出通道合并成一个输出张量。

深度可分离卷积

深度可分离卷积(Depthwise Separable Convolution):这是一种特殊的分组卷积,其中组数等于输入通道数( 即每个通道都有一个卷积核)。具体过程如下:

  • 首先进行深度卷积(Depthwise Convolution),每个输入通道使用一个独立的卷积核进行卷积操作,生成与输入通道数相同的中间输出。

  • 然后进行逐点卷积(Pointwise Convolution),使用1x1卷积核将中间输出的通道数转换为所需的输出通道数。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号