代表性的深层卷积神经网络包括AlexNet、VGG网络、GoogLeNet、ResNet、DenseNet等。
一、AlexNet
AlexNet是第一个现代深度卷积网络模型,是在LeNet的基础上提出来的。1998年,LeCun通过一个卷积神经网络,展示了通过梯度下降训练卷积神经网络,可以达到手写数字识别在当时最先进的识别结果,并将该网络名命为LeNet。但是LeNet提出之后将近20年里,受硬件计算能力及训练数据规模的局限,虽然在小数据集上可以取得较好的识别效果,但是在大规模数据集上的表现却不尽如人意。一方面,是因为针对神经网络的加速硬件在当时还没有大量普及,训练多通道多层、包含大量参数的复杂神经网络难度很大;另一方面,当时对于参数初始化和非凸优化算法等研究不够深入,也缺乏训练深度模型需要的大量带标签的数据。但是,LeNet奠定了现代卷积神经网络的基础。正是LeNet的奠基性工作,将卷积神经网络推上舞台,为世人所知。而且LeNet由卷积层块和全连接层块组成的网络结构为2012年大放异彩的AlexNet提供了借鉴。
2012年,Krizhevsky等人构造的卷积神经网络AlexNet以较大优势赢得了ImageNet大规模视觉识别挑战赛(ILSVRS),成为最早在ImageNet图像集上取得最好识别结果的卷积神经网络。ImageNet数据集由当时在普林斯顿大学任职的李飞飞教授带领团队利用亚马逊Mechanical Turk创建,历时两年多完成。2009年公开的ImageNet数据集包含5247个类别,总计320万张带标记的图像。目前,ImageNet已经发展成为一个包含超过22000个类别,总数超过1500万张图像的大数据集。ImageNet数据集对于计算机视觉、机器学习、人工智能的影响不言而喻,它证明了数据和算法一样至关重要。
AlexNet的提出,使得卷积神经网络乃至深度学习重新引起了人们广泛的关注。AlexNet与LeNet的设计理念相似,主要区别在于:AlexNet在LeNet的基础上增加了3个卷积层,共包含5个卷积层和3个全连接层,且对卷积窗口、输出通道数和构造顺序都进行了大量调整。如图4-11所示,AlexNet的网络输入为224×224×3的图像,是对尺寸为256×256的三通道彩色图像随机裁剪后生成的,目的是增强模型的泛化能力,避免过拟合;输出为1000个类别的条件概率。AlexNet采用两个GPU并行训练,GPU间只在某些层进行通信。AlexNet通过使用更多的卷积层和更大的参数空间,可以实现对大规模数据集的拟合。此外,AlexNet在前两个池化层之后采用了局部响应归一化(local response normalization,LRN)增强模型的泛化能力。
图4-11 AlexNet网络结构[16]
AlexNet的优越性能主要归因于:使用了GPU进行并行训练,采用了更深的网络结构,使得可调参数的数量大量增加,使用数据增强(data augmentation)提高网络模型的泛化能力,由更简单ReLU激活函数代替Sigmoid加快SGD的收敛速度,引用Dropout控制全连接层的模型复杂度及防止过拟合等。这些现代深度卷积网络技术都是首次在AlexNet使用,极大地推动了端到端深度学习模型的发展,后来提出的各种卷积神经网络都是在AlexNet基础上提出来的,AlexNet确立了深度学习或者卷积神经网络在计算机视觉中的统治地位。
二、VGG
VGG是牛津大学计算机视觉组(visual geometry group)和Google DeepMind公司的研究员在2014年一起构造的新的深度卷积神经网络,并取得了ILSVRC2014比赛分类项目的第二名(第一名是GoogLeNet),VGG的名称正是来源于此。
VGG与AlexNet一样,也由卷积层块后连接全连接层构成。不同的是,VGG虽然借鉴了AlexNet的网络结构,但是VGG通过降低卷积核的大小、增加卷积子层数,使得通道数更多,模型架构更宽更深,在控制计算量增加规模的同时保证了性能。例如,2个3×3的卷积堆叠获得的感受野大小相当一个5×5的卷积,3个3×3卷积的堆叠获取到的感受野相当于一个7×7的卷积。VGG使用小卷积核、小池化核和多卷积层的好处,一方面是减少了参数(例如7×7的参数为49个,而3个3×3的参数为27),缓解了过拟合;另一方面是更多的非线性映射可以增加网络的表达能力,使得网络对特征的学习能力更强。同时,VGG的泛化能力也非常好,应用于不同的图像数据集时都有良好的表现。
VGG根据卷积层个数和输出通道数的不同,定义了6种不同的VGG网络结构(A、A-LRN、B、C、D、E),都是由5层卷积层和3层全连接层组成,如表4-1所示,表4-2给出对应的参数,其中D和E即VGG-16(如图4-12所示)和VGG-19。VGG不同结构的区别在于每个卷积层的子层数量不同,从A至E的卷积层子层数量从1依次增加到4,总的网络深度是从11层到19层(添加的层以粗体显示)。
表4-1 VGG网络结构配置(深度从A到E逐渐加深)[17]
续表
表4-2 VGG网络参数个数[17](单位:百万)
图4-12 VGG-16网络结构[17](www.xing528.com)
表4-1中,卷积层参数表示为“conv<感受野大小>-通道数”,例如conv3-128,表示使用3×3的卷积核,通道数为128。为了简洁起见,表中没有显示ReLU激活功能。从表4-2可以看到,虽然从A到E每一级网络逐渐变深,但是网络的参数数量并没有增加很多,这是由于采用了小卷积核(3×3,只有9个参数)的缘故,参数数量主要集中在全连接层。
三、Inception网络
Inception网络是使用了更复杂架构和多个网络分支的网络模型。Inception网络提出之前,卷积神经网络都是只包含一条路径的顺序架构,沿着这条路径,不同类型的层(卷积层、池化层、ReLU层、全连接层等)堆叠在彼此的顶部,以创建所需深度的网络架构。在Inception网络中,一个卷积层包括多个不同大小的卷积操作,称为Inception模块。Inception模块同时使用了1×1、3×3、5×5等不同大小的卷积核,并将得到的特征图在深度上堆叠起来,作为输出特征图。Inception模块的核心思想是:通过多个卷积核提取图像不同尺度的信息,最后进行融合,以得到图像更好的表征。
Inception网络有多个版本,其中最早的Inception v1网络就是著名的GoogLeNet,包含了9个Inception v1模块(如图4-13所示)、5个池化层和其它一些卷积层和全连接层,共22层网络。GoogLeNet在2014年的ImageNet图像识别挑战赛ILSVRC中夺得冠军。Inception网络有多个改进版本,其中代表性的Inception v3网络,采用多层的小卷积核代替大的卷积核,以减少计算量和参数量,并保持感受野不变。
图4-13 Inception v1模块结构[18](采用4组平行的特征提取,分别是1×1、3×3、5×5的卷积和3×3的最大池化)
四、ResNet
在ResNet提出之前,关于卷积神经网络的普遍想法是:网络设计得越深,模型的准确率就越高。随着网络层级的不断增加,模型精度不断得到提升;但是当网络层级增加到一定的数量以后,训练精度和测试精度迅速下降,这说明当网络变得很深以后,深度网络就变得更加难以训练了。这是因为神经网络在反向传播过程中要不断地传播梯度,而当网络层数加深时,梯度在传播过程中会逐渐消失,导致无法对前面网络层的权重进行有效的调整。
何凯明等(2015)提出来的残差网络(ResNet)通过给非线性的卷积层增加残差连接(residual connection)的方式,实现了既能加深网络层数提升模型精度,又能解决梯度消失问题的目标。ResNet在ILSVRC2015竞赛中夺得第一名,将网络深度提升到152层,错误率降至3.57%,大幅提升了模型的准确率。
ResNet的基本思想是:假设现有一个比较浅的网络已达到了饱和的准确率,这时在它后面再加上几个恒等映射层(identity mapping),就可以在增加网络深度的同时,不会带来训练集上误差的上升。ResNet引入了带捷径连接(shortcut connections)的残差网络结构,输入可通过跨层的数据线路更快地向前传播,有效提高信息的传播效率,解决了模型退化问题,使得神经网络的层数可以超越之前的约束,达到很深(从几十层、上百层甚至千层层),这为高级语义特征提取和分类提供了可行性。图4-14分别为ResNet34和ResNet50/101/152的残差单元结构。ResNet34的残差块采用两个3×3×256的卷积,参数量为3×3×256×256×2=1179648;ResNet50/101/152的残差块首先用一个1×1的卷积把256维通道降到64维,然后再通过1×1卷积恢复,参数量为1×1×256×64+3×3×64×64+1×1×64×256=69632,有效降低了计算量,适用于更深的网络。
图4-14 ResNet34和ResNet50/101/152的残差单元结构[19]
五、DenseNet
DenseNet是Huang G.等人(2017)提出的一种具有密集连接的卷积神经网络。DenseNet的特点是网络中任何两层之间都能直接联系,即该网络每一层的输入都是当前层之前每一层网络输出结果的综合,相应的当前层的输出(即特征图)也会和之后的每一层网络直接联系起来作为输入数据。图4-15是DenseNet的一个密集块(dense block)结构示意图,一个密集块里面的结构组成为:BN→ReLU→Conv(1×1)→BN→Conv(3×3)。而一个DenseNet则由多个这种密集块组成,每两个密集块之间层称为过渡层(transition layers),由BN→Conv(1×1)→AveragePooling(2×2)组成。
图4-15 密集块(dense block)结构示意图[20]
DenseNet的设计思想借鉴了Inception和ResNet的结构,并在其基础上加以创新,如图4-16所示。通过密集连接,DenseNet网络加强了网络层之间的信息交流,特征得以重复利用,因此所提取的描述符具有更好的描述能力,且可以有效缓解梯度消失现象。此外,虽然采用了密集连接(dense connection),但是由于每一层都包含了之前所有网络层的输出信息,DenseNet的参数量反而比其它模型更少,网络效率更高。
图4-16 DenseNet网络结构图[20]
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。