卷积的九大变体算法

注意:本文引用自专业人工智能社区Venus AI

更多AI知识请参考原站 ([www.aideeplearning.cn])

引言


卷积神经网络(CNN)的核心在于其多样化的卷积技术,每种技术针对不同的应用和性能需求有着独特的优势。逐通道卷积和逐点卷积关注单独通道的特征提取和通道间信息的融合。深度可分离卷积结合了这两者,提高了效率。组卷积通过分组处理输入通道来减少参数量,而空间可分离卷积则在不同空间维度独立应用卷积核。空洞卷积通过增加卷积核中的空间间隔来捕捉更宽广的上下文信息。转置卷积常用于图像生成任务,稀疏卷积则关注在大量零值存在时的高效计算。最后,多维卷积扩展了卷积操作到更高维度的数据。这些技术共同支持了CNN在图像处理、视频分析和其他多维数据处理任务中的广泛应用。下面我们将依次详细的介绍这卷积的九大变体。

1. 逐通道卷积

逐通道卷积(Depthwise Convolution)又称逐层卷积。首先通过一个例子来对比讲解一下逐层卷积与常规卷积的关系。回忆一下常规的卷积操作,在卷积操作中对于 5x5x3 的输入信息,如果想要得到 3x3x4 的特征图输出,那么卷积核的形状为 3x3x3x4 ,如图1所示。

图片[1]-卷积的九大变体算法-VenusAI
图1:常规的卷积计算过程

卷积层共有 4 个卷积核, 每个卷积核包含一个通道数为 3 (与输入信息通道相同), 且尺寸为 3×3 的卷积核。因此卷积层的参数数量可以用公式: 卷积层的参数量 = 卷积核宽度 × 卷积核高度 × 输入通道数 × 输出通道数来计算, 即:

                                          N_-std=4\times3\times3\times3=108

卷积层的计算量公式为: 卷积层的计算量 = 卷积核宽度 × 卷积核高度 × (输入信息宽度 -卷积核宽度 +1)×( 输入信息高度 – 卷积核高度 +1)× 输入通道数 × 输出通道数, 即:

                       \mathrm{C}_-\text{std }=3\times3\times(5-2)\times(5-2)\times3\times4=972

逐通道卷积的一个卷积核只有一个通道, 输入信息的一个通道只被一个卷积核卷积, 这个卷积过程产生的特征图通道数和输入的通道数相等, 如图2所示。

图片[2]-卷积的九大变体算法-VenusAI
图2 逐通道卷积的计算过程

一张5×5像素的三通道彩色输入图片(形状为5x5x3),逐通道卷积每个卷积核只负责计算输入信息的某一个通道。卷积核的数量与输入信息的通道数相同。所以一个三通道的图像经过卷积运算后一定是生成了 3 个特征图。卷积核的形状一定为: 卷积核 W× 卷积核 H× 输入数据的通道数 C 。
此时, 卷积部分的参数个数计算为:

                                             N_-\text{depthwise }=3\times3\times3=27

卷积操作的计算量为:

                      \mathrm{C}_-\text{depthwise }=3\times3\times(5-2)\times(5-2)\times3=243

这个计算量相较于常规卷积操作在参数量和计算复杂度上是有非常大的下降的,因此被广泛运用在一些移动端设备上。但是,逐通道卷积输出的特征图的数量与输入层的通道数相同,无法在通道维度上扩展或压缩特征图的数量。而且这种运算对输入层的每个通道独立进行卷积运算,没有有效利用不同通道在相同空间位置上的特征相关性。简而言之,虽然减少了计算量,但是失去了通道维度上的信息交互。因此需要逐点卷积来将这些特征图进行组合,在通道维度上实现信息交互。

下面通过动图的形式,展示了逐通道卷积的计算过程,动图中共使用了8个卷积核 ,请点击观看:

逐通道卷积

2. 逐点卷积

逐点卷积(Pointwise Convolution)的运算与常规卷积运算非常相似,其实就是卷积核大小为1×1的普通卷积。它的卷积核的形状为1x1xMM为上一层输出信息的通道数。逐点卷积的每个卷积核会将上一步的特征图在通道方向上进行加权组合,计算生成新的特征图。每个卷积核都可以生成一个输出特征图,而卷积核的个数就是输出特征图的数量,逐点卷积如图3所示。

图片[4]-卷积的九大变体算法-VenusAI
图3 1×1卷积计算过程

此时, 逐点卷积中卷积涉及的参数个数可以计算为:

                                           N\_\text{ointwise }=1\times1\times3\times4=12 

卷积操作的计算量则为:

                                 C\mathrm{\_pointwise~}=1\times1\times3\times3\times3\times4=108

经过逐点卷积之后, 四个卷积核输出了 4 张特征图, 与常规卷积的输出维度相同。逐点卷积是一种卷积神经网络中常用的操作, 其主要的两个好处如下:

(1)参数量较小:相比于传统的卷积操作,逐点卷积的卷积核大小为1×1,因此需要学习的参数数量较少,可以在保证较高准确率的同时减少模型的大小,提高模型的训练和推理效率。

(2)可以在不改变特征图大小的情况下进行通道数的变换:逐点卷积在每个位置独立地对输入的每个通道进行卷积操作,因此可以通过设置卷积核的数量将输入的通道数转换为任意数量的输出通道数,这种操作在CNN中非常常见,被广泛用于实现网络的深度和宽度缩放。此外,由于逐点卷积可以保留原始特征图的空间维度大小,因此可以在保持空间分辨率不变的情况下对特征图的通道数进行变换,从而更好地提取特征。

最后,值得注意的是逐点卷积和全连接层在某些情况下是等价的,这主要是因为它们的计算方式相似。

逐点卷积中, 卷积核大小为 1×1, 通常用于调整通道数。假设输入张量大小为 \begin{aligned}H\times W\times C_{in}\end{aligned},输出张量大小为 H\times W\times C_{\mathrm{out}} , 则逐点卷积的权重矩阵大小为 1\times1\times C_{in}\times C_{\mathrm{out}}, 其中 C_{in}是输入张量的通道数,C_{out} 是输出张量的通道数。逐点卷积的计算可以表示为:

                                                  y_{i,j,k}=\sum_{c=1}^{C_{in}}x_{i,j,c}\times w_{1,1,c,k}

其中, x_{i,j,c}表示输入张量在位置 (i,j) 处的第 c 个通道的值, w_{i,j,c} 表示逐点卷积的第 c 个通道和第 k 个通道之间的权重, y_{i,j,c} 表示输出张量在位置 (i,j) 处的第 k 个通道的值。

全连接层的作用是将输入张量中的每个像素点与权重矩阵中的每个元素相乘, 并将结果相加得到输出。如果将全连接层的输入张量表示为一维向量 x, 权重矩阵表示为二维矩阵 W,则全连接层的计算可以表示为:

                                                                 y=Wx

其中, y 表示输出向量, x 表示输入向量, W 表示权重矩阵。
从上述两个计算公式可以看出, 逐点卷积和全连接层的计算方式非常相似。实际上, 当逐点卷积的卷积核大小为 1×1 时, 它就等价于全连接层, 因为它们都是对输入信息的全部元素逐一的进行权重相乘的计算, 然后再求和得到输出。此时, 逐点卷积的权重矩阵可以看作是全连接层的权重矩阵, 逐点卷积的计算可以看作是全连接层的计算。

因此, 当逐点卷积的卷积核大小为 1×1 时, 它可以被视为全连接层的一种特殊形式, 这也解释了为什么逐点卷积和全连接层在某些情况下是等价的。

3. 深度可分离卷积

深度可分离卷积(Depthwise Separable Convolution)的概念很简单,它是逐通道卷积和逐点卷积配合使用得来的。它在降低模型计算复杂度的同时,还能提升卷积的准确度,是更有效的卷积方式。继续使用刚才的例子,来对比一下常规卷积和深度可分离卷积的参数量和计算量。

常规卷积的参数个数由公式计算为108,而深度可分离卷积的参数个数由逐通道卷积参数和逐点卷积参数两部分相加得到:

N_-\text{separable }=N_-\text{depthwise }+N_-\text{pointwise }=12+27=39

相同的输入, 同样是得到 4 张特征图的输出, 深度可分离卷积的参数个数是常规卷积的约 1/3 。因此, 在参数量相同的前提下, 采用深度可分离卷积的神经网络层数可以做得更深。

在计算量对比方面也是类似的情况, 常规卷积的计算量由公式得出为 972, 而深度可分离卷积的计算量由逐通道卷积的计算量和逐点卷积的计算量两部分相加得到:

\mathrm{C}\_\text{separable }=C\_\text{depthwise }+\text{ C}\_\text{pointwise }=243+108=351

相同的输入,同样是得到 4 张特征图的输出,深度可分离卷积的计算量也是常规卷积的约 1/3 。因此, 在计算量相同的情况下, 通过使用深度可分离卷积, 可以加深神经网络的层数。

除了计算更高效,深度可分离卷积可以看作对常规卷积计算特征的过程进行了分布的规划。在常规的卷积中,卷积核是四维的(数量通道,特征通道,高度通道,宽度通道),其中特征通道代表特征维度,高度通道和宽度通道代表空间维度,因此常规卷积可以同时在特征维度和空间维度对输入数据进行处理。而逐层卷积核的维度是(数量通道,1,高度通道,宽度通道),只能对空间信息做处理;逐点卷积核的维度是(数量通道,特征通道,1,1),只能对特征信息做处理。因此深度可分离卷积对特征信息和空间信息的处理是解耦的。

下面通过动图的形式,展示了深度可分离卷积的计算过程,动图中共使用了8个卷积核 ,请点击观看:

深度可分离卷积

4. 组卷积

当探讨卷积神经网络中的卷积操作时,理解普通卷积(Standard Convolution)和组卷积(Group Convolution)之间的区别非常重要。这两种卷积方式可以根据组数的不同展示出不同的特性。

在普通卷积中,卷积核作用于输入特征图的所有通道。以一个具有8个通道的输入特征图和8个卷积核为例,在普通卷积中,每个卷积核都会作用于所有8个通道,最终生成一个新的输出通道。这种方式意味着卷积核能够捕获输入特征图所有通道间的信息。如下动图所示(点击观看):

普通卷积

组卷积是一种将输入特征图分组并在每个组内独立进行卷积运算的技术。例如,仍然考虑有8个通道的输入特征图,但现在卷积核变成了4个。当组卷积的组数为2时,将输入信息分成2组,每组含有4个通道。在这种情况下,四个卷积核也对应的被分成了两组,分别与对应组的输入信息进行卷积操作。如下动图所示(点击观看):

租卷积

组卷积的两个极端

  1. 组数为1的组卷积(普通卷积):这是最基本的卷积形式,其中所有的输入通道都被用于每个卷积核。这种情况下,网络能够捕获所有输入通道间的复杂交互,但参数数量和计算成本也是最高的。
  2. 组数与输入数据通道数相等的组卷积(Depthwise Convolution 或逐层卷积):在这个极端情况下,每个通道被视为一个单独的组,每个卷积核仅作用于一个通道。这种方式大大减少了参数数量和计算复杂度,但可能会牺牲一些表示能力,因为它不再能捕捉不同通道间的交互。

总的来说,组卷积提供了一种在参数效率和表示能力之间权衡的方式。它可以根据所需的计算资源和网络性能调整组的数量,从而在保持模型效率的同时最大化性能。普通卷积和逐层卷积分别代表了这一权衡的两个极端。但组卷积也存在缺点,一个显而易见的问题是在卷积过程中只有该组内的特征图进行融合,而不同组别之间缺乏计算。长此以往,不同组内的特征图对于其他组的特征了解就越来越少,虽然网络顶层的全连接层会帮助不同特征图相互连接,但是这样的连接融合的次数较少,不如常规卷积的情况。

基于上述情况,ShuffleNet模型中提出了一个名为通道打散(Channel Shuffle)的解决方案。把组卷积每个组计算得到的特征图进行一定程度的乱序排列后,再送入下一层组卷积,以这样的方式增加特征图的在不同组间的信息交互。详见博文【link】。

5. 空间可分离卷积

空间可分离卷积(Spatially Separable Convolution)是一种用于卷积神经网络的卷积操作,其原理是将原来的二维卷积操作拆分成两个一维卷积操作,从而减少计算量和参数数量。

具体来说,空间可分离卷积先将输入特征图在横向和纵向分别进行一维卷积操作,然后再将两个卷积操作的结果按照原来的维度组合起来,得到最终的输出特征图。这个过程可以用下面的公式表示:

                                      y_{i,j}=\sum_{m=1}^M\sum_{n=1}^Nw_{m,n}\cdot x_{i-m,j-n}

其中, x 是输入特征图, y 是输出特征图, w 是卷积核, M 和 N 是卷积核的大小。公式(3-14)中的卷积操作可以拆分成下面两个一维卷积操作:

                                                      \begin{aligned}z_{i,j}&=\sum_{m=1}^Mw_{m,1}\cdot x_{i-m,j}\\y_{i,j}&=\sum_{n=1}^Nw_{1,n}\cdot z_{i,j-n}\end{aligned}

这样就可以将原来的二维卷积操作拆分成两个一维卷积操作, 从而大大减少了计算量和参数数量。具体来说, 如果原来的卷积核大小为 M×N, 那么拆分成两个一维卷积操作后,参数数量从 M×N 减少到 M+N, 计算量也大大降低。

空间可分离卷积的好处在于可以提高卷积神经网络的计算效率和模型效果。由于空间可分离卷积的参数数量和计算量都比传统的二维卷积要少,因此可以大大缩短训练时间和推理时间。此外,由于使用空间可分离卷积可以提高计算效率,因此可以添加更多的层或者使用更大的卷积核,间接地增大了感受野,增强了模型对图像特征的提取能力。

下面对比分析一下深度可分离卷积和空间可分离卷积的区别和联系。

两者的区别主要有两个:

(1)卷积核大小不同:空间可分离卷积和普通卷积核大小相同,一般是一个二维卷积核;而深度可分离卷积则是由两个不同大小的卷积核组成,其中一个是1×1的卷积核(逐点卷积),另一个是较小的二维卷积核(逐通道卷积)。

(2)计算方式不同:空间可分离卷积先进行一次横向卷积,再进行一次纵向卷积;而深度可分离卷积则先对每个通道做深度卷积,然后在输出通道上进行1×1卷积。

两者的联系也可以从两方面讲:

(1)都是卷积操作:空间可分离卷积和深度可分离卷积都是卷积操作,都是对输入特征图进行局部感知并输出相应的特征图。

(2)都是为了减少参数:空间可分离卷积和深度可分离卷积都是为了减少模型参数,提高模型效率。

总的来说,空间可分离卷积和深度可分离卷积在某些方面有区别,但也有很多相似之处,它们都是卷积神经网络中的重要卷积操作,可以用来构建高效的深度神经网络。相比较下,深度可分离卷积在一些应用中效果更好,也更加常见一些。

6. 空洞卷积

膨胀卷积(Dilated Convolution)也称作空洞卷积(Atrous Convolution),是一种在卷积神经网络中常用的操作。膨胀卷积是在标准卷积基础上增加了膨胀因子的概念,通过在卷积核中引入间隔性的空洞,使得卷积核感受野变大,从而在保持特征图尺寸不变的情况下增加了卷积核的有效感受野,扩大了网络的感受野,同时也能有效减少参数量。

膨胀卷积的原理如下:在标准卷积的基础上,膨胀卷积引入了一个膨胀系数 d,也称为膨胀因子,它表示在卷积过程中,卷积核中的元素之间相隔 d-1 个像素。具体来说,对于一个 k x k 的卷积核,如果其膨胀系数为 d,那么在卷积计算时,每次跳过 d-1 个像素进行卷积。膨胀卷积的计算方式与标准卷积类似,不同之处在于,卷积核的每个元素在计算时,需要与输入的特征图上距离自己为 d 的像素进行相乘求和,而不是与相邻的像素相乘求和。因此,膨胀卷积可以在保持特征图尺寸不变的情况下,增大卷积核的感受野,提高了网络的感受野和感知能力。

图片[8]-卷积的九大变体算法-VenusAI
图4 空洞/膨胀卷积

上图(a)为常规的卷积操作,上图(b)是膨胀系数 d=2 的膨胀卷积。同时使用 3×3 大小的卷积核,膨胀卷积可以获得更大的感受野。实际上,常规的卷积操作也可以看作膨胀卷积的特殊形式,即膨胀系数 d=1 的膨胀卷积。

膨胀卷积的好处主要有以下几点:

(1)增大感受野:由于膨胀卷积中卷积核的感受野变大,所以可以更好地捕捉到输入特征图中的长程信息,提高模型对图像整体特征的感知能力。

(2)减少参数量:在保持特征图尺寸不变的情况下,膨胀卷积增加了卷积核的有效感受野,从而减少了卷积核的参数数量,降低了模型的计算复杂度和内存消耗。

(3)节约计算资源:膨胀卷积可以通过增加膨胀系数来增大感受野,而不需要增加卷积核的大小和数量,从而节约了计算资源,使得卷积神经网络能够处理大尺寸图像。

7. 转置卷积

转置卷积(Transpose Convolution)也称为反卷积或上采样操作。在卷积操作中,通过滑动卷积核在输入图像上进行卷积操作来提取特征,这个过程一般是对输入数据进行下采样。而在转置卷积中,则是通过滑动反卷积核(也称为转置卷积核)在输入的特征图上进行操作,以实现图像的上采样,其计算过程如图5所示。

图片[9]-卷积的九大变体算法-VenusAI
图5 转置卷积计算过程

假设输入信息(input)和转置卷积核(kernel)都是一个 2×2 大小的矩阵,那么在计算过程中,input中的第一个元素“0”会依次与kernel中的权重进行相乘,相乘的结果如图5(a)所示方式进行存储;下一步,滑动转置卷积核到input中的第二个元素“1”位置,依次与kernel中的权重进行相乘,计算结果因为滑动的原因如图5(b)所示方式进行存储。以此类推直到遍历完input中所有的元素。最后,把这四次相乘的中间结果图5(a) (b) (c) (d)在对应位置进行求和操作,便得到了最后的输出结果。其本质上与常规卷积方式相同,都是一个局部的相乘求和操作。只不过,相乘求和的顺序和方法与常规卷积存在差异。这个差异导致了转置卷积在输出特征图的尺寸上往往是要大于输入信息的,用于一些信息重建的场景;而常规卷积的输出特征图尺寸往往小于输入信息,目的是对输入信息进行特征提取。

转置卷积作为卷积神经网络中的一种操作,具有广泛的应用场景。在图像分割和目标检测领域,转置卷积可以对特征图进行上采样,使其与输入图像具有相同的大小,分别实现像素级别的分割和进行物体的定位识别;在图像重建领域,转置卷积可以将低分辨率的图像上采样到高分辨率,以便实现图像的重建和增强;在图像生成领域,转置卷积可以将随机噪声向量转换为图像,从而实现图像生成和合成。

转置卷积的优点包括:

(1)上采样效果好:转置卷积可以将特征图上采样到输入图像的大小,从而实现像素级别的分割和对象检测等任务。

(2)网络可逆性:转置卷积具有网络可逆性,可以反向传播误差,从而实现端到端的训练和优化。

(3)可学习参数多:转置卷积具有大量的可学习参数,可以从数据中学习到有效的特征表示,从而提高模型的泛化能力。

但是,转置卷积也存在一些缺点:

(1)参数量大:转置卷积具有大量的可学习参数,容易导致模型过拟合和计算资源消耗过大。这其实与第3条优点之间是一种权衡问题。

(2)容易引起伪影:转置卷积的上采样效果好,但容易引起伪影和锯齿等问题,需要进行适当的处理和优化。

(3)计算量大:转置卷积需要进行矩阵乘法等复杂计算,计算量较大,需要采用一些高效的计算方法和技巧。

综上所述,转置卷积具有广泛的应用场景和优点,但也存在一些缺点和挑战。在实际应用中,需要根据具体的任务和需求,选择合适的转置卷积算法和优化方法,以提高模型的性能和效率。

8. 稀疏卷积

稀疏卷积(Sparse Convolution)是一种在卷积神经网络中用于处理稀疏输入的卷积操作。相对于传统的卷积操作,稀疏卷积可以显著地减少计算量和存储需求,从而提高模型的计算效率和泛化能力。

稀疏卷积的核心思想是通过利用输入数据的稀疏性,减少卷积操作中需要计算的位置和权重。具体来说,在传统的卷积操作中,每个卷积核都需要与输入张量中的所有位置进行卷积计算,而在稀疏卷积中,每个卷积核只需要与输入张量中的一部分位置进行卷积计算,从而大大减少了计算量和存储需求。

稀疏卷积通常可以分为两种类型:位置稀疏卷积和通道稀疏卷积。位置稀疏卷积是指只对输入张量中的一部分位置进行卷积计算,而通道稀疏卷积是指只对输入张量中的一部分通道进行卷积计算。这两种稀疏卷积通常可以结合使用,从而进一步减少计算量和存储需求。在实际应用中,通常有两种方法来选取卷积位置:固定间隔采样和自适应采样。

固定间隔采样是一种简单但常用的方法,它通过固定间隔地采样输入张量中的位置来选取卷积位置。具体来说,给定一个固定的采样间隔,固定间隔采样会从输入张量的每个维度中等间隔地选取一部分位置,并将这些位置作为卷积位置。这种方法的优点是简单、易于实现,并且可以减少计算量和存储需求。缺点是不能适应不同的输入数据分布,因此可能会影响模型的精度。

自适应采样是一种更加高级的方法,它可以根据输入数据的分布自适应地选取卷积位置。具体来说,自适应采样通常通过一些启发式的方法来选取卷积位置,例如最大值池化、重心采样(在点云的某个局部区域内,选择与其它所有点的平均位置最接近的点)等,具体的采样策略应该根据输入张量的特点和任务需求进行选择。这些方法可以根据输入数据的分布来动态地选取卷积位置,并且能够在一定程度上提高模型的精度。缺点是计算量和存储需求较大,实现也较为复杂。

需要注意的是,稀疏卷积中的卷积位置通常是自适应采样得到的,因此每次计算时都需要重新选择卷积位置。这也是稀疏卷积相对于传统的卷积操作在计算上更加复杂的原因之一。在实际应用中,需要权衡模型的准确性和计算效率,以便在保持一定精度的前提下提高模型的计算速度。

9. 多维卷积(*D Convolution)

上述的所有卷积变体都是基于2D的,即二维卷积,主要用于处理图片数据。实际上卷积操作完全可以推广到其他维度上。下面讲解一维卷积、双向卷积、三维卷积和四维卷积。

一维卷积是卷积神经网络中常用的一种操作,主要用于处理一维序列数据,如时间序列数据、音频信号等。在一维卷积中,卷积核是一个一维的向量,可以对输入的一维序列进行卷积操作。卷积操作的过程是将卷积核从序列的左边开始移动,对每个位置进行卷积操作,得到一个新的特征值。这个过程可以用公式表示如下:

                                              y_i=\sum_{j=0}^{m-1}w_j\cdot x_{i+j}

其中,x_{i+j}表示输入序列在位置i+j处的值, w_j 表示卷积核在位置 j 处的权重值, m 表示卷积核的大小。

一维卷积可以使用多个卷积核来提取不同的特征,每个卷积核都会产生一个新的特征图,多个特征图会被拼接在一起,形成一个新的特征张量。一维卷积在处理一维序列数据时具有一定的优势,因为它可以捕捉到序列中局部的关联信息,并且具有一定的平移不变性,即对于相同的序列模式,无论它们出现在序列的哪个位置,一维卷积都可以将其检测出来。

双向卷积(Bidirectional Convolution)是一种基于卷积神经网络的模型,主要用于处理时间序列数据,如音频信号、文本数据等。在传统的卷积神经网络中,输入张量的信息是从左往右进行传递的,而双向卷积则引入了从右往左的传递信息,从而实现对时间序列数据的双向处理。具体地,双向卷积的实现是通过对输入张量进行前向卷积和后向卷积两个过程来完成的。其中,前向卷积是将输入张量从左到右进行卷积操作,得到一个新的张量,表示从左往右的特征信息。后向卷积则是将输入张量从右到左进行卷积操作,得到另一个新的张量,表示从右往左的特征信息。最终,这两个张量会被拼接在一起,形成一个新的特征张量,同时保留了输入张量的左右两个方向的特征信息。

双向卷积在处理时间序列数据时具有一定的优势,因为时间序列数据往往具有左右对称性,双向卷积能够更全面地捕捉序列中的信息。同时,双向卷积也可以应用于其他领域,如自然语言处理中的文本数据处理,可以帮助提高模型的性能和泛化能力。可以想象,当双向卷积配合1D卷积时,可以很好的处理文本、信号等带有时序特点的数据。

3D卷积是卷积神经网络中常用的一种操作,主要用于处理三维数据,如视频、医学图像等。在3D卷积中,卷积核是一个三维的张量,可以对输入的三维数据进行卷积操作。卷积操作的过程是将卷积核从输入数据的左上角开始移动,对每个位置进行卷积操作,得到一个新的特征值。这个过程可以用公式表示如下:

                             y_{ijk}=\sum_{m=-a}^a\sum_{n=-b}^b\sum_{p=-c}^cw_{mnp}\cdot x_{i+m,j+n,k+p}

其中, xi+m,j+n,k+p 表示输入数据在位置 (i+m,j+n,k+p) 处的值, wmnp 表示卷积核在位置 (m,n,p) 处的权重值, a,b,c 表示卷积核在三个维度上的大小。

3D卷积可以使用多个卷积核来提取不同的特征,每个卷积核都会产生一个新的特征图,多个特征图会被拼接在一起,形成一个新的特征张量。3D卷积在处理三维数据时具有一定的优势,因为它可以捕捉到数据中的空间信息,并且具有一定的平移不变性,即对于相同的物体形状或纹理,无论它们出现在图像的哪个位置,3D卷积都可以将其检测出来。同时,3D卷积也可以通过不同大小的卷积核来检测不同尺度的特征,从而提高模型的性能和泛化能力。1D/2D/3D卷积的对比可视化如下图6所示。

图片[10]-卷积的九大变体算法-VenusAI
图6 *D卷积

如果继续类比下去,其实还存在4D卷积的概念。4D卷积也是卷积神经网络中常用的一种操作,它主要用于处理四维数据,如视频序列或多个图像的批量数据。这时的数据维度可表示为:[图片数量,颜色通道,图片高度,图片宽度]。在4D卷积中,卷积核是一个四维的张量,可以对输入的四维数据进行卷积操作。

卷积操作的过程是将卷积核从输入数据的左上角开始移动,对每个位置进行卷积操作,得到一个新的特征值。这个过程可以用公式表示如下:

                      y_{ijkl}=\sum_{m=-a}^a\sum_{n=-b}^b\sum_{p=-c}^c\sum_{q=-d}^dw_{mnpq}\cdot x_{i+m,j+n,k+p,l+q}

其中,x_{i+m,j+n,k+p,l+q} 表示输入数据在位置 (i+m,j+n,k+p,l+p) 处的值, w_{mnpq} 表示卷积核在位置 (m,n,p,q) 处的权重值, a,b,c,d 表示卷积核在四个维度上的大小。

类似于3D卷积,4D卷积也可以使用多个卷积核来提取不同的特征,每个卷积核都会产生一个新的特征图,多个特征图会被拼接在一起,形成一个新的特征张量。

需要注意的是,在实际应用中,通常会将4D卷积分解成两个步骤,先将输入的四维数据转换成两个三维数据,然后分别对它们进行3D卷积操作,最后将两个输出结果合并起来。这种方式可以减少计算量,提高模型的效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣46. 全排列

Problem: 46. 全排列 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 回溯可以理解为是在对一个多叉树的操作 1.回溯结束条件:当决策路径的长度等于nums数组的长度时,将当前的结果添加到二维结果集res中; 2.每一次决策的选择处…

Qt 图形视图 /基于Qt示例DiagramScene解读图形视图框架

文章目录 概述从帮助文档看示例程序了解程序背景/功能理清程序概要设计 分析图形视图的协同运作机制如何嵌入到普通Widget程序中?形状Item和文本Item的插入和删除?连接线Item与形状Item的如何关联?如何绘制ShapeItem间的箭头线? 下…

穿越半个世纪,探索中国数据库的前世今生

引言 在数字化潮流席卷全球的今天,数据库作为 IT 技术领域的“活化石”,已成为数字经济时代不可或缺的基础设施。那么,中国的数据库技术发展经历了怎样的历程?我们是如何在信息技术的洪流中逐步建立起自己的数据管理帝国的呢&…

Hadoop大数据应用:HDFS 集群节点扩容

目录 一、实验 1.环境 2.HDFS 集群节点扩容 二、问题 1.rsync 同步报错 一、实验 1.环境 (1)主机 表1 主机 主机架构软件版本IP备注hadoop NameNode (已部署) SecondaryNameNode (已部署) Resourc…

海川润泽AI机器视觉仪系列产品,助推“人工智能+”打开新质生产力的大门

3月5日,第十四届全国人民代表大会第二次会议开幕。国务院总理李强在政府工作报告,提出大力推进现代化产业体系建设,加快发展新质生产力。深入推进数字经济创新发展,制定支持数字经济高质量发展政策,积极推进数字产业化…

零基础自学C语言|动态内存管理

✈为什么要有动态内存分配 我们已经掌握的内存开辟方式有: int a 0;//在栈空间上开辟四个字节char arr[10] { 0 };//在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点: 空间开辟大小是固定的。数组在申明的时候,必须…

【开源】SpringBoot框架开发公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

Cap2:Pytorch转TensorRT(上:Pytorch->ONNX)

文章目录 1、pytorch导出onnx模型2、使用onnxruntime推理onnx模型3、精度对齐4、总结 深度学习框架种类繁多,想实现任意框架之间的模型转换是一件困难的事情。但现在有一个中间格式ONNX,任何框架模型都支持转为ONNX,然后也支持从ONNX转为自身…

案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-先导篇)

专栏系列文章: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html 案例分析篇01:软件架构设计考点架构风格及质量属性 案例分析篇11:UML设计考…

疫情网课管理系统|基于springboot框架+ Mysql+Java+Tomcat的疫情网课管理系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 ​编辑 学生功能模块 管理员功能 教师功能模块 系统功能设计 数据库E-R图设计 lun…

Ubuntu上搭建TFTP服务

Ubuntu上搭建TFTP服务 TFTP服务简介搭建TFTP服务安装TFTP服务修改配置文件 重启服务 TFTP服务简介 TFTP是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适用于开销不大、不复杂的应用场合。TFTP协议专门为小文件传输而设计,只…

虚拟游戏理财 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 在一款虚拟游戏中生活,你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。 现有一家Bank,它提供有若干理财产品m,风险及…

【PHP安全】PHP伪协议

PHP伪协议: file:// #访问本地文件系统http:// #访问HTTPs网址ftp:// #访问ftp URLphp:// #访问输入输出流zlib:// #压缩流data:// #数据(RFC 2397)ssh2:// #security shell2expect:// #处理交互式的流glob:// #查找匹配的文件路径phar:// #P…

Siamese Network(孪生神经网络)详解

Siamese和Chinese有点像。Siam是古时候泰国的称呼,中文译作暹罗。Siamese也就是“暹罗”人或“泰国”人。Siamese在英语中是“孪生”、“连体”的意思,这是为什么呢?十九世纪泰国出生了一对连体婴儿,当时的医学技术无法使两人分离…

软件功能测试内容有哪些?湖南长沙软件测评公司分享

软件功能测试主要是验证软件应用程序的功能,且不管功能是否根据需求规范运行。是通过给出适当的输入值,确定输出并使用预期输出验证实际输出来测试每个功能。也可以看作“黑盒测试”,因为功能测试不用考虑程序内部结构和内部特性,…

Orange3数据预处理(清理特征组件)

清理特征 移除未使用的属性值和无用的属性,并对剩余的值进行排序。 输入 数据: 输入数据集 输出 数据: 过滤后的数据集 命名属性定义有时包含在数据中不出现的值。即使原始数据中没有这种情况,数据过滤、选择示例子集等操作也可能移除…

(二十五)Flask之MTVMVC架构模式Demo【重点:原生session使用及易错点!】

目录: 每篇前言:MTV&MVC构建一个基于MTV模式的Demo项目:蹦出一个问题: 每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领…

关于Transfomer的思考

为何诞生 在说transformer是什么,有什么优势之类的之前,先谈一谈它因何而诞生。transformer诞生最重要的原因是早先的语言模型,比如RNN,由于其本身的训练机制导致其并行度不高,特别是遇到一些长句子的情况下。其次&…

抖音开放平台第三方开发,实现代小程序备案申请

大家好,我是小悟 抖音小程序备案整体流程总共分为五个环节:备案信息填写、平台初审、工信部短信核验、通管局审核和备案成功。 服务商可以代小程序发起备案申请。在申请小程序备案之前,需要确保小程序基本信息已填写完成、小程序至少存在一个…

硬件笔记(26)---- 高速电路中滤波电容的选取

先要知道电容的等效电路 其中ESL取决于电容的类型和封装,一般用贴片陶瓷电容为例,对于直插式电解电容,他们的ESL很大。按下表,封装越大,ESL越大,但是0612有些例外 0612和1206就是 长短边的区别,…