CNN-卷积神经网络

简介

卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络。它是深度学习的代表算法之一,尤其在分析视觉图像方面表现突出。

卷积神经网络具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)”。这种网络受到生物过程的启发,因为神经元之间的连接模式类似于动物视觉皮层的组织。

卷积神经网络仿造生物的视知觉机制构建,可以进行监督学习和非监督学习。其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够以较小的计算量对格点化特征,例如像素和音频进行学习,有稳定的效果且对数据没有额外的特征工程要求。

卷积神经网络在图像和视频识别、推荐系统、图像分类、图像分割、医学图像分析、自然语言处理、脑机接口和金融时间序列中都有应用。

一,引言

卷积神经网络(Convolutional Neural Networks,CNN)是一种深度学习的算法,它被广泛应用于计算机视觉领域。在过去几年里,CNN在图像分类、目标检测、人脸识别、语义分割等任务中取得了显著的成功。

CNN的设计灵感来自于生物视觉神经系统的结构。它通过卷积运算模拟了生物神经元对输入信息的感知方式,从而能够有效地处理和分析图像或视频中的局部特征。卷积核是CNN中的核心组件,它可以学习并提取输入数据中的局部特征,然后将这些特征用于后续的分类或回归任务。

然而,虽然CNN在很多任务中取得了优秀的性能,但是它仍然存在一些问题。例如,对于不同尺度和旋转的图像,CNN的表现可能会有所不同。此外,CNN通常需要大量的标注数据进行训练,这限制了它的应用范围。因此,对CNN的理论研究仍然具有重要的意义。

本文旨在探讨CNN的理论背景和原理,分析其优缺点,并探讨未来的研究方向。我们希望通过深入理解CNN的原理和方法,为相关领域的研究者提供有价值的参考和启示。

二,定义

卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习算法,它包含卷积计算且具有深度结构。这种网络通常用于处理和分析图像或视频等二维数据,同时也适用于处理一维数据如时间序列和文本等。

CNN通过卷积运算模拟了生物神经元对输入信息的感知方式,能够有效地处理和分析局部特征。在CNN中,每个神经元都只与输入数据的一个局部区域相连,这大大减少了参数的数量和计算复杂度。卷积核是CNN中的核心组件,它可以学习并提取输入数据中的局部特征,然后将这些特征用于后续的分类或回归任务。

CNN通常包含多个卷积层、池化层和全连接层。卷积层用于提取输入数据中的局部特征,池化层则用于降低数据的维度和复杂度,而全连接层则用于将前面层的输出结果进行整合,最终得到分类或回归结果。

CNN具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络(Shift-Invariant Artificial Neural Networks, SIANN)”。这种网络的设计灵感来源于生物视觉神经系统的结构,通过卷积运算和池化运算来模拟生物神经元对输入信息的感知方式。

总之,CNN是一种深度学习算法,适用于处理和分析图像、视频、时间序列和文本等数据。它通过卷积运算和池化运算来模拟生物神经元对输入信息的感知方式,具有表征学习能力,能够有效地处理和分析局部特征。

结构

  1. 输入层:这是神经网络的开始,通常对应于输入的数据。
  2. 卷积层:CNN特有的部分。卷积层会对输入数据进行卷积操作,以提取局部特征。卷积层的激活函数通常使用的是ReLU。在卷积的过程中,输入的数据与卷积核进行卷积之后的结果会被加上偏置,然后保存到对应的位置,形成输出。如果输入是RGB图像,那么在卷积的时候,就是将三个二维的tensor进行卷积之后结果相加再加上偏置。
  3. 激活层:激活层负责对卷积层抽取的特征进行激活,由于卷积操作是由输入矩阵与卷积核矩阵进行相差的线性变化关系,需要激活层对其进行非线性的映射。卷积网络的通常采用ReLU来充当激活函数(还包括tanh和sigmoid等)。
  4. 池化层:这是另一个CNN特有的部分。池化层也是隐藏层的一部分,其作用是降低数据的维度和复杂度。池化层也是卷积神经网络中常见的一部分,它常常被叫做子采样层。
  5. 全连接层:在若干卷积层+池化层之后是全连接层(fully connected layer)。这实际上是深度神经网络(DNN)的结构。全连接层一般用于CNN的最后几层。全连接层的主要特点是全相连,这意味着全连接层的参数比其他网络层都多。全连接层通常使用Softmax激活函数来做图像识别的分类。
  6. 归一化层:对输出进行归一化处理,保证所有输出在0~1之间。
  7. 输出层:负责生成最终的输出结果。

1. 输入层

CNN的输入层负责将输入数据送入卷积神经网络进行特征提取,其输入数据的格式与全连接神经网络的输入格式不太一样。对于黑白的 28×28 的图片,CNN的输入是一个 28×28 的的二维神经元。 而对于RGB格式的28×28图片,CNN的输入则是一个 3×28×28 的三维神经元(RGB中的每一个颜色通道都有一个 28×28 的矩阵)。

2. 卷积层

CNN的卷积层是CNN的主要组成部分,主要用来提取输入数据(图像、文本等)的特征。卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。

卷积层中的每个神经元都与输入数据的一个局部区域相连,这个局部区域的大小和形状可以不同,但一般都比较小。这种局部连接的方式使得CNN能够有效地处理和分析局部特征。在卷积的过程中,输入的数据与卷积核进行卷积之后的结果会被加上偏置,然后保存到对应的位置,形成输出。

在卷积神经网络中,通常在卷积层之后会得到维度很大的特征图,这时可以通过池化层来降低特征图的维度,从而减少计算量和避免过拟合。池化层也是CNN特有的部分,它通常在卷积层之后使用,通过对特征图的局部区域进行下采样(池化),从而提取出最重要的特征,并降低数据的维度和复杂度。

2.1 卷积原理

卷积操作原理上其实是对两张像素矩阵进行点乘求和的数学操作,其中一个矩阵为输入的数据矩阵,另一个矩阵则为卷积核(滤波器或特征矩阵),求得的结果表示为原始图像中提取的特定局部特征

2.2 卷积在图像中有什么直观作用

首先,卷积可以通过滤波器提取出信号中的特征,比如边缘、纹理等。这些特征对于图像分类和识别任务非常重要。其次,卷积可以通过池化操作减小图像的尺寸,从而降低数据的维度,这在处理大规模图像和文本数据时非常有用。

此外,卷积还可以通过一些滤波器对图像进行增强,比如锐化、平滑等,有助于提高图像的视觉效果和品质。同时,卷积也可以实现去噪,通过滤波器去除信号中的噪声,从而提高数据的质量。

另外,通过滑动窗口检测图像中的物体,结合CNN提取到的特征可以实现高效的物体检测。CNN还可以学习到像素级的特征,这使其在图像分割任务中也表现良好。

此外,通过将CNN反向传播,可以使用学习到的特征生成新的图像或者修复已有图像。CNN还可以用于特征可视化以及数据增强等任务。

2.3 卷积层的基本参数包括:
  1. 卷积核大小:卷积核的大小通常根据输入数据的维度和需要提取的特征的大小来确定。
  2. 步长:步长指的是卷积核在输入数据上滑动的距离。
  3. 填充方式:填充方式指的是在输入数据的边缘填充0或其他值的方式,以使得卷积核能够更好地适应输入数据。
  4. 通道数:通道数指的是输入数据中每个通道的特征图数量。
  5. 权重和偏置:卷积层的参数包括权重和偏置,它们可以通过反向传播算法进行更新,以使卷积层能够更好地适应输入数据。

卷积操作维度变换公式:

                         

卷积操作维度变换公式可以根据输入维度(I d)、输出维度(O d)、卷积核大小(k _{size})、步长(s)以及填充方式(padding)进行计算。

2.4 卷积核的类型

卷积核的类型包括标准卷积、扩张卷积、转置卷积和深度可分离卷积等多种。

2.4.1 标准卷积

连续紧密的矩阵形式可以提取图像区域中相邻像素之间的关联性,最常用的卷积核,连续紧密的矩阵形式可以提取图像区域中的相邻像素之间的关联关系, 3×3 的卷积核可以获得 3×3 像素范围的感受视野。

                            

2.4.2 扩张卷积(带孔卷积或空洞卷积)

通过改变卷积核中元素的值,使其在输入图像上滑动时能够扩展感受野的大小。

                             

2.4.3 转置卷积

先对原始特征矩阵进行填充使其维度扩大到目标输出维度,然后进行普通的卷积操作的过程,其输入到输出的维度变换关系恰好和普通的卷积变换关系相反。

                               

2.4.4 深度可分离卷积

将标准卷积中的卷积核拆分为两个不同的部分,一个是深度卷积核,另一个是1x1的卷积核,这种拆分可以提高模型的效率。

     

2.5 1X1卷积的作用
  1. 降维和升维:通过调整1×1卷积的通道数,可以实现降维或升维。比如,如果1×1卷积的通道数为64,那么可以将输入数据的通道数调整到64,便于后续操作(相加或concat)。
  2. 跨通道信息交互(channal 的变换):卷积核对输入数据的局部区域进行卷积运算后,可以提取出该局部区域的特征。

不考虑参数偏置项的情况下,若输入和输出的通道数为 c_{1}=16​ ,则左半边网络模块所需的参数为 (1×1+3×3+5×5+0)×c_{1}×c_{1}=8960​ ;

假定右半边网络模块采用的 1×1​ 卷积通道数为 c_{2}=8​ (满足 c_{1}>c_{2})​,则右半部分的网络结构所需参数量为 (1×1×(3c_{1}+c_{2})+3×3×c_{2}+5×5×c_{2}c_{1}=5248​ ,可以在不改变模型表达能力的前提下大大减少所使用的参数量。

2.6 卷积层是不是越大越好

卷积核并不是越大越好。虽然大的卷积核可以提取到更多的全局特征,从而提高模型的性能,但是也会带来更大的计算量和更低的计算性能。因此,在选择卷积核的大小时,需要权衡特征提取和计算性能之间的平衡。

一般来说,对于较小的卷积核,通过堆叠多个卷积核会更加有效,因为这样可以在不增加计算量的前提下提高特征提取的质量。而对于较大的卷积核,如果使用单个卷积核就可以提取到足够的全局特征,那么使用多个大卷积核并不会进一步提高模型的性能。

此外,卷积核的大小还受到输入数据的维度和模型深度的限制。如果输入数据的维度较低,使用较小的卷积核可能更合适;如果模型深度较浅,使用较小的卷积核可能更有效。

2.7 每层卷积是否只能用一种尺寸的卷积核

经典的神经网络一般都属于层叠式网络,每层仅用一个尺寸的卷积核,如VGG结构中使用了大量的 3×3 卷积层。事实上,同一层特征图可以分别使用多个不同尺寸的卷积核,以获得不同尺度的特征,再把这些特征结合起来,得到的特征往往比使用单一卷积核的要好,如GoogLeNet、Inception系列的网络,均是每层使用了多个卷积核结构。

          

输入的特征在同一层分别经 、1×1、3×3 和 5×5 三种不同尺寸的卷积核,再将分别得到的特征进行整合,得到的新特征可以看作不同感受域提取的特征组合,相比于单一卷积核会有更强的表达能力。

2.8 如何减少卷积层参数量
  1. 使用1x1卷积:1x1卷积可以用来减少特征通道的数量,从而降低参数量。1x1卷积在通道方向上进行线性组合,可以降低特征的维度,从而降低后续卷积层的计算成本。
  2. 减少卷积核大小:使用小尺寸的卷积核可以减少参数量。较小的卷积核能够捕捉更精细的特征,同时降低计算量。例如,使用2个3×3的卷积核代替1个5×5的卷积核。
  3. 减少输入通道:减少输入特征图的通道数量也会减少后续卷积层的参数量。可以通过使用降维卷积或池化操作来减少通道数。
  4. 使用分离卷积操作:将原本K×K×C的卷积操作分离为K×K×1和1×1×C的两部分操作。这样可以将通道维度的参数和空间维度的参数分开,降低参数数量。
  5. 使用全局平均池化:在卷积层前使用全局平均池化操作,可以进一步降低特征维度,从而减少参数量。
  6. 使用权重共享:在卷积层中使用权重共享,即多个卷积核使用相同的权重,可以减少参数量。
2.9 在标准卷积中同时考虑通道和区域的优缺点
优势
  1. 可以同时提取多个通道的特征,从而得到更丰富的特征表达。
  2. 可以通过调整卷积核的大小和步长来控制感受野的大小和形状,从而适应不同的任务和数据。
  3. 可以利用卷积核的滑动窗口来捕捉局部和全局的特征,从而更好地理解输入数据的上下文信息。
劣势
  1. 标准卷积的计算量较大,尤其是当输入数据的通道数和卷积核的数量较大时,计算量会显著增加。
  2. 标准卷积的参数数量较多,如果卷积核的数量较多,则参数的数量也会随之增加,这会增加模型的训练时间和内存开销。
  3. 标准卷积的感受野是固定的,无法适应不同的任务和数据的变化。如果需要调整感受野的大小和形状,则需要重新训练模型,这会增加模型的训练时间和计算成本。
2.10 采用宽卷积的好处
  1. 提高特征表示能力:宽卷积通过增加通道数来增强网络的特征表示能力,从而在不增加太多计算复杂度的情况下提高模型性能。这种设计的目的是使网络能够更好地捕捉和表示输入数据的特征,从而提高任务的准确性。
  2. 提高模型性能:宽卷积通过增加网络的宽度来提高模型的性能。由于每个卷积层中的通道数较多,网络可以学习更多的特征表示,从而提高对输入数据的理解能力。这有助于在处理复杂的任务时获得更好的性能。
  3. 减少信息损失:传统的卷积神经网络通常采用池化操作来降低特征的维度,但这也可能导致一些有用的信息的损失。而宽卷积则通过增加通道数来保持更多的特征信息,从而减少信息损失,提高模型的准确性。
  4. 适应不同的任务和数据:宽卷积的设计使其具有一定的灵活性,可以适应不同的任务和数据的变化。通过调整通道数和卷积核的大小,可以优化网络的结构以适应特定的任务和数据集,从而获得更好的性能。

           

由于前一种方式通过补零来进行完整的卷积操作,可以有效地保留原始的输入特征信息。注意到越在边缘的位置被卷积的次数越少。宽卷积可以看作在卷积之前在边缘用0补充,常见有两种情况,一个是全补充,如上图右部分,这样输出大于输入的维度。另一种常用的方法是补充一一部分0值,使得输出和输入的维度一致。

3. 激活层

在CNN中,激活层负责对卷积层抽取的特征进行激活,由于卷积操作是由输入矩阵与卷积核矩阵进行相差的线性变化关系,需要激活层对其进行非线性的映射。卷积网络的通常采用ReLU来充当激活函数(还包括tanh和sigmoid等)。

3.1 激活层的作用

激活层(Activation Layer)负责对卷积层抽取的特征进行激活,由于卷积操作是由输入矩阵与卷积核矩阵进行相乘的过程,是线性变化关系,需要激活层对其进行非线性的映射

激活层主要由激活函数组成,即在卷积层输出结果的基础上嵌套一个非线性函数,让输出的特征图具有非线性关系。卷积网络中通常采用ReLU来充当激活函数(还包括tanh和sigmoid等)ReLU的函数形式如下所示,能够限制小于0的值为0,同时大于等于0的值保持不变。

                                            

3.2 BN层和激活层的位置顺序选择

BN层和激活层的位置顺序选择可能会因不同的神经网络设计和任务需求而有所差异。

在常见的神经网络中,BN层通常位于激活层之前。这种设置使得神经网络能够首先对输入数据进行归一化处理,从而加快训练速度并提高模型的性能。然后,通过激活层对归一化后的数据进行非线性变换,增加模型的表达能力和泛化能力。

然而,也有一些神经网络将BN层放在激活层之后。这种设置可能适用于一些特定的任务和网络结构,比如在某些深度神经网络中,为了防止梯度消失或爆炸,将BN层放在激活层之后可能更为合适。

4. 池化层

CNN的池化层一般是在卷积层之后使用,主要有两个作用:

  1. 数据压缩和参数压缩:池化层可以减少过拟合现象,降低网络参数的同时防止过拟合,从而提高所提取特征的鲁棒性。
  2. 提高计算速度:池化层的另一个作用是降低特征维度,从而减少计算量,提高模型的计算速度。
4.1 池化方法

池化操作通常也叫做子采样(Subsampling)降采样(Downsampling),在构建卷积神经网络时,往往会用在卷积层之后,通过池化来降低卷积层输出的特征维度,有效减少网络参数的同时还可以防止过拟合现象。常见的池化方法总结如下:

4.1.1 一般池化(General Pooling)

                           

通常包括最大池化(Max Pooling)和平均池化(Mean Pooling)。以最大池化为例,池化范围 (2×2) 和滑窗步长(stride=2) 相同,仅提取一次相同区域的范化特征。

4.1.2 重叠池化(Overlapping Pooling)

                               

与一般池化操作相同,但是池化范围P_{size} 与滑窗步长 stride 关系为 P_{size}stride ,同一区域内的像素特征可以参与多次滑窗提取,得到的特征表达能力更强,但计算量更大。

4.1.3 空间金字塔池化(Spatial Pyramid Pooling)

     

在进行多尺度目标的训练时,卷积层允许输入的图像特征尺度是可变的,紧接的池化层若采用一般的池化方法会使得不同的输入特征输出相应变化尺度的特征,而卷积神经网络中最后的全连接层则无法对可变尺度进行运算,因此需要对不同尺度的输出特征采样得到相同输出尺度。

注意SPPNet就引入了空间池化的组合,对不同输出尺度采用不同的滑窗大小和步长以确保输出尺度相同,同时用如金字塔式叠加的多种池化尺度组合,以提取更加丰富的图像特征。常用于多尺度训练和目标检测中的区域提议网络(Region Proposal Network)的兴趣区域(Region of Interest)提取。

4.2 卷积层和池化层有什么区别?

卷积层是CNN的核心组成部分,其主要功能是进行特征提取。通过在输入数据上滑动一个滤波器(或卷积核)并执行卷积操作,卷积层能够捕捉到输入数据的局部特征。卷积层中的每个卷积核都可以学习到不同的特征,这使得CNN能够适应各种不同的任务和数据集。此外,卷积层还有一个重要的特性,即权重共享,这意味着所有的卷积核都使用相同的权重,这有助于减少模型的参数数量,并提高模型的泛化能力。

池化层则位于卷积层之后,通常用于减少数据的维度和复杂度。池化操作可以是最大池化、平均池化等,它们的作用都是将输入特征图的一部分区域聚合为一个值。这样做的好处是可以降低数据的维度,从而减少模型的计算量和参数数量。同时,池化操作还可以提高模型的鲁棒性,即对输入的小变化或噪声的容忍度。

4.3 NetVLAD池化

NetVLAD是一种特殊的池化方法,它通过改进传统的VLAD(Vector of Locally Aggregated Descriptors)方法,将其嵌入CNN网络中。NetVLAD的主要原理和VLAD类似,它给N个D维的局部图像描述符{x i x_ixi​}作为输入,以及K个聚类中心(“visual words”){c i c_ici​}作为VLAD参数。

具体来说,NetVLAD将CNN的最后一层卷积层视为一个密度描述符提取器,其实验证明,提取出的特征在实例检索和纹理识别上表现得比较好。另外,NetVLAD还设计了一种新的池化层,将被提取出来的描述符池化为一个固定的图像表示,并且其参数可通过后向传播进行学习。

因此,NetVLAD可以看做是一种改进的VLAD方法,它不仅实现了通道注意力机制,而且具体实现方法与SENet有所不同。NetVLAD在场景检索上取得了很好的效果,是一种非常有效的池化方法。

5. 全连接层

全连接层(Full Connected Layer)负责对卷积神经网络学习提取到的特征进行汇总,将多维的特征输入映射为二维的特征输出,高维表示样本批次,低维常常对应任务目标。

6. 输出层

输出层将卷积层产生的特征映射到某个特定空间,比如全连接层将特征映射回输入数据的大小,然后进行非线性变换(如Softmax函数),将特征映射为概率分布,从而进行分类。

输出层的另一个作用是实现数据的扁平化,即将多维的数据转化为一维的数据,方便后续处理。同时,输出层还可以对数据进行归一化处理,提高模型的训练效果。

三,二维卷积与三维卷积

在多通道卷积中,不同通道上的卷积核参数是不同的,根据输出是否需要二维或三维的特征向量,可以选择二维卷积或三位卷积。

二维卷积与三位卷积的区别

1、二维卷积

二维卷积操作如下图所示

                                      

该图分别展示了在单通道和多通道输入的情况下,单通道输出的卷积操作。

                      

2、三维卷积

3D卷积操作如图所示。

                                        

同样分为单通道和多通道,且假定只使用1个卷积核,即输出图像仅有一个通道

   

注意,三维卷积和多通道卷积是有区别的——多通道卷积在不同通道上的卷积核参数是不同的,而3D卷积则由于卷积核本身是3D的,所以这个由于“深度”造成的看似在不同通道上进行卷积,实际用的是同一个卷积,即权重共享。多出的这个深度通道,可能是视频上的连续帧,也可能是立体图像中的不同切片

RGB图不使用三维卷积的原因

  1. RGB图像的通道数(3个通道:红、绿、蓝)没有相关性,因此没有必要在输入数据的第三维度上做卷积,即第三位特征没有提取的必要。
  2. RGB图像的每个通道对应于颜色的一个组成部分,它们是相互独立的。在RGB图像上应用三维卷积核会忽略这种独立性,导致特征提取的效果不佳。

所以判断是否使用二维卷积或三维卷积,只需要判断输出是否为二维或者三维的特征向量。

理解转置卷积与棋盘效应

转置卷积是卷积神经网络中的一种操作,它通过将输入数据与一组卷积核进行卷积运算,从而提取出输入数据中的特征。转置卷积在卷积神经网络中被广泛使用,例如在目标检测、图像分类等任务中。

棋盘效应则是一种不均匀重叠的现象,它会在转置卷积的过程中出现。当过滤器大小无法被卷积步长整除时,转置卷积就会出现不均匀重叠,导致图像中某个部位的颜色比其他部位更深。这种不均匀重叠会造成图像中某个部位的颜色比其他部位更深,从而带来“棋盘效应”。

转置卷积与棋盘效应的关系在于,转置卷积在进行卷积运算时,如果过滤器大小无法被步长整除,就会出现不均匀重叠,从而产生棋盘效应。这种现象会导致图像中的颜色分布不均匀,使得输出的图像质量下降。

为了减少棋盘效应的影响,可以采取一些措施,例如调整步长、使用填充(padding)或者使用其他类型的卷积操作等。这些方法可以有效地减少不均匀重叠现象的出现,从而提高输出图像的质量。

标准卷积

首先给出一个输入输出结果,下图所示为标准卷积的输出计算:

             

那是怎样计算的呢?卷积的时候需要对卷积核进行180°的旋转,同时卷积核中心与需计算的图像像素对齐,输出结构为中心对齐像素的一个新的像素值,计算例子如下:

这样计算出左上角(即第一行第一列)像素的卷积后像素值。给出一个更直观的例子,如下图所示:

从左到右看,原像素经过卷积由1变成-8。通过滑动卷积核,就可以得到整张图片的卷积结果。

转置卷积

首先来看图像的转置卷积过程:

输入:2x2, 卷积核:4x4, 滑动步长:3, 输出:7x7;其计算过程如下:

(1)输入图片每个像素进行一次全卷积,每个像素的卷积后大小为 1+4-1=4, 即4x4大小的特征图,输入有4个像素所以4个4x4的特征图;

(2)将4个特征图进行步长为3的相加; 输出的位置和输入的位置相同。步长为3是指每隔3个像素进行相加,重叠部分进行相加,即输出的第1行第4列是由C图的第一行第四列与D图的第一行第一列相加得到,其他如此类推。

      

卷积神经网络凸显共性的方法

下面介绍三种卷积神经网络凸显共性的方法:局部连接、权重共享和池化操作。

局部连接

我们首先了解一个概念,感受野,即每个神经元仅与输入神经元相连接的一块区域

图像卷积操作中,神经元在空间维度上是局部连接,但在深度上是全连接。局部连接的思想,是受启发于生物学里的视觉系统结构,视觉皮层的神经元就是仅用局部接受信息。对于二维图像,局部像素关联性较强。这种局部连接保证了训练后的滤波器能够对局部特征有最强的响应,使神经网络可以提取数据的局部特征;

下图是一个很经典的图示,左边是全连接,右边是局部连接。

权值共享

权值共享,即计算同一深度的神经元时采用的卷积核参数是共享的。权值共享在一定程度上讲是有意义的,是由于在神经网络中,提取的底层边缘特征与其在图中的位置无关。但是在另一些场景中是无意义的,如在人脸识别任务中,我们期望在不同的位置学到不同的特征。

需要注意的是,权重只是对于同一深度切片的神经元是共享的。在卷积层中,通常采用多组卷积核提取不同的特征,即对应的是不同深度切片的特征,而不同深度切片的神经元权重是不共享。相反,偏置这一权值对于同一深度切片的所有神经元都是共享的

池化操作

池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示

在上图中,若每一个点的处理使用相同的滤波器,则为全卷积;若使用不同的滤波器,则为局部卷积。

局部卷积

大多数神经网络中高层网络通常会采用全连接层(Global Connected Layer),通过多对多的连接方式对特征进行全局汇总,可以有效地提取全局信息。但是全连接的方式需要大量的参数,是神经网络中最占资源的部分之一,因此就需要由局部连接(Local Connected Layer),仅在局部区域范围内产生神经元连接,能够有效地减少参数量。

下面介绍全连接、局部连接、全卷积和局部卷积四种不同的连接方式。

全连接、局部连接、全卷积与局部卷积

1、全连接

                        

层间神经元完全连接,每个输出神经元可以获取到所有输入神经元的信息,有利于信息汇总,常置于网络末层;连接与连接之间独立参数,大量的连接大大增加模型的参数规模。

2.局部连接

                           

层间神经元只有局部范围内的连接,在这个范围内采用全连接的方式,超过这个范围的神经元则没有连接;连接与连接之间独立参数,相比于全连接减少了感受域外的连接,有效减少参数规模。

3.全卷积

                             

层间神经元只有局部范围内的连接,在这个范围内采用全连接的方式,连接所采用的参数在不同感受域之间共享,有利于提取特定模式的特征;相比于局部连接,共用感受域之间的参数可以进一步减少参数量

4.局部卷积

                             

层间神经元只有局部范围内的连接,感受域内采用全连接的方式,而感受域之间间隔采用局部连接与全卷积的连接方式;相比与全卷积成倍引入额外参数,但有更强的灵活性和表达能力;相比于局部连接,可以有效控制参数量。

四,总结

在本文中,我们详细介绍了卷积神经网络(CNN)的基本结构和工作原理,包括卷积层、池化层、全连接层等。我们还讨论了CNN在图像分类、目标检测等任务中的应用,并介绍了如何训练和优化CNN模型。通过深入了解CNN的原理和应用,我们可以更好地理解计算机视觉领域的发展,并为未来的研究和应用提供有力的支持。

  • 33
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值