Task05:卷积神经网络基础;leNet;卷积神经网络进阶

5 卷积神经网络(CNN)

​ 卷积神经网络是一种用来处理局部和整体相关性的计算网络结构,被应用在图像识别、自然语言处理甚至是语音识别领域,因为图像数据具有显著的局部与整体关系,其在图像识别领域的应用获得了巨大的成功。

5.1 卷积神经网络的组成层

​ 以图像分类任务为例,在表5.1所示卷积神经网络中,一般包含5种类型的网络层次结构:

​ 表5.1 卷积神经网络的组成

CNN层次结构输出尺寸作用
输入层 W 1 × H 1 × 3 W_1\times H_1\times 3 W1×H1×3卷积网络的原始输入,可以是原始或预处理后的像素矩阵
卷积层 W 1 × H 1 × K W_1\times H_1\times K W1×H1×K参数共享、局部连接,利用平移不变性从全局特征图提取局部特征
激活层 W 1 × H 1 × K W_1\times H_1\times K W1×H1×K将卷积层的输出结果进行非线性映射
池化层 W 2 × H 2 × K W_2\times H_2\times K W2×H2×K进一步筛选特征,可以有效减少后续网络层次所需的参数量
全连接层 ( W 2 ⋅ H 2 ⋅ K ) × C (W_2 \cdot H_2 \cdot K)\times C (W2H2K)×C将多维特征展平为2维特征,通常低维度特征对应任务的学习目标(类别或回归值)

W 1 × H 1 × 3 W_1\times H_1\times 3 W1×H1×3对应原始图像或经过预处理的像素值矩阵,3对应RGB图像的通道; K K K表示卷积层中卷积核(滤波器)的个数; W 2 × H 2 W_2\times H_2 W2×H2 为池化后特征图的尺度,在全局池化中尺度对应 1 × 1 1\times 1 1×1; ( W 2 ⋅ H 2 ⋅ K ) (W_2 \cdot H_2 \cdot K) (W2H2K)是将多维特征压缩到1维之后的大小, C C C对应的则是图像类别个数。

5.1.1 输入层

​ 输入层(Input Layer)通常是输入卷积神经网络的原始数据或经过预处理的数据,可以是图像识别领域中原始三维的多彩图像,也可以是音频识别领域中经过傅利叶变换的二维波形数据,甚至是自然语言处理中一维表示的句子向量。以图像分类任务为例,输入层输入的图像一般包含RGB三个通道,是一个由长宽分别为 H H H W W W组成的3维像素值矩阵 H × W × 3 H\times W \times 3 H×W×3,卷积网络会将输入层的数据传递到一系列卷积、池化等操作进行特征提取和转化,最终由全连接层对特征进行汇总和结果输出。根据计算能力、存储大小和模型结构的不同,卷积神经网络每次可以批量处理的图像个数不尽相同,若指定输入层接收到的图像个数为 N N N,则输入层的输出数据为 N × H × W × 3 N\times H\times W\times 3 N×H×W×3

5.1.2 卷积层

​ 卷积层(Convolution Layer)通常用作对输入层输入数据进行特征提取,通过卷积核矩阵对原始数据中隐含关联性的一种抽象。卷积操作原理上其实是对两张像素矩阵进行点乘求和的数学操作,其中一个矩阵为输入的数据矩阵,另一个矩阵则为卷积核(滤波器或特征矩阵),求得的结果表示为原始图像中提取的特定局部特征。图5.1表示卷积操作过程中的不同填充策略,上半部分采用零填充,下半部分采用有效卷积(舍弃不能完整运算的边缘部分)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8obnoBOH-1582112558948)(img/ch5/convolution.png)]
​ 图5.1 卷积操作示意图

5.1.3 激活层

​ 激活层(Activation Layer)负责对卷积层抽取的特征进行激活,由于卷积操作是由输入矩阵与卷积核矩阵进行相差的线性变化关系,需要激活层对其进行非线性的映射。激活层主要由激活函数组成,即在卷积层输出结果的基础上嵌套一个非线性函数,让输出的特征图具有非线性关系。卷积网络中通常采用ReLU来充当激活函数(还包括tanh和sigmoid等)ReLU的函数形式如公式(5-1)所示,能够限制小于0的值为0,同时大于等于0的值保持不变。
f ( x ) = { 0 if  x < 0 x if  x ≥ 0 (5-1) f(x)=\begin{cases} 0 &\text{if } x<0 \\ x &\text{if } x\ge 0 \end{cases} \tag{5-1} f(x)={0xif x<0if x0(5-1)

5.1.4 池化层

​ 池化层又称为降采样层(Downsampling Layer),作用是对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出特征尺度,进而减少模型所需要的参数量。按操作类型通常分为最大池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling),它们分别提取感受域内最大、平均与总和的特征值作为输出,最常用的是最大池化。

5.1.5 全连接层

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

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

​ 在卷积神经网络中,卷积常用来提取图像的特征,但不同层次的卷积操作提取到的特征类型是不相同的,特征类型粗分如表5.2所示。
​ 表5.2 卷积提取的特征类型

卷积层次特征类型
浅层卷积边缘特征
中层卷积局部特征
深层卷积全局特征

图像与不同卷积核的卷积可以用来执行边缘检测、锐化和模糊等操作。表5.3显示了应用不同类型的卷积核(滤波器)后的各种卷积图像。
​ 表5.3 一些常见卷积核的作用

卷积作用卷积核卷积后图像
输出原图 [ 0 0 0 0 1 0 0 0 0 ] \begin{bmatrix} 0 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{bmatrix} 000010000[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2a9nwCQ-1582112558951)(./img/ch5/cat.jpg)]
边缘检测(突出边缘差异) [ 1 0 − 1 0 0 0 − 1 0 1 ] \begin{bmatrix} 1 & 0 & -1 \\ 0 & 0 & 0 \\ -1 & 0 & 1 \end{bmatrix} 101000101[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VmakuvP1-1582112558953)(./img/ch5/cat-edgeDetect.jpg)]
边缘检测(突出中间值) [ − 1 − 1 − 1 − 1 8 − 1 − 1 − 1 − 1 ] \begin{bmatrix} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1 \end{bmatrix} 111181111[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TWSR0bRt-1582112558955)(./img/ch5/cat-edgeDetect-2.jpg)]
图像锐化 [ 0 − 1 0 − 1 5 − 1 0 − 1 0 ] \begin{bmatrix} 0 & -1 & 0 \\ -1 & 5 & -1 \\ 0 & -1 & 0 \end{bmatrix} 010151010[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rnobZKgR-1582112558957)(./img/ch5/cat-sharpen.jpg)]
方块模糊 [ 1 1 1 1 1 1 1 1 1 ] × 1 9 \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} \times \frac{1}{9} 111111111×91[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EFfQkPCk-1582112558958)(./img/ch5/cat-boxblur.jpg)]
高斯模糊 [ 1 2 1 2 4 2 1 2 1 ] × 1 16 \begin{bmatrix} 1 & 2 & 1 \\ 2 & 4 & 2 \\ 1 & 2 & 1 \end{bmatrix} \times \frac{1}{16} 121242121×161 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MWrXpv0r-1582112558959)(./img/ch5/cat-blur-gaussian.jpg)]

5.3 卷积层有哪些基本参数?

​ 卷积层中需要用到卷积核(滤波器或特征检测器)与图像特征矩阵进行点乘运算,利用卷积核与对应的特征感受域进行划窗式运算时,需要设定卷积核对应的大小、步长、个数以及填充的方式,如表5.4所示。

​ 表5.4 卷积层的基本参数

参数名作用常见设置
卷积核大小 (Kernel Size)卷积核的大小定义了卷积的感受野在过去常设为5,如LeNet-5;现在多设为3,通过堆叠 3 × 3 3\times3 3×3的卷积核来达到更大的感受域
卷积核步长 (Stride)定义了卷积核在卷积过程中的步长常见设置为1,表示滑窗距离为1,可以覆盖所有相邻位置特征的组合;当设置为更大值时相当于对特征组合降采样
填充方式 (Padding)在卷积核尺寸不能完美匹配输入的图像矩阵时需要进行一定的填充策略设置为’SAME’表示对不足卷积核大小的边界位置进行某种填充(通常零填充)以保证卷积输出维度与与输入维度一致;当设置为’VALID’时则对不足卷积尺寸的部分进行舍弃,输出维度就无法保证与输入维度一致
输入通道数 (In Channels)指定卷积操作时卷积核的深度默认与输入的特征矩阵通道数(深度)一致;在某些压缩模型中会采用通道分离的卷积方式
输出通道数 (Out Channels)指定卷积核的个数若设置为与输入通道数一样的大小,可以保持输入输出维度的一致性;若采用比输入通道数更小的值,则可以减少整体网络的参数量

卷积操作维度变换公式:

O d = { ⌈ ( I d − k s i z e ) + 1 ) s ⌉ , padding=VALID ⌈ I d s ⌉ , padding=SAME O_d =\begin{cases} \lceil \frac{(I_d - k_{size})+ 1)}{s}\rceil ,& \text{padding=VALID}\\ \lceil \frac{I_d}{s}\rceil,&\text{padding=SAME} \end{cases} Od={s(Idksize)+1),sId,padding=VALIDpadding=SAME

其中, I d I_d Id为输入维度, O d O_d Od为输出维度, k s i z e k_{size} ksize为卷积核大小, s s s为步长

5.4 卷积核有什么类型?

​ 常见的卷积主要是由连续紧密的卷积核对输入的图像特征进行滑窗式点乘求和操作,除此之外还有其他类型的卷积核在不同的任务中会用到,具体分类如表5.5所示。
​ 表5.5 卷积核分类

卷积类别示意图作用
标准卷积[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nK5BjiG2-1582112558960)(./img/ch5/img7.png)]最常用的卷积核,连续紧密的矩阵形式可以提取图像区域中的相邻像素之间的关联关系, 3 × 3 3\times3 3×3的卷积核可以获得 3 × 3 3\times3 3×3像素范围的感受视野
扩张卷积(带孔卷积或空洞卷积)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i1HZC5cx-1582112558961)(./img/ch5/img8.png)]引入一个称作扩张率(Dilation Rate)的参数,使同样尺寸的卷积核可以获得更大的感受视野,相应的在相同感受视野的前提下比普通卷积采用更少的参数。同样是 3 × 3 3\times3 3×3的卷积核尺寸,扩张卷积可以提取 5 × 5 5\times5 5×5范围的区域特征,在实时图像分割领域广泛应用
转置卷积[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ZCCriaj-1582112558962)(./img/ch5/img10.png)]先对原始特征矩阵进行填充使其维度扩大到适配卷积目标输出维度,然后进行普通的卷积操作的一个过程,其输入到输出的维度变换关系恰好与普通卷积的变换关系相反,但这个变换并不是真正的逆变换操作,通常称为转置卷积(Transpose Convolution)而不是反卷积(Deconvolution)。转置卷积常见于目标检测领域中对小目标的检测和图像分割领域还原输入图像尺度。
可分离卷积[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s5TXsf1V-1582112558963)(./img/ch5/img11.png)]标准的卷积操作是同时对原始图像 H × W × C H\times W\times C H×W×C三个方向的卷积运算,假设有 K K K个相同尺寸的卷积核,这样的卷积操作需要用到的参数为 H × W × C × K H\times W\times C\times K H×W×C×K个;若将长宽与深度方向的卷积操作分离出变为 H × W H\times W H×W C C C的两步卷积操作,则同样的卷积核个数 K K K,只需要 ( H × W + C ) × K (H\times W + C)\times K (H×W+C)×K个参数,便可得到同样的输出尺度。可分离卷积(Seperable Convolution)通常应用在模型压缩或一些轻量的卷积神经网络中,如MobileNet [ 1 ] ^{[1]} [1]、Xception [ 2 ] ^{[2]} [2]

6. CNN经典网络

6.1 LeNet-5

6.1.1 模型介绍

​ LeNet-5是由 L e C u n LeCun LeCun 提出的一种用于识别手写数字和机器印刷字符的卷积神经网络(Convolutional Neural Network,CNN) [ 1 ] ^{[1]} [1],其命名来源于作者 L e C u n LeCun LeCun的名字,5则是其研究成果的代号,在LeNet-5之前还有LeNet-4和LeNet-1鲜为人知。LeNet-5阐述了图像中像素特征之间的相关性能够由参数共享的卷积操作所提取,同时使用卷积、下采样(池化)和非线性映射这样的组合结构,是当前流行的大多数深度图像识别网络的基础。

6.1.2 模型结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kYd2RmwB-1582113000207)(./img/ch4/image1.png)]

​ 图6.1 LeNet-5网络结构图

​ 如图6.1所示,LeNet-5一共包含7层(输入层不作为网络结构),分别由2个卷积层、2个下采样层和3个连接层组成,网络的参数配置如表4.1所示,其中下采样层和全连接层的核尺寸分别代表采样范围和连接矩阵的尺寸(如卷积核尺寸中的 “ 5 × 5 × 1 / 1 , 6 ” “5\times5\times1/1,6” 5×5×1/1,6表示核大小为 5 × 5 × 1 5\times5\times1 5×5×1、步长为 1 ​ 1​ 1且核个数为6的卷积核)。

​ 表6.1 LeNet-5网络参数配置

网络层输入尺寸核尺寸输出尺寸可训练参数量
卷积层 C 1 C_1 C1 32 × 32 × 1 32\times32\times1 32×32×1 5 × 5 × 1 / 1 , 6 5\times5\times1/1,6 5×5×1/1,6 28 × 28 × 6 28\times28\times6 28×28×6 ( 5 × 5 × 1 + 1 ) × 6 (5\times5\times1+1)\times6 (5×5×1+1)×6
下采样层 S 2 S_2 S2 28 × 28 × 6 28\times28\times6 28×28×6 2 × 2 / 2 2\times2/2 2×2/2 14 × 14 × 6 14\times14\times6 14×14×6 ( 1 + 1 ) × 6 (1+1)\times6 (1+1)×6 ∗ ^*
卷积层 C 3 C_3 C3 14 × 14 × 6 14\times14\times6 14×14×6 5 × 5 × 6 / 1 , 16 5\times5\times6/1,16 5×5×6/1,16 10 × 10 × 16 10\times10\times16 10×10×16 151 6 ∗ 1516^* 1516
下采样层 S 4 S_4 S4 10 × 10 × 16 10\times10\times16 10×10×16 2 × 2 / 2 2\times2/2 2×2/2 5 × 5 × 16 5\times5\times16 5×5×16 ( 1 + 1 ) × 16 (1+1)\times16 (1+1)×16
卷积层 C 5 C_5 C5 ∗ ^* 5 × 5 × 16 5\times5\times16 5×5×16 5 × 5 × 16 / 1 , 120 5\times5\times16/1,120 5×5×16/1,120 1 × 1 × 120 1\times1\times120 1×1×120 ( 5 × 5 × 16 + 1 ) × 120 (5\times5\times16+1)\times120 (5×5×16+1)×120
全连接层 F 6 F_6 F6 1 × 1 × 120 1\times1\times120 1×1×120 120 × 84 120\times84 120×84 1 × 1 × 84 1\times1\times84 1×1×84 ( 120 + 1 ) × 84 (120+1)\times84 (120+1)×84
输出层 1 × 1 × 84 1\times1\times84 1×1×84 84 × 10 84\times10 84×10 1 × 1 × 10 1\times1\times10 1×1×10 ( 84 + 1 ) × 10 (84+1)\times10 (84+1)×10

∗ ^* 在LeNet中,下采样操作和池化操作类似,但是在得到采样结果后会乘以一个系数和加上一个偏置项,所以下采样的参数个数是 ( 1 + 1 ) × 6 ​ (1+1)\times6​ (1+1)×6而不是零。

∗ ^* C 3 C_3 C3卷积层可训练参数并未直接连接 S 2 S_2 S2中所有的特征图(Feature Map),而是采用如图4.2所示的采样特征方式进行连接(稀疏连接),生成的16个通道特征图中分别按照相邻3个特征图、相邻4个特征图、非相邻4个特征图和全部6个特征图进行映射,得到的参数个数计算公式为 6 × ( 25 × 3 + 1 ) + 6 × ( 25 × 4 + 1 ) + 3 × ( 25 × 4 + 1 ) + 1 × ( 25 × 6 + 1 ) = 1516 6\times(25\times3+1)+6\times(25\times4+1)+3\times(25\times4+1)+1\times(25\times6+1)=1516 6×(25×3+1)+6×(25×4+1)+3×(25×4+1)+1×(25×6+1)=1516,在原论文中解释了使用这种采样方式原因包含两点:限制了连接数不至于过大(当年的计算能力比较弱);强制限定不同特征图的组合可以使映射得到的特征图学习到不同的特征模式。

在这里插入图片描述

​ 图6.2 S 2 S_2 S2 C 3 C_3 C3之间的特征图稀疏连接

∗ ^* C 5 C_5 C5卷积层在图4.1中显示为全连接层,原论文中解释这里实际采用的是卷积操作,只是刚好在 5 × 5 5\times5 5×5卷积后尺寸被压缩为 1 × 1 ​ 1\times1​ 1×1,输出结果看起来和全连接很相似。

6.1.3 模型特性

  • 卷积网络使用一个3层的序列组合:卷积、下采样(池化)、非线性映射(LeNet-5最重要的特性,奠定了目前深层卷积网络的基础)
  • 使用卷积提取空间特征
  • 使用映射的空间均值进行下采样
  • 使用 t a n h tanh tanh s i g m o i d sigmoid sigmoid进行非线性映射
  • 多层神经网络(MLP)作为最终的分类器
  • 层间的稀疏连接矩阵以避免巨大的计算开销

6.2 AlexNet

6.2.1 模型介绍

​ AlexNet是由 A l e x Alex Alex $Krizhevsky 提 出 的 首 个 应 用 于 图 像 分 类 的 深 层 卷 积 神 经 网 络 , 该 网 络 在 2012 年 I L S V R C ( I m a g e N e t L a r g e S c a l e V i s u a l R e c o g n i t i o n C o m p e t i t i o n ) 图 像 分 类 竞 赛 中 以 15.3 提出的首个应用于图像分类的深层卷积神经网络,该网络在2012年ILSVRC(ImageNet Large Scale Visual Recognition Competition)图像分类竞赛中以15.3%的top-5测试错误率赢得第一名 2012ILSVRCImageNetLargeScaleVisualRecognitionCompetition15.3^{[2]}$。AlexNet使用GPU代替CPU进行运算,使得在可接受的时间范围内模型结构能够更加复杂,它的出现证明了深层卷积神经网络在复杂模型下的有效性,使CNN在计算机视觉中流行开来,直接或间接地引发了深度学习的热潮。

6.2.2 模型结构

在这里插入图片描述

​ 图6.3 AlexNet网络结构图

​ 如图6.3所示,除去下采样(池化层)和局部响应规范化操作(Local Responsible Normalization, LRN),AlexNet一共包含8层,前5层由卷积层组成,而剩下的3层为全连接层。网络结构分为上下两层,分别对应两个GPU的操作过程,除了中间某些层( C 3 C_3 C3卷积层和 F 6 − 8 F_{6-8} F68全连接层会有GPU间的交互),其他层两个GPU分别计算结 果。最后一层全连接层的输出作为 s o f t m a x softmax softmax的输入,得到1000个图像分类标签对应的概率值。除去GPU并行结构的设计,AlexNet网络结构与LeNet十分相似,其网络的参数配置如表6.2所示。

​ 表6.2 AlexNet网络参数配置

网络层输入尺寸核尺寸输出尺寸可训练参数量
卷积层 C 1 C_1 C1 ∗ ^* 224 × 224 × 3 224\times224\times3 224×224×3 11 × 11 × 3 / 4 , 48 ( × 2 G P U ) 11\times11\times3/4,48(\times2_{GPU}) 11×11×3/4,48(×2GPU) 55 × 55 × 48 ( × 2 G P U ) 55\times55\times48(\times2_{GPU}) 55×55×48(×2GPU) ( 11 × 11 × 3 + 1 ) × 48 × 2 (11\times11\times3+1)\times48\times2 (11×11×3+1)×48×2
下采样层 S m a x S_{max} Smax ∗ ^* 55 × 55 × 48 ( × 2 G P U ) 55\times55\times48(\times2_{GPU}) 55×55×48(×2GPU) 3 × 3 / 2 ( × 2 G P U ) 3\times3/2(\times2_{GPU}) 3×3/2(×2GPU) 27 × 27 × 48 ( × 2 G P U ) 27\times27\times48(\times2_{GPU}) 27×27×48(×2GPU)0
卷积层 C 2 C_2 C2 27 × 27 × 48 ( × 2 G P U ) 27\times27\times48(\times2_{GPU}) 27×27×48(×2GPU) 5 × 5 × 48 / 1 , 128 ( × 2 G P U ) 5\times5\times48/1,128(\times2_{GPU}) 5×5×48/1,128(×2GPU) 27 × 27 × 128 ( × 2 G P U ) 27\times27\times128(\times2_{GPU}) 27×27×128(×2GPU) ( 5 × 5 × 48 + 1 ) × 128 × 2 (5\times5\times48+1)\times128\times2 (5×5×48+1)×128×2
下采样层 S m a x S_{max} Smax 27 × 27 × 128 ( × 2 G P U ) 27\times27\times128(\times2_{GPU}) 27×27×128(×2GPU) 3 × 3 / 2 ( × 2 G P U ) 3\times3/2(\times2_{GPU}) 3×3/2(×2GPU) 13 × 13 × 128 ( × 2 G P U ) 13\times13\times128(\times2_{GPU}) 13×13×128(×2GPU)0
卷积层 C 3 C_3 C3 ∗ ^* 13 × 13 × 128 × 2 G P U 13\times13\times128\times2_{GPU} 13×13×128×2GPU 3 × 3 × 256 / 1 , 192 ( × 2 G P U ) 3\times3\times256/1,192(\times2_{GPU}) 3×3×256/1,192(×2GPU) 13 × 13 × 192 ( × 2 G P U ) 13\times13\times192(\times2_{GPU}) 13×13×192(×2GPU) ( 3 × 3 × 256 + 1 ) × 192 × 2 (3\times3\times256+1)\times192\times2 (3×3×256+1)×192×2
卷积层 C 4 C_4 C4 13 × 13 × 192 ( × 2 G P U ) 13\times13\times192(\times2_{GPU}) 13×13×192(×2GPU) 3 × 3 × 192 / 1 , 192 ( × 2 G P U ) 3\times3\times192/1,192(\times2_{GPU}) 3×3×192/1,192(×2GPU) 13 × 13 × 192 ( × 2 G P U ) 13\times13\times192(\times2_{GPU}) 13×13×192(×2GPU) ( 3 × 3 × 192 + 1 ) × 192 × 2 (3\times3\times192+1)\times192\times2 (3×3×192+1)×192×2
卷积层 C 5 C_5 C5 13 × 13 × 192 ( × 2 G P U ) 13\times13\times192(\times2_{GPU}) 13×13×192(×2GPU) 3 × 3 × 192 / 1 , 128 ( × 2 G P U ) 3\times3\times192/1,128(\times2_{GPU}) 3×3×192/1,128(×2GPU) 13 × 13 × 128 ( × 2 G P U ) 13\times13\times128(\times2_{GPU}) 13×13×128(×2GPU) ( 3 × 3 × 192 + 1 ) × 128 × 2 (3\times3\times192+1)\times128\times2 (3×3×192+1)×128×2
下采样层 S m a x S_{max} Smax 13 × 13 × 128 ( × 2 G P U ) 13\times13\times128(\times2_{GPU}) 13×13×128(×2GPU) 3 × 3 / 2 ( × 2 G P U ) 3\times3/2(\times2_{GPU}) 3×3/2(×2GPU) 6 × 6 × 128 ( × 2 G P U ) 6\times6\times128(\times2_{GPU}) 6×6×128(×2GPU)0
全连接层 F 6 F_6 F6 ∗ ^* 6 × 6 × 128 × 2 G P U 6\times6\times128\times2_{GPU} 6×6×128×2GPU 9216 × 2048 ( × 2 G P U ) 9216\times2048(\times2_{GPU}) 9216×2048(×2GPU) 1 × 1 × 2048 ( × 2 G P U ) 1\times1\times2048(\times2_{GPU}) 1×1×2048(×2GPU) ( 9216 + 1 ) × 2048 × 2 (9216+1)\times2048\times2 (9216+1)×2048×2
全连接层 F 7 F_7 F7 1 × 1 × 2048 × 2 G P U 1\times1\times2048\times2_{GPU} 1×1×2048×2GPU 4096 × 2048 ( × 2 G P U ) 4096\times2048(\times2_{GPU}) 4096×2048(×2GPU) 1 × 1 × 2048 ( × 2 G P U ) 1\times1\times2048(\times2_{GPU}) 1×1×2048(×2GPU) ( 4096 + 1 ) × 2048 × 2 (4096+1)\times2048\times2 (4096+1)×2048×2
全连接层 F 8 F_8 F8 1 × 1 × 2048 × 2 G P U 1\times1\times2048\times2_{GPU} 1×1×2048×2GPU 4096 × 1000 4096\times1000 4096×1000 1 × 1 × 1000 1\times1\times1000 1×1×1000 ( 4096 + 1 ) × 1000 × 2 (4096+1)\times1000\times2 (4096+1)×1000×2

卷积层 C 1 C_1 C1输入为 224 × 224 × 3 224\times224\times3 224×224×3的图片数据,分别在两个GPU中经过核为 11 × 11 × 3 11\times11\times3 11×11×3、步长(stride)为4的卷积卷积后,分别得到两条独立的 55 × 55 × 48 55\times55\times48 55×55×48的输出数据。

下采样层 S m a x S_{max} Smax实际上是嵌套在卷积中的最大池化操作,但是为了区分没有采用最大池化的卷积层单独列出来。在 C 1 − 2 C_{1-2} C12卷积层中的池化操作之后(ReLU激活操作之前),还有一个LRN操作,用作对相邻特征点的归一化处理。

卷积层 C 3 C_3 C3 的输入与其他卷积层不同, 13 × 13 × 192 × 2 G P U 13\times13\times192\times2_{GPU} 13×13×192×2GPU表示汇聚了上一层网络在两个GPU上的输出结果作为输入,所以在进行卷积操作时通道上的卷积核维度为384。

全连接层 F 6 − 8 F_{6-8} F68中输入数据尺寸也和 C 3 C_3 C3类似,都是融合了两个GPU流向的输出结果作为输入。

6.2.3 模型特性

  • 所有卷积层都使用ReLU作为非线性映射函数,使模型收敛速度更快
  • 在多个GPU上进行模型的训练,不但可以提高模型的训练速度,还能提升数据的使用规模
  • 使用LRN对局部的特征进行归一化,结果作为ReLU激活函数的输入能有效降低错误率
  • 重叠最大池化(overlapping max pooling),即池化范围z与步长s存在关系 z > s z>s z>s(如 S m a x S_{max} Smax中核尺度为 3 × 3 / 2 3\times3/2 3×3/2),避免平均池化(average pooling)的平均效应
  • 使用随机丢弃技术(dropout)选择性地忽略训练中的单个神经元,避免模型的过拟合

6.3 ZFNet

6.3.1 模型介绍

​ ZFNet是由 M a t t h e w Matthew Matthew D . Z e i l e r D. Zeiler D.Zeiler R o b Rob Rob F e r g u s Fergus Fergus在AlexNet基础上提出的大型卷积网络,在2013年ILSVRC图像分类竞赛中以11.19%的错误率获得冠军(实际上原ZFNet所在的队伍并不是真正的冠军,原ZFNet以13.51%错误率排在第8,真正的冠军是 C l a r i f a i Clarifai Clarifai这个队伍,而 C l a r i f a i Clarifai Clarifai这个队伍所对应的一家初创公司的CEO又是 Z e i l e r Zeiler Zeiler,而且 C l a r i f a i Clarifai Clarifai对ZFNet的改动比较小,所以通常认为是ZFNet获得了冠军) [ 3 − 4 ] ​ ^{[3-4]}​ [34]。ZFNet实际上是微调(fine-tuning)了的AlexNet,并通过反卷积(Deconvolution)的方式可视化各层的输出特征图,进一步解释了卷积操作在大型网络中效果显著的原因。

6.3.2 模型结构

在这里插入图片描述
在这里插入图片描述

​ 图6.4 ZFNet网络结构图(原始结构图与AlexNet风格结构图)

​ 如图6.4所示,ZFNet与AlexNet类似,都是由8层网络组成的卷积神经网络,其中包含5层卷积层和3层全连接层。两个网络结构最大的不同在于,ZFNet第一层卷积采用了 7 × 7 × 3 / 2 7\times7\times3/2 7×7×3/2的卷积核替代了AlexNet中第一层卷积核 11 × 11 × 3 / 4 11\times11\times3/4 11×11×3/4的卷积核。图4.5中ZFNet相比于AlexNet在第一层输出的特征图中包含更多中间频率的信息,而AlexNet第一层输出的特征图大多是低频或高频的信息,对中间频率特征的缺失导致后续网络层次如图6.5(c)能够学习到的特征不够细致,而导致这个问题的根本原因在于AlexNet在第一层中采用的卷积核和步长过大。

在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rZWyVpTl-1582113000239)(./img/ch4/zfnet-layer2.png)]

​ 图6.5 (a)ZFNet第一层输出的特征图(b)AlexNet第一层输出的特征图(c)AlexNet第二层输出的特征图(d)ZFNet第二层输出的特征图

​ 表6.3 ZFNet网络参数配置

网络层输入尺寸核尺寸输出尺寸可训练参数量
卷积层 C 1 C_1 C1 ∗ ^* 224 × 224 × 3 224\times224\times3 224×224×3 7 × 7 × 3 / 2 , 96 7\times7\times3/2,96 7×7×3/2,96 110 × 110 × 96 110\times110\times96 110×110×96 ( 7 × 7 × 3 + 1 ) × 96 (7\times7\times3+1)\times96 (7×7×3+1)×96
下采样层 S m a x S_{max} Smax 110 × 110 × 96 110\times110\times96 110×110×96 3 × 3 / 2 3\times3/2 3×3/2 55 × 55 × 96 55\times55\times96 55×55×960
卷积层 C 2 C_2 C2 ∗ ^* 55 × 55 × 96 55\times55\times96 55×55×96 5 × 5 × 96 / 2 , 256 5\times5\times96/2,256 5×5×96/2,256 26 × 26 × 256 26\times26\times256 26×26×256 ( 5 × 5 × 96 + 1 ) × 256 (5\times5\times96+1)\times256 (5×5×96+1)×256
下采样层 S m a x S_{max} Smax 26 × 26 × 256 26\times26\times256 26×26×256 3 × 3 / 2 3\times3/2 3×3/2 13 × 13 × 256 13\times13\times256 13×13×2560
卷积层 C 3 C_3 C3 13 × 13 × 256 13\times13\times256 13×13×256 3 × 3 × 256 / 1 , 384 3\times3\times256/1,384 3×3×256/1,384 13 × 13 × 384 13\times13\times384 13×13×384 ( 3 × 3 × 256 + 1 ) × 384 (3\times3\times256+1)\times384 (3×3×256+1)×384
卷积层 C 4 C_4 C4 13 × 13 × 384 13\times13\times384 13×13×384 3 × 3 × 384 / 1 , 384 3\times3\times384/1,384 3×3×384/1,384 13 × 13 × 384 13\times13\times384 13×13×384 ( 3 × 3 × 384 + 1 ) × 384 (3\times3\times384+1)\times384 (3×3×384+1)×384
卷积层 C 5 C_5 C5 13 × 13 × 384 13\times13\times384 13×13×384 3 × 3 × 384 / 1 , 256 3\times3\times384/1,256 3×3×384/1,256 13 × 13 × 256 13\times13\times256 13×13×256 ( 3 × 3 × 384 + 1 ) × 256 (3\times3\times384+1)\times256 (3×3×384+1)×256
下采样层 S m a x S_{max} Smax 13 × 13 × 256 13\times13\times256 13×13×256 3 × 3 / 2 3\times3/2 3×3/2 6 × 6 × 256 6\times6\times256 6×6×2560
全连接层 F 6 F_6 F6 6 × 6 × 256 6\times6\times256 6×6×256 9216 × 4096 9216\times4096 9216×4096 1 × 1 × 4096 1\times1\times4096 1×1×4096 ( 9216 + 1 ) × 4096 (9216+1)\times4096 (9216+1)×4096
全连接层 F 7 F_7 F7 1 × 1 × 4096 1\times1\times4096 1×1×4096 4096 × 4096 4096\times4096 4096×4096 1 × 1 × 4096 1\times1\times4096 1×1×4096 ( 4096 + 1 ) × 4096 (4096+1)\times4096 (4096+1)×4096
全连接层 F 8 F_8 F8 1 × 1 × 4096 1\times1\times4096 1×1×4096 4096 × 1000 4096\times1000 4096×1000 1 × 1 × 1000 1\times1\times1000 1×1×1000 ( 4096 + 1 ) × 1000 (4096+1)\times1000 (4096+1)×1000

卷积层 C 1 C_1 C1与AlexNet中的 C 1 C_1 C1有所不同,采用 7 × 7 × 3 / 2 7\times7\times3/2 7×7×3/2的卷积核代替 11 × 11 × 3 / 4 ​ 11\times11\times3/4​ 11×11×3/4,使第一层卷积输出的结果可以包含更多的中频率特征,对后续网络层中多样化的特征组合提供更多选择,有利于捕捉更细致的特征。

卷积层 C 2 C_2 C2采用了步长2的卷积核,区别于AlexNet中 C 2 C_2 C2的卷积核步长,所以输出的维度有所差异。

6.3.3 模型特性

​ ZFNet与AlexNet在结构上几乎相同,此部分虽属于模型特性,但准确地说应该是ZFNet原论文中可视化技术的贡献。

  • 可视化技术揭露了激发模型中每层单独的特征图。
  • 可视化技术允许观察在训练阶段特征的演变过程且诊断出模型的潜在问题。
  • 可视化技术用到了多层解卷积网络,即由特征激活返回到输入像素空间。
  • 可视化技术进行了分类器输出的敏感性分析,即通过阻止部分输入图像来揭示那部分对于分类是重要的。
  • 可视化技术提供了一个非参数的不变性来展示来自训练集的哪一块激活哪个特征图,不仅需要裁剪输入图片,而且自上而下的投影来揭露来自每块的结构激活一个特征图。
  • 可视化技术依赖于解卷积操作,即卷积操作的逆过程,将特征映射到像素上。

6.4 Network in Network

6.4.1 模型介绍

​ Network In Network (NIN)是由 M i n L i n Min Lin MinLin等人提出,在CIFAR-10和CIFAR-100分类任务中达到当时的最好水平,因其网络结构是由三个多层感知机堆叠而被成为NIN [ 5 ] ^{[5]} [5]。NIN以一种全新的角度审视了卷积神经网络中的卷积核设计,通过引入子网络结构代替纯卷积中的线性映射部分,这种形式的网络结构激发了更复杂的卷积神经网络的结构设计,其中下一节中介绍的GoogLeNet的Inception结构就是来源于这个思想。

6.4.2 模型结构

在这里插入图片描述
​ 图 6.6 NIN网络结构图

​ NIN由三层的多层感知卷积层(MLPConv Layer)构成,每一层多层感知卷积层内部由若干层的局部全连接层和非线性激活函数组成,代替了传统卷积层中采用的线性卷积核。在网络推理(inference)时,这个多层感知器会对输入特征图的局部特征进行划窗计算,并且每个划窗的局部特征图对应的乘积的权重是共享的,这两点是和传统卷积操作完全一致的,最大的不同在于多层感知器对局部特征进行了非线性的映射,而传统卷积的方式是线性的。NIN的网络参数配置表6.4所示(原论文并未给出网络参数,表中参数为编者结合网络结构图和CIFAR-100数据集以 3 × 3 3\times3 3×3卷积为例给出)。

​ 表6.4 NIN网络参数配置(结合原论文NIN结构和CIFAR-100数据给出)

网络层输入尺寸核尺寸输出尺寸参数个数
局部全连接层 L 11 L_{11} L11 ∗ ^* 32 × 32 × 3 32\times32\times3 32×32×3 ( 3 × 3 ) × 16 / 1 (3\times3)\times16/1 (3×3)×16/1 30 × 30 × 16 30\times30\times16 30×30×16 ( 3 × 3 × 3 + 1 ) × 16 (3\times3\times3+1)\times16 (3×3×3+1)×16
全连接层 L 12 L_{12} L12 ∗ ^* 30 × 30 × 16 30\times30\times16 30×30×16 16 × 16 16\times16 16×16 30 × 30 × 16 30\times30\times16 30×30×16 ( ( 16 + 1 ) × 16 ) ((16+1)\times16) ((16+1)×16)
局部全连接层 L 21 L_{21} L21 30 × 30 × 16 30\times30\times16 30×30×16 ( 3 × 3 ) × 64 / 1 (3\times3)\times64/1 (3×3)×64/1 28 × 28 × 64 28\times28\times64 28×28×64 ( 3 × 3 × 16 + 1 ) × 64 (3\times3\times16+1)\times64 (3×3×16+1)×64
全连接层 L 22 L_{22} L22 28 × 28 × 64 28\times28\times64 28×28×64 64 × 64 64\times64 64×64 28 × 28 × 64 28\times28\times64 28×28×64 ( ( 64 + 1 ) × 64 ) ((64+1)\times64) ((64+1)×64)
局部全连接层 L 31 L_{31} L31 28 × 28 × 64 28\times28\times64 28×28×64 ( 3 × 3 ) × 100 / 1 (3\times3)\times100/1 (3×3)×100/1 26 × 26 × 100 26\times26\times100 26×26×100 ( 3 × 3 × 64 + 1 ) × 100 (3\times3\times64+1)\times100 (3×3×64+1)×100
全连接层 L 32 L_{32} L32 26 × 26 × 100 26\times26\times100 26×26×100 100 × 100 100\times100 100×100 26 × 26 × 100 26\times26\times100 26×26×100 ( ( 100 + 1 ) × 100 ) ((100+1)\times100) ((100+1)×100)
全局平均采样 G A P GAP GAP ∗ ^* 26 × 26 × 100 26\times26\times100 26×26×100 26 × 26 × 100 / 1 26\times26\times100/1 26×26×100/1 1 × 1 × 100 1\times1\times100 1×1×100 0 0 0

局部全连接层 L 11 L_{11} L11实际上是对原始输入图像进行划窗式的全连接操作,因此划窗得到的输出特征尺寸为 30 × 30 30\times30 30×30 32 − 3 k + 1 1 s t r i d e = 30 \frac{32-3_k+1}{1_{stride}}=30 1stride323k+1=30
全连接层 L 12 L_{12} L12是紧跟 L 11 L_{11} L11后的全连接操作,输入的特征是划窗后经过激活的局部响应特征,因此仅需连接 L 11 L_{11} L11 L 12 L_{12} L12的节点即可,而每个局部全连接层和紧接的全连接层构成代替卷积操作的多层感知卷积层(MLPConv)。
全局平均采样层或全局平均池化层 G A P GAP GAP(Global Average Pooling)将 L 32 L_{32} L32输出的每一个特征图进行全局的平均池化操作,直接得到最后的类别数,可以有效地减少参数量。

6.4.3 模型特点

  • 使用多层感知机结构来代替卷积的滤波操作,不但有效减少卷积核数过多而导致的参数量暴涨问题,还能通过引入非线性的映射来提高模型对特征的抽象能力。
  • 使用全局平均池化来代替最后一个全连接层,能够有效地减少参数量(没有可训练参数),同时池化用到了整个特征图的信息,对空间信息的转换更加鲁棒,最后得到的输出结果可直接作为对应类别的置信度。

6.5 VGGNet

6.5.1 模型介绍

​ VGGNet是由牛津大学视觉几何小组(Visual Geometry Group, VGG)提出的一种深层卷积网络结构,他们以7.32%的错误率赢得了2014年ILSVRC分类任务的亚军(冠军由GoogLeNet以6.65%的错误率夺得)和25.32%的错误率夺得定位任务(Localization)的第一名(GoogLeNet错误率为26.44%) [ 5 ] ^{[5]} [5],网络名称VGGNet取自该小组名缩写。VGGNet是首批把图像分类的错误率降低到10%以内模型,同时该网络所采用的 3 × 3 3\times3 3×3卷积核的思想是后来许多模型的基础,该模型发表在2015年国际学习表征会议(International Conference On Learning Representations, ICLR)后至今被引用的次数已经超过1万4千余次。

6.5.2 模型结构

在这里插入图片描述

​ 图 6.7 VGG16网络结构图

​ 在原论文中的VGGNet包含了6个版本的演进,分别对应VGG11、VGG11-LRN、VGG13、VGG16-1、VGG16-3和VGG19,不同的后缀数值表示不同的网络层数(VGG11-LRN表示在第一层中采用了LRN的VGG11,VGG16-1表示后三组卷积块中最后一层卷积采用卷积核尺寸为 1 × 1 1\times1 1×1,相应的VGG16-3表示卷积核尺寸为 3 × 3 3\times3 3×3),本节介绍的VGG16为VGG16-3。图4.7中的VGG16体现了VGGNet的核心思路,使用 3 × 3 3\times3 3×3的卷积组合代替大尺寸的卷积(2个 3 × 3 卷 积 即 可 与 3\times3卷积即可与 3×3 5 × 5 5\times5 5×5卷积拥有相同的感受视野),网络参数设置如表4.5所示。

​ 表4.5 VGG16网络参数配置

网络层输入尺寸核尺寸输出尺寸参数个数
卷积层 C 11 C_{11} C11 224 × 224 × 3 224\times224\times3 224×224×3 3 × 3 × 64 / 1 3\times3\times64/1 3×3×64/1 224 × 224 × 64 224\times224\times64 224×224×64 ( 3 × 3 × 3 + 1 ) × 64 (3\times3\times3+1)\times64 (3×3×3+1)×64
卷积层 C 12 C_{12} C12 224 × 224 × 64 224\times224\times64 224×224×64 3 × 3 × 64 / 1 3\times3\times64/1 3×3×64/1 224 × 224 × 64 224\times224\times64 224×224×64 ( 3 × 3 × 64 + 1 ) × 64 (3\times3\times64+1)\times64 (3×3×64+1)×64
下采样层 S m a x 1 S_{max1} Smax1 224 × 224 × 64 224\times224\times64 224×224×64 2 × 2 / 2 2\times2/2 2×2/2 112 × 112 × 64 112\times112\times64 112×112×64 0 0 0
卷积层 C 21 C_{21} C21 112 × 112 × 64 112\times112\times64 112×112×64 3 × 3 × 128 / 1 3\times3\times128/1 3×3×128/1 112 × 112 × 128 112\times112\times128 112×112×128 ( 3 × 3 × 64 + 1 ) × 128 (3\times3\times64+1)\times128 (3×3×64+1)×128
卷积层 C 22 C_{22} C22 112 × 112 × 128 112\times112\times128 112×112×128 3 × 3 × 128 / 1 3\times3\times128/1 3×3×128/1 112 × 112 × 128 112\times112\times128 112×112×128 ( 3 × 3 × 128 + 1 ) × 128 (3\times3\times128+1)\times128 (3×3×128+1)×128
下采样层 S m a x 2 S_{max2} Smax2 112 × 112 × 128 112\times112\times128 112×112×128 2 × 2 / 2 2\times2/2 2×2/2 56 × 56 × 128 56\times56\times128 56×56×128 0 0 0
卷积层 C 31 C_{31} C31 56 × 56 × 128 56\times56\times128 56×56×128 3 × 3 × 256 / 1 3\times3\times256/1 3×3×256/1 56 × 56 × 256 56\times56\times256 56×56×256 ( 3 × 3 × 128 + 1 ) × 256 (3\times3\times128+1)\times256 (3×3×128+1)×256
卷积层 C 32 C_{32} C32 56 × 56 × 256 56\times56\times256 56×56×256 3 × 3 × 256 / 1 3\times3\times256/1 3×3×256/1 56 × 56 × 256 56\times56\times256 56×56×256 ( 3 × 3 × 256 + 1 ) × 256 (3\times3\times256+1)\times256 (3×3×256+1)×256
卷积层 C 33 C_{33} C33 56 × 56 × 256 56\times56\times256 56×56×256 3 × 3 × 256 / 1 3\times3\times256/1 3×3×256/1 56 × 56 × 256 56\times56\times256 56×56×256 ( 3 × 3 × 256 + 1 ) × 256 (3\times3\times256+1)\times256 (3×3×256+1)×256
下采样层 S m a x 3 S_{max3} Smax3 56 × 56 × 256 56\times56\times256 56×56×256 2 × 2 / 2 2\times2/2 2×2/2 28 × 28 × 256 28\times28\times256 28×28×256 0 0 0
卷积层 C 41 C_{41} C41 28 × 28 × 256 28\times28\times256 28×28×256 3 × 3 × 512 / 1 3\times3\times512/1 3×3×512/1 28 × 28 × 512 28\times28\times512 28×28×512 ( 3 × 3 × 256 + 1 ) × 512 (3\times3\times256+1)\times512 (3×3×256+1)×512
卷积层 C 42 C_{42} C42 28 × 28 × 512 28\times28\times512 28×28×512 3 × 3 × 512 / 1 3\times3\times512/1 3×3×512/1 28 × 28 × 512 28\times28\times512 28×28×512 ( 3 × 3 × 512 + 1 ) × 512 (3\times3\times512+1)\times512 (3×3×512+1)×512
卷积层 C 43 C_{43} C43 28 × 28 × 512 28\times28\times512 28×28×512 3 × 3 × 512 / 1 3\times3\times512/1 3×3×512/1 28 × 28 × 512 28\times28\times512 28×28×512 ( 3 × 3 × 512 + 1 ) × 512 (3\times3\times512+1)\times512 (3×3×512+1)×512
下采样层 S m a x 4 S_{max4} Smax4 28 × 28 × 512 28\times28\times512 28×28×512 2 × 2 / 2 2\times2/2 2×2/2 14 × 14 × 512 14\times14\times512 14×14×512 0 0 0
卷积层 C 51 C_{51} C51 14 × 14 × 512 14\times14\times512 14×14×512 3 × 3 × 512 / 1 3\times3\times512/1 3×3×512/1 14 × 14 × 512 14\times14\times512 14×14×512 ( 3 × 3 × 512 + 1 ) × 512 (3\times3\times512+1)\times512 (3×3×512+1)×512
卷积层 C 52 C_{52} C52 14 × 14 × 512 14\times14\times512 14×14×512 3 × 3 × 512 / 1 3\times3\times512/1 3×3×512/1 14 × 14 × 512 14\times14\times512 14×14×512 ( 3 × 3 × 512 + 1 ) × 512 (3\times3\times512+1)\times512 (3×3×512+1)×512
卷积层 C 53 C_{53} C53 14 × 14 × 512 14\times14\times512 14×14×512 3 × 3 × 512 / 1 3\times3\times512/1 3×3×512/1 14 × 14 × 512 14\times14\times512 14×14×512 ( 3 × 3 × 512 + 1 ) × 512 (3\times3\times512+1)\times512 (3×3×512+1)×512
下采样层 S m a x 5 S_{max5} Smax5 14 × 14 × 512 14\times14\times512 14×14×512 2 × 2 / 2 2\times2/2 2×2/2 7 × 7 × 512 7\times7\times512 7×7×512 0 0 0
全连接层 F C 1 FC_{1} FC1 7 × 7 × 512 7\times7\times512 7×7×512 ( 7 × 7 × 512 ) × 4096 (7\times7\times512)\times4096 (7×7×512)×4096 1 × 4096 1\times4096 1×4096 ( 7 × 7 × 512 + 1 ) × 4096 (7\times7\times512+1)\times4096 (7×7×512+1)×4096
全连接层 F C 2 FC_{2} FC2 1 × 4096 1\times4096 1×4096 4096 × 4096 4096\times4096 4096×4096 1 × 4096 1\times4096 1×4096 ( 4096 + 1 ) × 4096 (4096+1)\times4096 (4096+1)×4096
全连接层 F C 3 FC_{3} FC3 1 × 4096 1\times4096 1×4096 4096 × 1000 4096\times1000 4096×1000 1 × 1000 1\times1000 1×1000 ( 4096 + 1 ) × 1000 (4096+1)\times1000 (4096+1)×1000

6.5.3 模型特性

  • 整个网络都使用了同样大小的卷积核尺寸 3 × 3 3\times3 3×3和最大池化尺寸 2 × 2 2\times2 2×2
  • 1 × 1 1\times1 1×1卷积的意义主要在于线性变换,而输入通道数和输出通道数不变,没有发生降维。
  • 两个 3 × 3 3\times3 3×3的卷积层串联相当于1个 5 × 5 5\times5 5×5的卷积层,感受野大小为 5 × 5 5\times5 5×5。同样地,3个 3 × 3 3\times3 3×3的卷积层串联的效果则相当于1个 7 × 7 7\times7 7×7的卷积层。这样的连接方式使得网络参数量更小,而且多层的激活函数令网络对特征的学习能力更强。
  • VGGNet在训练时有一个小技巧,先训练浅层的的简单网络VGG11,再复用VGG11的权重来初始化VGG13,如此反复训练并初始化VGG19,能够使训练时收敛的速度更快。
  • 在训练过程中使用多尺度的变换对原始数据做数据增强,使得模型不易过拟合。

6.6 GoogLeNet

6.6.1 模型介绍

​ GoogLeNet作为2014年ILSVRC在分类任务上的冠军,以6.65%的错误率力压VGGNet等模型,在分类的准确率上面相比过去两届冠军ZFNet和AlexNet都有很大的提升。从名字GoogLeNet可以知道这是来自谷歌工程师所设计的网络结构,而名字中GoogLeNet更是致敬了LeNet [ 0 ] ^{[0]} [0]。GoogLeNet中最核心的部分是其内部子网络结构Inception,该结构灵感来源于NIN,至今已经经历了四次版本迭代(Inception v 1 − 4 _{v1-4} v14)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rtDk1HLC-1582113000242)(./img/ch4/img_inception_01.png)]
​ 图 6.8 Inception性能比较图

6.6.2 模型结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-unSD3Tfo-1582113000243)(./img/ch4/image25.jpeg)]
​ 图6.9 GoogLeNet网络结构图
​ 如图6.9中所示,GoogLeNet相比于以前的卷积神经网络结构,除了在深度上进行了延伸,还对网络的宽度进行了扩展,整个网络由许多块状子网络的堆叠而成,这个子网络构成了Inception结构。图6.9为Inception的四个版本: I n c e p t i o n v 1 ​ Inception_{v1}​ Inceptionv1在同一层中采用不同的卷积核,并对卷积结果进行合并; I n c e p t i o n v 2 ​ Inception_{v2}​ Inceptionv2组合不同卷积核的堆叠形式,并对卷积结果进行合并; I n c e p t i o n v 3 ​ Inception_{v3}​ Inceptionv3则在 v 2 ​ v_2​ v2基础上进行深度组合的尝试; I n c e p t i o n v 4 ​ Inception_{v4}​ Inceptionv4结构相比于前面的版本更加复杂,子网络中嵌套着子网络。

​ 表 6.6 GoogLeNet中Inception v 1 _{v1} v1网络参数配置

网络层输入尺寸核尺寸输出尺寸参数个数
卷积层 C 11 C_{11} C11 H × W × C 1 H\times{W}\times{C_1} H×W×C1 1 × 1 × C 2 / 2 1\times1\times{C_2}/2 1×1×C2/2 H 2 × W 2 × C 2 \frac{H}{2}\times\frac{W}{2}\times{C_2} 2H×2W×C2 ( 1 × 1 × C 1 + 1 ) × C 2 (1\times1\times{C_1}+1)\times{C_2} (1×1×C1+1)×C2
卷积层 C 21 C_{21} C21 H × W × C 2 H\times{W}\times{C_2} H×W×C2 1 × 1 × C 2 / 2 1\times1\times{C_2}/2 1×1×C2/2 H 2 × W 2 × C 2 \frac{H}{2}\times\frac{W}{2}\times{C_2} 2H×2W×C2 ( 1 × 1 × C 2 + 1 ) × C 2 (1\times1\times{C_2}+1)\times{C_2} (1×1×C2+1)×C2
卷积层 C 22 C_{22} C22 H × W × C 2 H\times{W}\times{C_2} H×W×C2 3 × 3 × C 2 / 1 3\times3\times{C_2}/1 3×3×C2/1 H × W × C 2 / 1 H\times{W}\times{C_2}/1 H×W×C2/1 ( 3 × 3 × C 2 + 1 ) × C 2 (3\times3\times{C_2}+1)\times{C_2} (3×3×C2+1)×C2
卷积层 C 31 C_{31} C31 H × W × C 1 H\times{W}\times{C_1} H×W×C1 1 × 1 × C 2 / 2 1\times1\times{C_2}/2 1×1×C2/2 H 2 × W 2 × C 2 \frac{H}{2}\times\frac{W}{2}\times{C_2} 2H×2W×C2 ( 1 × 1 × C 1 + 1 ) × C 2 (1\times1\times{C_1}+1)\times{C_2} (1×1×C1+1)×C2
卷积层 C 32 C_{32} C32 H × W × C 2 H\times{W}\times{C_2} H×W×C2 5 × 5 × C 2 / 1 5\times5\times{C_2}/1 5×5×C2/1 H × W × C 2 / 1 H\times{W}\times{C_2}/1 H×W×C2/1 ( 5 × 5 × C 2 + 1 ) × C 2 (5\times5\times{C_2}+1)\times{C_2} (5×5×C2+1)×C2
下采样层 S 41 S_{41} S41 H × W × C 1 H\times{W}\times{C_1} H×W×C1 3 × 3 / 2 3\times3/2 3×3/2 H 2 × W 2 × C 2 \frac{H}{2}\times\frac{W}{2}\times{C_2} 2H×2W×C2 0 0 0
卷积层 C 42 C_{42} C42 H 2 × W 2 × C 2 \frac{H}{2}\times\frac{W}{2}\times{C_2} 2H×2W×C2 1 × 1 × C 2 / 1 1\times1\times{C_2}/1 1×1×C2/1 H 2 × W 2 × C 2 \frac{H}{2}\times\frac{W}{2}\times{C_2} 2H×2W×C2 ( 3 × 3 × C 2 + 1 ) × C 2 (3\times3\times{C_2}+1)\times{C_2} (3×3×C2+1)×C2
合并层 M M M H 2 × W 2 × C 2 ( × 4 ) \frac{H}{2}\times\frac{W}{2}\times{C_2}(\times4) 2H×2W×C2(×4)拼接 H 2 × W 2 × ( C 2 × 4 ) \frac{H}{2}\times\frac{W}{2}\times({C_2}\times4) 2H×2W×(C2×4) 0 0 0

6.6.3 模型特性

  • 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;

  • 之所以卷积核大小采用1、3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了;

  • 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。但是,使用5x5的卷积核仍然会带来巨大的计算量。 为此,文章借鉴NIN2,采用1x1卷积核来进行降维。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值