第五章(1.8)金典网络解读—LeNet5、AlexNet、VGGNet

1 LeNet5

一种典型的用来识别数字的卷积网络是LeNet-5。

1.1 模型结构第五章(1.8)金典网络解读—LeNet5、AlexNet、VGGNet_第1张图片

LeNet-5共有7层(不包含输入层),每层都包含可训练参数;每个层有多个Feature Map,每个FeatureMap通过一种卷积滤波器提取输入的一种特征,然后每个FeatureMap有多个神经元。

• C1层是一个卷积层
 输入图片:32 * 32
 卷积核大小:5 * 5
 卷积核种类:6
 输出featuremap大小:28 * 28 (32-5+1)
 神经元数量:28 * 28 * 6
 可训练参数:(5 * 5+1) * 6(每个滤波器5 * 5=25个unit参数和一个bias参数,一共6个滤波器)
 连接数:(5 * 5+1) * 6 * 28 * 28

• S2层是一个下采样层
 输入:28 * 28
 采样区域:2 * 2
 采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
 采样种类:6
 输出featureMap大小:14 * 14(28/2)
 神经元数量:14 * 14 * 6
 可训练参数:2 * 6(和的权+偏置)
 连接数:(2 * 2+1) * 6 * 14 * 14
 S2中每个特征图的大小是C1中特征图大小的1/4

• C3层也是一个卷积层
 输入:S2中所有6个或者几个特征map组合
 卷积核大小:5 * 5
 卷积核种类:16
 输出featureMap大小:10 * 10
 C3中的每个特征map是连接到S2中的所有6个或者几个特征map的,表示本层的特征map是上一层提取到的特征map的不同组合
 存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。 则:可训练参数:6 * (3 * 25+1)+6 * (4 * 25+1)+3 * (4 * 25+1)+(25 * 6+1)=1516
 连接数:10 * 10 * 1516=151600

• S4层是一个下采样层
 输入:10 * 10
 采样区域:2 * 2
 采样方式:4个输入相加,乘以一个可训练参数,再加上一个可训练偏置。结果通过sigmoid
 采样种类:16
 输出featureMap大小:5 * 5(10/2)
 神经元数量:5 * 5 * 16=400
 可训练参数:2 * 16=32(和的权+偏置)
 连接数:16 * (2 * 2+1) * 5 * 5=2000 S4中每个特征图的大小是C3中特征图大小的1/4

• C5层是一个卷积层
 输入:S4层的全部16个单元特征map(与s4全相连)
 卷积核大小:5 * 5
 卷积核种类:120
 输出featureMap大小:1 * 1(5-5+1)
 可训练参数/连接:120 * (16 * 5 * 5+1)=48120

• F6层全连接层
 输入:c5 120维向量
 计算方式:计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数
 可训练参数:84 * (120+1)=10164

1.2 模型特性

• 卷积网络使用一个3层的序列:卷积、池化、非线性
• 使用卷积提取空间特征
• 使用映射的空间均值进行降采样
• tanh或sigmoids非线性
• 多层神经网络(MLP)作为最终的分类器
• 层间的稀疏连接矩阵以避免巨大的计算开销

2 AlexNet

2.1 模型介绍

AlexNet在2012年ILSVRC竞赛中赢得了第一名,其Top5错误率为15.3%。AlexNet模型证明了CNN在复杂模型下的有效性,并且在可接受时间范围内,部署GPU得到了有效结果。

2.2 模型结构

第五章(1.8)金典网络解读—LeNet5、AlexNet、VGGNet_第2张图片

2.3 模型解读

AlexNet共8层,前五层为卷积层,后三层为全连接层。

  1. conv1阶段:

第五章(1.8)金典网络解读—LeNet5、AlexNet、VGGNet_第3张图片
• 输入图片:227 * 227 * 3
• 卷积核大小:11* 11 *3
• 卷积核数量:96
• 滤波器stride:4
• 输出featuremap大小:(227-11)/4+1=55 (227个像素减去11,然后除以4,生成54个像素,再加上被减去的11也对应生成一个像素)
• 输出featuremap大小:55 * 55
• 共有96个卷积核,会生成55 * 55 * 96个卷积后的像素层。96个卷积核分成2组,每组48个卷积核。对应生成2组55 * 55 * 48的卷积后的像素层数据。
• 这些像素层经过relu1单元的处理,生成激活像素层,尺寸仍为2组55 * 55 * 48的像素层数据。
• 这些像素层经过pool运算的处理,池化运算尺度为3 * 3,运算的步长为2,则池化后图像的尺寸为(55-3)/2+1=27。 即池化后像素的规模为27 * 27 * 96;
• 然后经过归一化处理,归一化运算的尺度为5 * 5;第一卷积层运算结束后形成的像素层的规模为27 * 27 * 96。分别对应96个卷积核所运算形成。这96层像素层分为2组,每组48个像素层,每组在一个独立的GPU上进行运算。
• 反向传播时,每个卷积核对应一个偏差值。即第一层的96个卷积核对应上层输入的96个偏差值。

  1. conv2阶段:
    第五章(1.8)金典网络解读—LeNet5、AlexNet、VGGNet_第4张图片
    • 输入图片:27 * 27 * 96(第一层输出)
    • 为便于后续处理,每幅像素层的左右两边和上下两边都要填充2个像素
    • 27 * 27 * 96的像素数据分成27 * 27 * 48的两组像素数据,两组数据分别再两个不同的GPU中进行运算。
    • 卷积核大小:5 * 5 * 48
    • 滤波器stride:1
    • 输出featuremap大小:卷积核在移动的过程中会生成(27-5+2 * 2)/1+1=27个像素。(27个像素减去5,正好是22,在加上上下、左右各填充的2个像素,即生成26个像素,再加上被减去的5也对应生成一个像素),行和列的27 * 27个像素形成对原始图像卷积之后的像素层。共有256个5 * 5 * 48卷积核;这256个卷积核分成两组,每组针对一个GPU中的27 * 27 * 48的像素进行卷积运算。会生成两组27 * 27 * 128个卷积后的像素层。
    • 这些像素层经过relu2单元的处理,生成激活像素层,尺寸仍为两组27 * 27 * 128的像素层。
    • 这些像素层经过pool运算(池化运算)的处理,池化运算的尺度为3 * 3,运算的步长为2,则池化后图像的尺寸为(57-3)/2+1=13。 即池化后像素的规模为2组13 * 13 * 128的像素层;
    • 然后经过归一化处理,归一化运算的尺度为5 * 5;
    • 第二卷积层运算结束后形成的像素层的规模为2组13 * 13 * 128的像素层。分别对应2组128个卷积核所运算形成。每组在一个GPU上进行运算。即共256个卷积核,共2个GPU进行运算。
    • 反向传播时,每个卷积核对应一个偏差值。即第一层的96个卷积核对应上层输入的256个偏差值。

  2. conv3阶段:
    在这里插入图片描述
    • 第三层输入数据为第二层输出的2组13 * 13 * 128的像素层;
    • 为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;
    • 2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有192个卷积核,每个卷积核的尺寸是3 * 3 * 256。因此,每个GPU中的卷积核都能对2组13 * 13 * 128的像素层的所有数据进行卷积运算。
    • 移动的步长是1个像素。
    • 运算后的卷积核的尺寸为(13-3+1 * 2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13 * 13 * 192个卷积核。2个GPU中共13 * 13 * 384个卷积后的像素层。这些像素层经过relu3单元的处理,生成激活像素层,尺寸仍为2组13 * 13 * 192像素层,共13 * 13 * 384个像素层。

  3. conv4阶段DFD:
    在这里插入图片描述
    • 第四层输入数据为第三层输出的2组13 * 13 * 192的像素层;
    • 为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;
    • 2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有192个卷积核,每个卷积核的尺寸是3 * 3 * 192。因此,每个GPU中的卷积核能对1组13 * 13 * 192的像素层的数据进行卷积运算。
    • 移动的步长是1个像素。
    • 运算后的卷积核的尺寸为(13-3+1 * 2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13 * 13 * 192个卷积核。2个GPU中共13 * 13 * 384个卷积后的像素层。
    • 这些像素层经过relu4单元的处理,生成激活像素层,尺寸仍为2组13 * 13 * 192像素层,共13 * 13 * 384个像素层。

  4. conv5阶段:
    第五章(1.8)金典网络解读—LeNet5、AlexNet、VGGNet_第5张图片
    • 第五层输入数据为第四层输出的2组13 * 13 * 192的像素层;
    • 为便于后续处理,每幅像素层的左右两边和上下两边都要填充1个像素;
    • 2组像素层数据都被送至2个不同的GPU中进行运算。每个GPU中都有128个卷积核,每个卷积核的尺寸是3 * 3 * 192。因此,每个GPU中的卷积核能对1组13 * 13 * 192的像素层的数据进行卷积运算。
    • 移动的步长是1个像素。
    • 因此,运算后的卷积核的尺寸为(13-3+1 * 2)/1+1=13(13个像素减去3,正好是10,在加上上下、左右各填充的1个像素,即生成12个像素,再加上被减去的3也对应生成一个像素),每个GPU中共13 * 13 * 128个卷积核。2个GPU中共13 * 13 * 256个卷积后的像素层。
    • 这些像素层经过relu5单元的处理,生成激活像素层,尺寸仍为2组13 * 13 * 128像素层,共13 * 13 * 256个像素层。
    • 2组13 * 13 * 128像素层分别在2个不同GPU中进行池化(pool)运算处理。池化运算的尺度为3 * 3,运算的步长为2,则池化后图像的尺寸为(13-3)/2+1=6。 即池化后像素的规模为两组6 * 6 * 128的像素层数据,共6 * 6 * 256规模的像素层数据。

  5. fc6阶段:

第五章(1.8)金典网络解读—LeNet5、AlexNet、VGGNet_第6张图片
• 第六层输入数据的尺寸是6 * 6 * 256
• 采用6 * 6 * 256尺寸的滤波器对第六层的输入数据进行卷积运算
• 共有4096个6 * 6 * 256尺寸的滤波器对输入数据进行卷积运算,通过4096个神经元输出运算结果;
• 这4096个运算结果通过relu激活函数生成4096个值;
• 通过drop运算后输出4096个本层的输出结果值。
• 由于第六层的运算过程中,采用的滤波器的尺寸(6 * 6 * 256)与待处理的feature map的尺寸(6 * 6 * 256)相同,即滤波器中的每个系数只与feature map中的一个像素值相乘;而其它卷积层中,每个滤波器的系数都会与多个feature map中像素值相乘;因此,将第六层称为全连接层。
• 第五层输出的6 * 6 * 256规模的像素层数据与第六层的4096个神经元进行全连接,然后经由relu6进行处理后生成4096个数据,再经过dropout6处理后输出4096个数据。

  1. fc7阶段:
    第五章(1.8)金典网络解读—LeNet5、AlexNet、VGGNet_第7张图片
    • 第六层输出的4096个数据与第七层的4096个神经元进行全连接
    • 然后经由relu7进行处理后生成4096个数据,再经过dropout7处理后输出4096个数据。

  2. fc8阶段:
    在这里插入图片描述
    • 第七层输出的4096个数据与第八层的1000个神经元进行全连接,经过训练后输出被训练的数值。

2.4 模型特性

• 使用ReLU作为非线性
• 使用dropout技术选择性地忽略训练中的单个神经元,避免模型的过拟合
• 重叠最大池化(overlapping max pooling),避免平均池化(average pooling)的平均效应
• 使用NVIDIA GTX 580 GPU减少训练时间
• 当时,GPU比CPU提供了更多的核心,可以将训练速度提升10倍,从而允许使用更大的数据集和更大的图像。

3 VGGNet

3.1 模型结构

第五章(1.8)金典网络解读—LeNet5、AlexNet、VGGNet_第8张图片

3.2 模型特点

  1. 整个网络都使用了同样大小的卷积核尺寸(3 * 3)和最大池化尺寸(2 * 2)
  2. 1 * 1卷积的意义主要在于线性变换,而输入通道数和输出通道数不变,没有发生降维。
  3. 两个3 * 3的卷积层串联相当于1个5 * 5的卷积层,即一个像素会跟周围5 * 5的像素产生关联,可以说感受野大小为5 * 5。而3个3 * 3的卷积层串联的效果则相当于1个7 * 7的卷积层。除此之外,3个串联的3 * 3的卷积层,拥有比1个7 * 7的卷积层更少的参数量,只有后者的(3 * 3 * 3)/(7 * 7)=55%。最重要的是,3个3 * 3的卷积层拥有比1个7 * 7的卷积层更多的非线性变换(前者可以使用三次ReLU激活函数,而后者只有一次),使得CNN对特征的学习能力更强。
  4. VGGNet在训练时有一个小技巧,先训练级别A的简单网络,再复用A网络的权重来初始化后面的几个复杂模型,这样训练收敛的速度更快。在预测时,VGG采用Multi-Scale的方法,将图像scale到一个尺寸Q,并将图片输入卷积网络计算。然后在最后一个卷积层使用滑窗的方式进行分类预测,将不同窗口的分类结果平均,再将不同尺寸Q的结果平均得到最后结果,这样可提高图片数据的利用率并提升预测准确率。在训练中,VGGNet还使用了Multi-Scale的方法做数据增强,将原始图像缩放到不同尺寸S,然后再随机裁切224*224的图片,这样能增加很多数据量,对于防止模型过拟合有很不错的效果。

你可能感兴趣的:(深度学习,机器学习,深度学习实战演练)