卷积神经网络(Convolutional Neural Network,简称 CNN)已然成为图像识别、视频分析以及自然语言处理等诸多领域的核心技术手段。在当前的研究与应用场景中,CNN 的重要性愈发凸显。

今天为大家介绍五种在深度学习领域常见的CNN模型,分别是LeNetAlexNetVGGNetGoogLeNetResNet

图片

在开始介绍之前,为了让大家可以更好的 学习深度学习神经网络,我为大家准备了一些相关资料,包括深度学习神经网络从基础到进阶的学习资料,还有神经网络各种变体论文、代码,可以让大家更好的找到论文创新点。

图片

大家可以添加我的小助手让她及时无偿分享给你奥(微信扫码维码图片添加即可)

记得发送暗号【32】给小助手哦!

 

1. LeNet:卷积神经网络(CNN)的鼻祖

LeNet网络作为最早的卷积神经网络之一,由Yann LeCun等人于1998 年提出。该网络主要应用于手写数字识别任务,在深度学习与卷积神经网络发展历程中,占据着举足轻重的地位,堪称这一领域的重要里程碑 。

该模型的提出主要应用于手写数字的识别任务

图片

其网络结构如下:

图片

  • 输入层:承担着接收原始图像数据的任务。该层作为整个网络处理流程的起始点,为后续的分析提供基础数据。

  • 卷积层:此层运用多个卷积核(亦称为滤波器)对输入图像进行操作,旨在提取图像中的局部特征。LeNet网络通常配备两个卷积层,这些卷积层通过卷积核在图像上的滑动,不断挖掘图像中蕴含的丰富细节信息,为后续的特征处理奠定基础。

  • 池化层:紧跟在卷积层之后,通过池化操作来实现对特征图空间维度的降低。在这一过程中,池化层能够在保留关键特征信息的前提下,减少数据量,从而提升网络的计算效率和对不同尺度变化的适应性。

  • 全连接层:经过卷积层和池化层提取的特征,会被展平后传输至一个或多个全连接层。这些全连接层的主要职责是对之前提取的特征进行更高层次的整合,将不同局部的特征信息进行综合分析,挖掘特征之间的内在联系。

  • 输出层:最后一个全连接层的输出会被输送至一个分类层,该分类层通常采用softmax层。softmax层的作用是将输入数据转换为各类别的概率分布,从而生成最终的分类结果,为整个图像识别任务提供明确的输出。

LeNet 的典型结构如下:卷积层1+池化层1+卷积层2+池化层2+全连接层1+全连接层2+输出层。

图片

卷积层1:使用6个5x5的卷积核,步长为1,输出6个特征图。

池化层1:使用2x2的池化窗口,步长为2。

卷积层2:使用16个5x5的卷积核,步长为1,输出16个特征图。

池化层2:使用2x2的池化窗口,步长为2。

全连接层1:将特征图展平并连接到120个神经元。

全连接层2:将120个神经元的输出连接到84个神经元。

输出层:将84个神经元的输出连接到10个神经元,对应于数字0到9的分类。

LeNet的架构虽简单,却为后续卷积神经网络(CNN)的发展夯实了基础。

2. AlexNet:深度学习的开山之作

2012 年,由 Alex Krizhevsky 等人提出的 AlexNet 在 ImageNet 竞赛中斩获了具有突破性意义的成果,有力地推动了深度学习领域的发展进程。AlexNet 是一个架构包含 8 层的深度网络,采用了 ReLU 激活函数以及局部响应归一化(Local Response Normalization,简称为 LRN)技术,并开创性地引入了多 GPU 训练这一概念 。 

图片

AlexNet 架构具备以下特点:

  • 深度结构:AlexNet 为拥有 8 层的深度网络,其中卷积层共计 5 层,全连接层有 2 层,池化层为 3 层。

  • ReLU 激活函数:在卷积层与全连接层之后,采用 ReLU(Rectified Linear Unit,修正线性单元)作为激活函数。此函数能够有效解决梯度消失问题,进而加快训练进程。

  • 局部响应归一化:在池化层之后运用局部响应归一化(LRN)技术,该技术有助于提升模型的泛化能力。数据增强:借助随机裁剪、水平翻转等技术,对训练图像实施数据增强操作,以此降低过拟合现象的发生概率。

  • Dropout:在训练过程中应用 Dropout 技术,即随机舍弃部分神经元的输出,从而避免模型对训练数据出现过度拟合的情况。

  • 多GPU训练:AlexNet 作为首个运用多个 GPU 进行训练的卷积神经网络(CNN)模型,极大地提高了训练效率 。

AlexNet的具体结构如下:卷积层1+池化层1+卷积层2+池化层2+卷积层3+卷积层4+卷积层5+池化层3+全连接层1+全连接层2+输出层。

图片

卷积层1:96个滤波器,11x11大小,步长4,后跟ReLU激活函数。

池化层1:3x3大小,步长2。

局部响应归一化1

卷积层2:256个滤波器,5x5大小,步长1,后跟ReLU激活函数。

池化层2:3x3大小,步长2。

局部响应归一化2

卷积层3:384个滤波器,3x3大小,步长1,后跟ReLU激活函数。

卷积层4:384个滤波器,3x3大小,步长1,后跟ReLU激活函数。

卷积层5:256个滤波器,3x3大小,步长1,后跟ReLU激活函数。

池化层3:3x3大小。

全连接层1:4096个神经元,后跟ReLU激活函数和Dropout。

全连接层2:4096个神经元,后跟ReLU激活函数和Dropout。

输出层:1000个神经元,使用softmax激活函数进行分类。

3. VGGNet:深度与简洁的结合

由牛津大学视觉几何组于 2014 年提出的 VGGNet,凭借其深层架构以及 3×3 规格的小卷积核而声名远扬。VGGNet 通过实践表明,增加网络深度并运用小卷积核能够切实有效地提升模型性能。在 ImageNet 竞赛中,VGGNet 斩获了优异成绩,且因其设计简洁、性能卓越,而备受青睐 。

图片

VGGNet 的主要特点如下:

  • 深层结构:VGGNet 采用了更为深邃的网络架构。其最初版本拥有 16 层,即 VGG - 16;另有一个规模稍小的版本,层数为 13 层,记作 VGG - 13。网络深度是 VGGNet 得以学习更为复杂特征的关键要素。

  • 小卷积核:有别于 AlexNet 所采用的大卷积核,VGGNet 运用了尺寸为 3×3 的小卷积核。通过堆叠多个这样的卷积层,VGGNet 能够捕获更为广泛的空间特征。

  • 连续的卷积层:在每个卷积层之后,VGGNet 通常会连续设置更多的卷积层。这与 AlexNet 在卷积层和池化层之间交替设置的方式有所不同。

  • 池化层:在连续的卷积层之后,VGGNet 会采用尺寸为 2×2 的池化层,步长设定为 2。这一操作旨在减小特征图的空间尺寸。

  • 全连接层:经过卷积和池化层处理后,VGGNet 会使用若干个全连接层。最终的输出层采用 softmax 激活函数,以实现分类任务。

  • 网络初始化:VGGNet 采用了一种特定的权重初始化方法。该方法有助于加速训练进程,同时提升模型的性能表现。

  • 数据增强:与其他模型类似,VGGNet 也运用了数据增强技术,其中包括随机裁剪和水平翻转等操作,以此提高模型的泛化能力。

图片

卷积层1(64个3x3卷积核)+ReLU激活函数+卷积层2(64个3x3卷积核)+ReLU激活函数+2x2池化层1

+卷积层3(128个3x3卷积核)+ReLU激活函数+卷积层4(128个3x3卷积核)+ReLU激活函数+2x2池化层2

+卷积层5(256个3x3卷积核)+ReLU激活函数+卷积层6(256个3x3卷积核)+ReLU激活函数+2x2池化层3

+卷积层7(512个3x3卷积核)+ReLU激活函数+卷积层8(512个3x3卷积核)+ReLU激活函数+2x2池化层4

+卷积层9(512个3x3卷积核)+ReLU激活函数+卷积层10(512个3x3卷积核)+ReLU激活函数+2x2池化层5

+全连接层1(4096个神经元)+全连接层2(4096个神经元)+输出层(1000个神经元)+ softmax激活函数(分类)。

4.GoogLeNet:Inception模块的创新

GoogLeNet,又被称作 Inception 网络,由 Google 研究人员于 2014 年提出。该网络引入了一种全新的网络设计理念——Inception 模块。此模块能够让网络依据实际情况,自动判定在不同尺度下应采用何种类型的卷积或池化操作,从而显著提升了模型的运行效率与性能表现 。

Inception 模块的核心思想,是在同一网络层中并行运用不同尺寸的卷积核,随后将所得结果在深度维度上进行合并。如此操作的优势在于,该模块能够自动捕获不同尺度的特征,而无需研究人员手动设计特定的网络结构来适配不同尺寸的特征 。

图片

一个典型的Inception模块包含以下部分:

1x1卷积:用于跨通道降维或升维,有助于减少计算量和控制模型大小。

3x3卷积:首先通过1x1卷积降维,然后应用3x3卷积。

5x5卷积:首先通过1x1卷积降维,然后应用5x5卷积,通常5x5卷积之前会先应用一个3x3的最大池化来减小计算区域。

3x3最大池化:直接在输入上应用3x3的最大池化,然后通过1x1卷积进行升维。

GoogLeNet的整体架构如下:

图片

  • 输入层:接收原始图像数据。

  • 卷积层:设置一个含有 64 个滤波器的卷积层,采用 7×7 尺寸的卷积核,步长设定为 2,其后紧跟 ReLU 激活函数。

  • 池化层:运用 5×5 的最大池化操作,步长为 3。

  • Inception 模块:将多个 Inception 模块进行堆叠。每个模块均包含不同尺寸的卷积与池化操作。

  • 辅助分类器:在网络的中间部分增设辅助分类器。这一举措能够助力网络更早地学习特征,同时提供额外的损失信号,对防止过拟合现象的发生具有积极作用。

  • 全连接层:在经过多个 Inception 模块后,借助全连接层对特征进行整合。

  • 输出层:构建一个拥有 1000 个神经元、采用 softmax 激活函数的输出层,以此实现分类功能。

GoogLeNet 的创新点在于其 Inception 模块的设计。这一设计理念极具开创性与影响力,在后续发展中,被广泛应用于其他网络架构,诸如 Inception - v2、Inception - v3 等。GoogLeNet 通过实践充分证明,通过并行开展不同尺寸的卷积操作,能够切实有效地提升网络的性能与运行效率。 

此外,辅助分类器的引入亦是 GoogLeNet 的一项重要特性。这一设计有助于增强模型的泛化能力,提升训练过程的稳定性 。

5. ResNet:残差学习的革命

2015 年,微软研究院提出残差网络(Residual Networks,简称 ResNet)。该网络通过引入残差学习框架,成功攻克了深层网络训练过程中面临的梯度消失难题。在 2015 年的 ImageNet 与 COCO 竞赛里,ResNet 凭借卓越表现斩获优异成绩。鉴于其在解决深层网络训练难题方面展现出的强大能力,ResNet 受到了广泛关注 。

图片

残差学习:

ResNet的核心创新是残差学习框架,它通过引入跳跃连接(skip connections)或快捷连接(shortcut connections)来解决随着网络深度增加时训练难度增大的问题。这些连接允许网络中的信号绕过一层或多层直接传递,从而帮助梯度在网络中更有效地传播。

残差块:

ResNet的基本单元是残差块(residual block),它包含两个卷积层,以及一个跳跃连接,该连接将块的输入直接添加到块的输出。如果输入和输出的维度不匹配,会在跳跃连接上使用1x1卷积来进行维度调整。

图片

一个典型的残差块结构呈现如下:

首先,输入数据进入卷积层 1。在该卷积层中,通常会执行批量归一化操作,并应用 ReLU 激活函数。

随后,数据流入卷积层 2。此卷积层同样配备批量归一化操作与 ReLU 激活函数,不过在进入卷积层 2 之前,并不会应用 ReLU 激活函数。

之后,若有需求,输入数据会通过 1×1 卷积进行维度调整。经过维度调整后的输入数据,将与卷积层 2 的输出结果进行相加运算。最后,相加后的结果会通过 ReLU 激活函数进行处理。

ResNet的不同版本

图片

ResNet-18:含有18层的残差网络。

ResNet-34:含有34层的残差网络。

ResNet-50:含有50层的残差网络,是最常见的ResNet版本之一。

ResNet-101:含有101层的残差网络。

ResNet-152:含有152层的残度网络。

ResNet的架构特点

  • 批量归一化:ResNet在每个卷积层之后使用批量归一化,有助于加速训练过程并提高模型的稳定性。

  • ReLU激活函数:在卷积层之后使用ReLU作为激活函数。残差块:通过残差块结构,ResNet可以有效地训练非常深的网络。

  • 全局平均池化:在残差块之后,ResNet使用全局平均池化来减少全连接层的参数数量。

  • 全连接层和输出层:在全局平均池化之后,使用全连接层进行特征整合,最终输出层使用softmax激活函数进行分类。

ResNet 的成功之处,在于其提供了一种行之有效的深层网络训练方法。凭借这一方法,网络能够在不断增加深度的情况下,有效避免遭遇梯度消失或梯度爆炸等问题。

此外,ResNet 的架构设计为后续众多其他网络架构的发展提供了重要启发。诸如 DenseNet、ResNeXt 等网络架构,均在一定程度上借鉴了 ResNet 的设计理念与思路 。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐