[Python] 计算机视觉-图像分类经典模型

参考:飞桨PaddlePaddle-源于产业实践的开源深度学习平台

供本人记录用

目录

一、LeNet模型

二、AlexNet模型

三、VGG模型

四、GoogLeNet模型

五、ResNet模型


一、LeNet模型

1、模型介绍

[Python] 计算机视觉-图像分类经典模型_第1张图片 标LeNet模型网络结构示意图题

上述结构是针对手写数字识别任务而设计。 

  • 第一模块:包含一个卷积层与一个最大池化层,图像尺寸28 -> 24 -> 12,通道数1 -> 6;
  • 第二模块:包含一个卷积层与一个最大池化层,图像尺寸12 -> 8 -> 4,通道数6 -> 16;
  • 第三模块:包含一个卷积层,图像尺寸4 -> 1,通道数16 -> 120;
  • 全连接层:使用两层全连接层。

LeNet模型使用的激活函数是Sigmoid函数,优化器采用Momentum。

2、模型优点

  • 网络结构简单,模型训练耗时短,适合用于小尺寸图像的识别。

3、模型缺陷

  • 在大尺寸图像的识别任务中,会出现无法收敛的情况,这是因为大尺寸图像在经过三次卷积两次池化后图像尺寸依旧过大,参数数目过多,难以优化。
  • 使用的激活函数是Sigmoid函数,该函数在x较大或x较小时会出现梯度消失现象,而反向传播是要依照梯度方向来更新参数,出现梯度消失现象会导致参数几乎没有更新,从而难以收敛至最优解。

二、AlexNet模型

1、模型介绍

[Python] 计算机视觉-图像分类经典模型_第2张图片 AlexNet模型网络结构示意图
  •  第一模块:包含一个卷积层与一个最大池化层,图像尺寸224 -> 56 -> 28,通道数:3 -> 96;
  •  第二模块:包含一个卷积层与一个最大池化层,图像尺寸28 -> 28 -> 14,通道数:96 -> 256;
  •  第三模块:包含三个卷积层与一个最大池化层,图像尺寸14-> 14-> 14 -> 7,通道数:256 -> 384 -> 384 -> 256;
  •  全连接层:包含三个全连接层,并且存在惩罚项。

AlexNet模型使用的激活函数是ReLU函数,优化器是Adam

2、模型优点

  • 网络结构更深,包含5层卷积与3层全连接,可以处理大尺寸图像的识别任务。
  • 在全连接层使用了Dropout(惩罚项)抑制过拟合。
  • 使用了ReLU激活函数,该函数在x≥0的地方导数为1,可以将y的梯度完整传递给x,不存在梯度消失现象。

3、模型缺陷

  • 有深度神经网络的雏形,但是并没有给出深度神经网络的设计方向。
  • 由于使用了较大尺寸的卷积核,参数数目较多,因此模型训练开销大。

三、VGG模型

1、模型介绍

[Python] 计算机视觉-图像分类经典模型_第3张图片 VGG模型网络结构示意图

共13层卷积与3层全连接,其中卷积层采用严格的3×3尺寸。

VGG模型使用的激活函数是ReLU函数,优化器是Momentum。

2、模型优点

  • 模型结构清晰,严格使用3×3卷积层和池化层来提取信息,该设计方法为构建深度神经网络提供了方向。
  • 使用3×3卷积核能够有效减少参数数目,降低计算消耗。其原理如下:                                             经过两层3×3卷积后的输出图像的每一个像素点在原图像上的感受野是5×5,经过一层5×5卷积后输出图像上每个像素点的感受野同样是5×5,也就是说两层3×3卷积与一层5×5卷积后所提取的特征包含的原始信息在维度上是一致的,但是两层3×3卷积共有2*9=18个参数,而5×5卷积的参数数目为25,显然使用多个小尺寸卷积核取代一个大尺寸卷积核能够在保证结果准确度的前提下大大降低参数数目。

3、模型缺陷

  • 在研究中发现,随着网络深度的增加,模型性能不增反降,这严重限制了深度神经网络的应用。

(理论上,随着网络深度提高,浅层网络的解空间是包含在深层网络的解空间中的,所以深层网络的解空间中至少应当存在不差于浅层网络的解,但事实上,网络深度越深,优化难度会成几何增长,更优解确实存在,但是无法通过优化找到。)

四、GoogLeNet模型

1、模型介绍

        GoodLeNet模型的主要特点是网络不仅有深度,而且有横向的宽度。“宽度”主要体现在模型中所提出的Inception模块,该模块使用多个尺寸不同的卷积核提取特征,然后将结果沿着通道这一维度拼接。

[Python] 计算机视觉-图像分类经典模型_第4张图片 Inception模块结构示意图
[Python] 计算机视觉-图像分类经典模型_第5张图片 GoogLeNet模型网络结构示意图
  •  第一模块:包含一个7×7卷积层与一个最大池化层,图像尺寸224 -> 112 -> 56,通道数:3 -> 64;
  •  第二模块:包含两个卷积层与一个最大池化层,图像尺寸56 -> 28,通道数:64 -> 192;
  •  第三模块:包含两个Inception块与一个最大池化层,图像尺寸28 -> 14,通道数:192 -> 256 -> 480;
  •  第四模块:包含五个Inception块与一个最大池化层,图像尺寸14 -> 7 ,通道数:480 -> 512 -> 528 -> 832;
  •  第五模块:包含两个Inception块与一个全局池化层,图像尺寸7 -> 1,通道数:832 -> 1024;
  •  全连接层:包含一层全连接。

2、模型优点

  • 提出了Inception模块,除了网络深度,还考虑了网络宽度,适合空间分布范围差异较大的图像特征提取。

        (有些图像的信息在空间尺度上存在巨大差异,比如有些图像的中心区域与边缘区域的颜色、纹理、形状等特征会存在差异,而任务中要求考虑图像的全局特征,此时使用GoodLeNet模型能够更好的捕捉图像不同区域的信息。这是因为空间分布范围更广的图像信息适合用较大的卷积核来提取其特征,空间分布范围较小的图像信息则适合用较小的卷积核来提取其特征,而Inception模块堆叠了多个不同尺寸的卷积核,这保证了空间分布范围不同的图像信息都能有效捕捉。)

  • 相较于VGG模型能够一定程度减少参数数目,这是因为GoodLeNet 模型使用了稀疏连接的结构,即并非每个神经元都与上一层的所有神经元相连。另外卷积层和池化层的堆叠结构能够通过共享权重来进一步减少模型的参数数量。

3、模型缺陷

  • 与VGG类似,当网络深度增加后性能反而会降低。

五、ResNet模型

1、模型介绍

        为了解决深度神经网络的“退化”问题,提出了残差块的概念,残差块在原本的网络结构中增加了一条“shortcut”连接,直接将输入传递给输出(假设原本输入是x,输出是F(x),现在输出就变成了F(x)+x)。

[Python] 计算机视觉-图像分类经典模型_第6张图片 残差块结构示意图
[Python] 计算机视觉-图像分类经典模型_第7张图片 ResNet-50模型网络结构示意图
  •  第一模块:一个卷积层与一个池化层,图像尺寸224 -> 112 -> 56,通道数:3 -> 64;
  •  第二模块:三个残差块,图像尺寸不变,通道数:64 -> 128;
  •  第三模块:四个残差块,第一个残差块的stride为2,其余为1,图像尺寸56 -> 28,通道数:128 -> 256;
  •  第四模块:六个残差块,第一个残差块的stride为2,其余为1,图像尺寸28 -> 14,通道数:256 -> 512;
  •  第五模块:三个残差块,第一个残差块的stride为2,其余为1,图像尺寸14 -> 7 ,通道数:512 -> 2048
  •  全局池化:7×7尺寸,输出尺寸1×1;
  •  全连接层:一层全连接。

2、模型优点

  • 引入了残差块,成功解决了深度神经网络的“退化”问题。

        在传统前馈神经网络中,信息从一层经过非线性变换传递到下一层,当网络变得很深时,原本的信息特征会逐渐消失或无法传递到浅层,这就导致反向传播效果不好,很难达到收敛。残差块中引入了shortcut连接,直接将原始输入传递给输出,使得网络可以学习到恒等映射,同时让网络可以更有效的传播梯度,收敛难度大大降低。

3、模型缺陷

        个人抱怨:原理太难弄懂,只能了解些皮毛,想要彻底搞懂还有太多的疑问挡在面前。构建模型时各个参数无法找到合适的标准来决定取值,只会照搬不会自建。

参考文章:https://www.cnblogs.com/shine-lee/p/12363488.html

备注:参考文章尚未理解透彻,抽空补上。

你可能感兴趣的:(计算机视觉,人工智能,深度学习)