引自:《深度学习模型与算法基础》(作者:许庆阳、宋勇、张承进)
该书已出版,详细信息请见文末~
「 1. LeNet网络 」
LeNet是一种经典的CNN网络结构,如图1所示。对于LeNet网络,每输入一张32×32大小的图片,网络最终会产生一个84维向量作为全连接层的输入信息,这个向量就是网络提取输入图片的特征。
图1 LeNet网络结构
LeNet网络各层具体参数及计算过程如下:
(1)输入层:首先对输入图像的尺寸统一归一化为32×32。
(2)C1卷积层:C1卷积层输入图片尺寸为32×32、卷积核大小5×5、卷积核数量6、步长为1、输出特征映射大小为28×28(32-5+1=28)、可训练参数为(5×5+1)×6=156(共6个卷积核,每个卷积核5×5=25个权值参数和一个偏置参数)。网络利用6个5×5的卷积核对输入图像进行卷积运算,每次卷积结果与偏置进行叠加,得到6个28×28的特征图。
(3)S2池化层:S2层输入图像尺寸为28×28、采样区域2×2、平均池化采样方式、输出特征映射尺寸为14×14、可训练参数为2×6(平均池化后的结果要乘以一个权值系数再加上一个偏置)、最后经过函数激活。该层只有2×6=12个需训练的参数。
(4)C3卷积层(使用了复杂的局部连接):C3层输入为S2层输出的若干特征图的组合、卷积核大小5×5、卷积核组数量为16(实际为6种卷积核的组合)、步长为1、输出特征映射尺寸10×10(145+1=10)。S2层输出6个14×14 的特征图,C3层的输出为16个特征图,如何得到这16个输出特征图?首先S2层的输出特征图为14×14×6,C3层的输入并不是直接采用16组卷积核对S2层输出特征图作为输入,而是利用6个与输入特征图一一对应的卷积核,将不同数量输入特征图进行分组,并根据输入特征图的分组确定对应的卷积核组,然后卷积获得特征图。C3层采用了16种组合策略,从而卷积生成16个输出特征图,如表1所示。其中,X表示包含该输入特征图。如C3中的第3号输出特征图,它包含S2层的第3、4、5号特征图,则3号特征图的计算过程如下:首先,网络的6组卷积核与S2层中6个原始输出特征图具有一一对应关系。取出3号特征图对应的卷积核,与S2层中的3号特征图卷积,得到的特征图为h3;同理,取出4号特征图对应的5×5卷积核,与S2层中的4号特征图卷积,得到的特征图为h4;继续,取出5号特征图对应的5×5卷积核,与S2层中的5号特征图卷积,得到的特征图为h5;最后将h3、h4、h5这3个特征图叠加得到新的特征图h,并且对h中每个元素叠加偏移量,且通过激活函数,即可得到一张C3层输入特征图,过程如图2所示。C3中的每个输出特征图都是S2中6个或者几个特征映射的组合,表示本层的特征图是组合上一层不同的特征,这种不对称的组合连接方式有利于提取多种组合特征,另一方面可以减少参数数量。该层网络可训练参数6×(3×5×5+1)+9×(4×5×5+1)+1×(6×5×5+1)=1516。
表1 卷积网络特征图组合策略
图2 C3层输入特征图生成原理图
(5)S4池化层:S4层输入尺寸为10×10、采样区域2×2、采样方式为平均池化、输出特征图大小为5×5、可训练参数为2×16=32(平均池化后的结果乘以一个权值系数+偏置),最终结果通过函数激活。
(6)C5卷积层:C5层输入为S4层输出的16个5×5特征图、卷积核为120组5×5×16、输出特征图的大小1×1、可训练参数/连接为120×(16×5×5+1)=48,120(120组16×5×5)。
(7)F6全连接层:输入为C5层的120维向量,F6层有84个节点,再加上偏置,可训练参数84×(120+1)=10164。结果经过激活。因此,可以看出,全连接层具有的参数量较多。
(8)Output全连接层:输出层也是全连接层,共有10个节点,分别代表数字0~9,采用的是径向基函数作为分类器。
「 2. Alexnet网络 」
AlexNet是Geoffrey Hinton和他的学生Alex Krizhevsky设计的,2012年以16.4%的显著优势问鼎ImageNet LSVRC(ILSVRC)图片分类赛冠军,其训练集包括127万多张图片,验证集有5万张图片,测试集有15万张图片。AlexNet也激起了人们对CNN研究的兴趣。图3为Alexnet的结构图。该模型首次采用了双GPU并行计算加速模式,即第1、2、4、5卷积层都是将模型参数分为2部分进行训练。并行结构分为数据并行与模型并行。数据并行是指在不同的GPU上,模型结构相同,但将训练数据进行切分,分别训练得到不同的模型,然后再将模型进行融合;而模型并行则是,将若干层的模型参数进行切分,在不同的GPU上使用相同的数据进行训练,得到的结果直接作为下一层输入。Alexnet使用ReLU函数作为激活函数,降低了类函数的计算量。利用dropout技术在训练期间选择性地剪掉某些神经元,避免模型过拟合,并引入最大池化技术对数据进行降维。
图3 Alexnet网络结构
Alexnet模型图的基本参数为:
(1)输入层:图片尺寸224×224,包含3通道,处理后尺寸为227×227。
(2)第一卷积模块:96个11×11×3大小的卷积核进行卷积,步长为4,产生55×55×96的特征图((22711)/4+1=55),96通道的特征图被分配到2个GPU中,每个GPU上48个特征图;2组48通道的特征图分别在对应的GPU中进行ReLU激活,并采用了局部响应归一化LRN操作(LRN模拟神经生物学上的侧抑制功能,即被激活的神经元会抑制相邻的神经元,实现局部抑制,使得响应较大的激活值相对更大,提高了模型的泛化能力。LRN只对相邻数据区域进行归一化处理,不改变数据的大小和维度);然后利用步长为2、3×3的池化核进行最大池化(AlexNet应用了重叠池化方法,即池化操作的部分像素上有重合),生成2组27×27×48的特征图(27=(553)/2+1)。
(3)第二卷积模块:每块GPU内特征图维度为27×27×48,使用2组卷积核尺度为5×5×128的卷积核,分别在每个GPU上进行卷积操作,在卷积中使用了padding操作,上下左右各填充2个像素,最终产生2组27×27×128的特征图;2组27×27×128的卷积特征图进行激活和LRN操作,然后利用步长为2,3×3的池化核,进行最大池化,产生2组13×13×128的特征图,最后合并为13×13×256的特征图。
(4)第三卷积模块:输入特征图为13×13×256,利用3×3×256×384的卷积核进行卷积,采用了padding设置,产生13×13×384的特征图,然后经过ReLU激活。
(5)第四卷积模块:13×13×384的输入特征图,经过0填充,利用3×3×384×384的卷积核进行卷积,产生13×13×384的输出特征图,然后进行激活与LRN操作,最后将特征图平均分配到2个GPU上,每个GPU获得13×13×192的输入特征图。
(6)第五层卷积:每个GPU分别获得13×13×192的输入特征图,采用3×3×192×128的卷积核进行卷积处理,设置有1个像素padding参数,输出2组13×13×128的特征图,然后进行激活与LRN操作,并进行步幅为2池化核为3×3的池化操作,产生2组6×6×128的特征图输出,然后将池化结果进行合并,产生6×6×256的特征图。
(7)第一层全连接:输入6×6×256的特征图被转换为9216的输入向量,隐含层维度为4096维,激活函数采用ReLU,同时采用了概率为0.5的Dropout策略。
(8)第二层全连接:第二隐含层维度为4096维,激活函数采用ReLU,同时采用了概率为0.5的Dropout策略。
(9)Softmax层:输出为1000维,采用Softmax进行分类,输出的每一维都是图片属于该类别的概率。
「 3. VGG网络 」
2014年,VGG模型获得了ILSVRC分类赛第二名,VGG网络探索了卷积网络深度与性能、准确率之间的关系。VGG的思想刚好与LeNet的设计原则相悖,LeNet认为大的卷积核能够捕获图像中更多相似的特征,AlexNet在网络前端也使用了11×11、5×5的卷积核。较大的卷积核需要较大的计算成本,减少卷积核尺寸能够减少模型参数,同时节省运算开销。VGG第一次在卷积层使用了更小的3×3卷积核对图像进行卷积,并把这些小的卷积核排列起来作为一个卷积序列,即对原始图像进行3×3卷积后再进行3×3卷积,VGG网络通过多个3×3卷积核模仿较大卷积核的计算效果,对图像进行局部感知。VGG网络通过反复堆叠3×3卷积和2×2的池化,得到了最大深度为19层的网络。VGG模型并不复杂,只采用了3×3一种卷积核,卷积层基本就是“卷积-ReLU-池化”的结构,没有使用LRN层。AlexNet与VGG16网络卷积运算对比如图4所示。
图4 AlexNet与VGG16网络对比
VGG网络具有如下特点:
(1)VGG采用了较深的网络,最多达到19层,证明了网络越深,高阶特征提取越多,从而提升网络准确率。
(2)VGG串联多个小卷积,相当于一个大卷积。VGG中使用两个串联的3×3卷积,达到一个5×5卷积计算的效果,但参数量却只有之前的9/25;同时串联多个小卷积,也增加了使用ReLU非线性激活的概率,从而增加了模型的非线性特征。
(3)VGG有11层、13层、16层、19层等多种不同复杂度的结构。使用复杂度低的模型的训练结果,来初始化复杂度高模型的权重等参数,这样可以加快网络收敛速度。表2显示了不同的VGG模型参数配置。
表2 不同VGG模型参数配置
A | A-LRN | B | C | D | E |
11 layers | 11 layers | 13 layers | 16 layers | 16 layers | 19 layers |
输入图像 224×224 | |||||
Conv3×3-64 | Conv3×3-64 LRN | Conv3×3-64 Conv3×3-64 | Conv3×3-64 Conv3×3-64 | Conv3×3-64 Conv3×3-64 | Conv3×3-64 Conv3×3-64 |
Max pooling | |||||
Conv3×3-128 | Conv3×3-128 | Conv3×3-128 Conv3×3-128 | Conv3×3-128 Conv3×3-128 | Conv3×3-128 Conv3×3-128 | Conv3×3-128 Conv3×3-128 |
Max pooling | |||||
Conv3×3-256 Conv3×3-256 | Conv3×3-256 Conv3×3-256 | Conv3×3-256 Conv3×3-256 | Conv3×3-256 Conv3×3-256 Conv3×3-512 | Conv3×3-256 Conv3×3-256 Conv3×3-256 | Conv3×3-256 Conv3×3-256 Conv3×3-256 Conv3×3-256 |
Max pooling | |||||
Conv3×3-512 Conv3×3-512 | Conv3×3-512 Conv3×3-512 | Conv3×3-512 Conv3×3-512 | Conv3×3-512 Conv3×3-512 Conv3×3-512 | Conv3×3-512 Conv3×3-512 Conv3×3-512 | Conv3×3-512 Conv3×3-512 Conv3×3-512 Conv3×3-512 |
Max pooling | |||||
Conv3×3-512 Conv3×3-512 | Conv3×3-512 Conv3×3-512 | Conv3×3-512 Conv3×3-512 | Conv3×3-512 Conv3×3-512 Conv3×3-512 | Conv3×3-512 Conv3×3-512 Conv3×3-512 | Conv3×3-512 Conv3×3-512 Conv3×3-512 Conv3×3-512 |
Max pooling | |||||
FC 4096 | |||||
FC 4096 | |||||
FC 1000 | |||||
Softmax |
VGG网络模型计算过程如下:
(1)输入卷积:输入图像尺寸为224×224×3,经64组3×3×3的卷积核,步长为1,padding填充,卷积两次,再经ReLU激活,提取224×224×64的特征图;
(2)最大池化:利用步长为2、22的池化核对特征图进行池化操作,获得112×112×64的特征图;
(3)卷积:利用128组3×3×64及128组3×3×128的卷积核对特征图进行两次卷积操作,然后ReLU激活,输出112×112×128的特征图;
(4)最大池化:利用步长为2、2×2的池化核进行池化操作,输出56×56×128的特征图;
(5)卷积:利用256组3×3×128、256组3×3×256、256组3×3×256的卷积核进行三次卷积,ReLU激活,输出56×56×256 的特征图;
(6)最大池化;利用步长为2、2×2的池化核对特征图进行池化操作,输出28×28×256的特征图;
(7)卷积:利用512组3×3×256、512组3×3×512、512组3×3×512的卷积核对输入进行三次卷积,ReLU激活,输出28×28×512的特征图;
(8)最大池化:利用步长为2、2×2的池化核对特征图进行池化操作,输出14×14×512的特征图;
(9)卷积:利用512组3×3×512、512组3×3×512、512组3×3×512的卷积核对输入特征图进行三次卷积,并ReLU激活,输出14×14×512的特征图;
(10)最大池化:输出7×7×512的特征图;
(11)特征图展开:将二维输入特征图转换为一维向量模式7×7×512=25088;
(12)全连接:构造隐层单元数为4096的双隐层全连接网络,输出层为具有ReLU激活的1000的输出神经元;
(13)最后利用softmax输出1000个预测结果,网络结构如图5所示。
图5 VGG16结构图
版权归原作者所有
编辑:刘杨
编审:辛召
——————————————————————
▼购买链接▼