1.LeNet
LeNet 是由 Yann LeCun 等人在 1990 年提出的,是最早的卷积神经网络之一,主要用于手写数字识别。
LeNet 的架构简单,但为现代 CNN 的发展奠定了基础。
架构
- 输入:32×32 像素的灰度图像
- 第1层:卷积层,使用 6 个 5×5 的卷积核,输出尺寸为 28×28。
- 第2层:池化层,采用平均池化,步幅为 2,输出尺寸为 14×14。
- 第3层:卷积层,使用 16 个 5×5 的卷积核,输出尺寸为 10×10。
- 第4层:池化层,再次使用平均池化,输出尺寸为 5×5。
- 第5层:全连接层,将 5×5 的特征图拉直,输入到全连接层,输出 120 个神经元。
- 第6层:全连接层,输出 84 个神经元。
- 输出层:10 个神经元,用于分类 10 种手写数字。
图片
特点:
- 引入了卷积和池化的概念。
- 使用了 Sigmoid 或 Tanh 作为激活函数。
2.AlexNet
AlexNet 是 2012 年 ILSVRC 竞赛中的冠军,由 Alex Krizhevsky 等人提出,标志着深度学习在计算机视觉领域的巨大突破。
它在 ImageNet 数据集上表现优异,成功应用了 ReLU 激活函数和 Dropout。
架构
- 输入:224×224×3 的 RGB 图像
- 第1层:卷积层,96 个 11×11 的卷积核,步幅为 4,输出尺寸为 55×55×96,接 ReLU 激活。
- 第2层:池化层,最大池化,步幅为 2,输出尺寸为 27×27×96。
- 第3层:卷积层,256 个 5×5 的卷积核,步幅为 1,输出尺寸为 27×27×256,接 ReLU 激活。
- 第4层:池化层,最大池化,步幅为 2,输出尺寸为 13×13×256。
- 第5层:卷积层,384 个 3×3 的卷积核,步幅为 1,输出尺寸为 13×13×384,接 ReLU 激活。
- 第6层:卷积层,384 个 3×3 的卷积核,输出尺寸为 13×13×384。
- 第7层:卷积层,256 个 3×3 的卷积核,输出尺寸为 13×13×256。
- 第8层:池化层,最大池化,输出尺寸为 6×6×256。
- 第9层:全连接层,4096 个神经元,接 Dropout。
- 第10层:全连接层,4096 个神经元,接 Dropout。
- 输出层:1000 类的 Softmax 分类。
图片
特点
- 使用了 ReLU 代替 Sigmoid,解决了梯度消失问题。
- Dropout 防止过拟合。
- 使用了多个 GPU 进行并行训练。
3.ZFNet
ZFNet 是 AlexNet 的改进版本,由 Matthew Zeiler 和 Rob Fergus 提出,旨在通过更好的超参数调整(如卷积核大小和步幅)来改进 AlexNet 的性能。
架构
- 输入:224×224×3 的 RGB 图像
- 第1层:卷积层,96 个 7×7 的卷积核,步幅为 2,输出尺寸为 55×55×96,接 ReLU 激活。
- 第2层:最大池化层,步幅为 2,输出尺寸为 27×27×96。
- 第3层:卷积层,256 个 5×5 的卷积核,步幅为 2,输出尺寸为 27×27×256。
- 第4层:最大池化层,步幅为 2,输出尺寸为 13×13×256。
- 第5层:卷积层,384 个 3×3 的卷积核,输出尺寸为 13×13×384。
- 第6层:卷积层,384 个 3×3 的卷积核,输出尺寸为 13×13×384。
- 第7层:卷积层,256 个 3×3 的卷积核,输出尺寸为 13×13×256。
- 第8层:最大池化层,输出尺寸为 6×6×256。
- 后续结构与 AlexNet 类似,经过全连接层和 Softmax 分类。
图片
特点
- 改进了卷积核大小,提升了感受野。
4.VGGNet
VGGNet 是 2014 年由 Oxford University's Visual Geometry Group 提出的,它因其结构简单、深度较深而闻名。
VGGNet 使用了较小的卷积核(3×3),并通过堆叠多个卷积层来增加模型深度,而不是使用大的卷积核。
VGGNet 提供了 VGG-16 和 VGG-19 两个变体,分别包含 16 和 19 个卷积层。
架构
- 输入:224×224×3 的 RGB 图像。
- 使用固定的 3×3 卷积核,步幅为 1,padding 为 1,以保持输入输出大小相同。
- 每经过几个卷积层之后,应用 2×2 的最大池化层,步幅为 2,减半图像尺寸。
- 有两种主要变体:
- VGG-16:13 个卷积层,3 个全连接层,共 16 层。
- VGG-19:16 个卷积层,3 个全连接层,共 19 层。
- 最终的全连接层为 4096 个神经元,之后是一个 1000 类分类器(用于 ImageNet 数据集)。
图片
特点
- 全部使用 3×3 的卷积核,堆叠较多层数。
- 参数量较大,计算代价较高。
5.GoogLeNet
GoogLeNet,或称为 Inception v1,是 Google 在 2014 年提出的网络结构,它的主要贡献是引入了 Inception 模块,它通过结合不同尺度的卷积操作来提高特征提取的多样性,从而更好地捕捉不同层次的特征。
Inception 模块
Inception 模块的核心在于捕捉不同尺度的特征。
通过引入多个并行的卷积操作(1x1、3x3、5x5),以及一个池化操作,网络可以从不同的卷积层中提取多尺度信息。
这种结构减少了对特定卷积核大小的依赖,增强了网络的鲁棒性。
- 1x1卷积,主要用于减少通道维度,降低计算复杂度。
- 3x3卷积和5x5卷积,用于提取局部特征。
- 最大池化,增加网络的平移不变性,减少过拟合。
每个Inception模块会将这些操作的输出进行拼接,合成为一个新的特征图,再传递给下一层。
图片
架构细节
- 输入层,输入图像大小为224x224x3。
- 卷积层和池化层,最初的几层是常规的卷积和池化层。
- Inception模块,从网络的中间部分开始,重复使用Inception模块。
- 全局平均池化,在最后的卷积层后,GoogLeNet 使用全局平均池化替代全连接层,减少了参数数量。
- 辅助分类器,为了应对梯度消失问题,GoogLeNet在中间层引入了两个辅助分类器(Auxiliary Classifier)。这些分类器在训练过程中提供额外的监督,保证梯度能够有效传播。
图片
6.ResNet
ResNet 是一种深度卷积神经网络,它通过引入残差连接(Residual Connection)解决了随着网络深度增加而产生的梯度消失或梯度爆炸问题,从而使网络能够更有效地训练更深层次的网络。
图片
原理
ResNet 的核心思想是残差学习,它的创新点在于引入了“跳跃连接”,即残差块(Residual Block)。
传统的神经网络中,每一层直接学习一个新的变换 H(x),而 ResNet 提出的思想是让每一层学习一个“残差”函数,即 ,因此实际的输出是 。
图片
残差块
针对不同深度的 ResNet,作者提出了两种残差块。
图片
- 基本残差块
基本残差块是最基础的残差单元,适用于较浅的网络结构,如 ResNet-18 和 ResNet-34。
这种残差块包含两个连续的 3x3 卷积层,每一层后面都紧跟着批归一化和 ReLU 激活函数。 - 瓶颈残差块
瓶颈残差块是为深层网络设计的,如 ResNet-50、ResNet-101 和 ResNet-152。
它的目的是在减少计算复杂度的同时,仍保持足够的表征能力。
瓶颈残差块通过先压缩通道数,然后进行卷积操作,再扩展回原通道数的策略,减少了计算开销。
第一层,使用 1×1 卷积核,主要目的是减少输入的维度,这有助于减少后续层的计算负担。
第二层,标准的 3×3 卷积层,在降维后的特征上进行空间特征提取。
第三层,再次使用 1×1 卷积核,目的是恢复通道数,为将输出与跳跃连接相加做准备。
跳跃连接,如果输入与输出的维度不匹配(通常在跨越残差块时会改变维度),快捷连接上也会应用 1×1 卷积来调整维度,确保能够与主路径上的输出相加。