李国强,陈文华,高 欣
(燕山大学 智能控制系统与智能装备教育部工程研究中心,河北 秦皇岛 066004) (燕山大学 河北省工业计算机控制工程重点实验室,河北 秦皇岛 066004)
近年来,随着众多学者对人工智能(AI)的不断研究,基于深度学习[1]的人工智能技术已成功地应用于语音识别[2],自然语言处理[3],计算机视觉等领域.在许多视觉识别任务中,深度卷积神经网络都具有良好的效果,如图像分类[4],图像检索[5]、目标检测[6]和语义分割[7]等.经典的卷积神经网络从VGG[8],Inception[9-11],ResNet[12]发展到DenseNet[13],其间也涌现出很多其他卷积神经网络.
2012年的ImageNet竞赛中,AlexNet[14]网络获得冠军,也是卷积神经网络第一次被尝试应用在图像处理上并获得广泛关注.2014年的ImageNet竞赛中,VGG网络作为定位任务中的基础框架获得冠军,当时网络深度(卷积层层数)被认为是VGG网络取得良好效果的重要因素.Network-In-Network(NIN)利用多层感知机(Multilayer Perceptron)来提高图像分类的准确率,多层感知机由全连接层和非线性函数组成.上述表明卷积神经网络的深度和宽度是改善网络性能的两个关键因素,但是随着网络越来越深,训练会变得困难并且会出现过拟合问题.为了解决这个问题,Srivastava等人提出了Highway Networks,它使用一种学习门机制(a learned gating mechanism)让信息在几个卷积层之间有效传递.随后,He等人提出ResNet,应用恒等映射来实现残差学习,它使不同卷积层间有规律连接起来.不久后,密集网络(DenseNet)的作者将这种方法的作用发挥到极致,使每一层都和之前的层相连接.
随着ResNet变得越来越受欢迎,许多改进版逐渐出现.Wide Residual Network(WRN)[15]网络通过增加通道数来加宽网络.ResNeXt[16]提出的基数(cardinality)超参数为调整模型容量提供了一种新方法.Huang等人提出了Stochastic Depth residual networks(SD ResNets)[17],极大降低了模型训练时间,SD ResNets在训练过程中随机去掉(drop)一些卷积层,但是在测试的时候不会这样做,同时说明一些卷积层可能是冗余的.
当卷积神经网络应用跨层连接时,它的性能可以得到很大的提升,变得更加准确和高效,训练也会变得容易.在残差网络(ResNet)的启发下,文章设计了两种新型卷积神经网络框架(C-FnetO和C-FnetT),它们采用了全新的交叉跨层连接布局方式并具有较少的卷积层层数.C-FnetO网络和C-FnetT网络中不仅相邻模块间具有连接线,在模块内部还设有跨层连接线,有利于充分保留图像特征信息.不同分支处的特征融合采用DenseNet网络中通道拼接方式(concatenation).同时,对两种新型网络模块中采用的跨层连接布局方式的有效性进行理论上的证明.C-FnetO和C-FnetT两种网络分别在4个公开的权威数据集(MNIST,CIFAR-10,CIFAR-100和SVHN)上进行训练和测试,并与最先进的残差和密集网络模型(ResNet和DenseNet)等进行对比实验.实验结果表明,文章设计的网络模型在4种数据集上都取得了相对更好的效果,其中C-FnetT网络的效果最佳,在4种数据集上均取得了最高的图像识别准确率.所以,在后面的文章中,以C-FnetT卷积神经网络为主要对象进行介绍.
在C-FnetO和C-FnetT两个网络中,分别有n个模块,每个模块主要由3层卷积层组成,最后一个模块由2层卷积层组成.鉴于两种网络框架区别很小,以相对复杂的C-FnetT网络为例进行展示,如图1所示,除了相邻模块间具有连接线外,在每个模块内部也具有连接线,两条连接线成交叉状态,也是与残差模型的不同之处.而C-FnetO只是减少了每个模块的内部连接线(即图1中的虚线线条),其他均与C-FnetT一致.
图1 C-FnetT的布局图Fig.1 C-FnetT with n blocks
对于C-FnetO网络的模块,如图2左图所示,x0表示输入图像信息,x1,x2和x3分别表示第1层,第2层和第3层的输出.fL(*)表示非线性变换,可以为批正则化(Batch Normalization)[18],激活线性单元(Rectified linear units)[19],或卷积(Convolution),其中下标L表示卷积层,取值为0,1,2,3.则C-FnetO模块可以建模如公式:
x1=[f1(x0),x0]
(1)
x2=f2([f1(x0),x0])=f2(x1)
(2)
x3=f3(f2([f1(x0),x0]))=f3(x2)
(3)
其中[*,*]表示通道拼接操作(concatenation),如:[f1(x0),x0]代表f1(x0)与x0在第三维度,即通道上的拼接.
图2 3种网络的模块Fig.2 Model of three networks
假设δ为模块中最后一层输出的loss值,可以根据反向传播理论得到梯度值,如公式(4)所示:
(4)
对于C-FnetT网络的模块,如图2中间所示,它比C-FnetO模块多了一条跨层连接线,建模公式如式(5)、式(6)和式(7):
x1=[f1(x0),x0]
(5)
x2=[f1(x0),f2([f1(x0),x0])]=[f1(x0),f2(x1)]
(6)
x3=f3([f1(x0),f2([f1(x0),x0])])=f3(x2)
(7)
依然假设δ为模块中最后一层输出的loss值,可以根据反向传播理论得到梯度值,如公式(8)所示:
(8)
由于网络采用模块化设计方法,整体网络框架由每一个模块组成,以C-FnetT为例,下标b表示网络的模块数,则C-FnetT网络的整体建模公式如式(9)(近似复合函数)所示:
(9)
整个网络的梯度计算类似单个模块的计算方法,文章不再赘述.
应用残差连接方式时,如图2右图所示,建模公式为式(10)、式(11)和式(12):
x1=[f1(x0),x0]
(10)
x2=[[f1(x0),x0],f2(x1)]=[f2(x1),x1]
(11)
x3=f3([[f1(x0),x0],f2(x1)])=f3([f2(x1),x1])=f3(x2)
(12)
同样设δ为模块中最后一层输出的loss值,可以根据反向传播理论得到梯度值,如公式(13)所示:
(13)
文章设计的网络模块采用了交叉连接方式,为了证明它的有效性,图3直观地展示了3种模块的示意图,可以观察到,C-FnetO比C-FnetT少一个②通路,比残差模块少②和③通路,而C-FnetT比残差模块少一个③通路,通路①是它们共有的,C-FnetO和C-FnetT均在残差模块的基础上进行了优化.在2.2和2.3节中,给出了每种网络的单个模块的梯度传播公式,由公式(4)、公式(8)和公式(13)可知,C-FnetO相比C-FnetT和残差连接模块,在梯度公式中包含更少的信息,而C-FnetT与残差连接模块拥有同等的信息量,但是C-FnetT的梯度值更偏小一些,可以获得更加丰富和细腻的图片特征信息,提高图像识别准确率.
图3 3种网络的模块拆解图Fig.3 Model of three networks
在卷积神经网络中,无论浅层网络还是深层网络,对图像识别任务都具有重要作用.浅层的网络可以提取低水平的图像特征信息,而深层网络可以提供高水平的图像特征信息,为了更好融合两者的信息,C-FnetT网络采用了交叉连接方式.一方面,C-FnetT网络可以实现端到端的训练模式,实现梯度的反向传播.另一方面,C-FnetT可以避免过拟合和梯度消失问题,缩短学习周期并避免网络饱和问题.
将C-FnetO和C-FnetT两个网络在4种公开数据集(MNIST,CIFAR-10,CIFAR-100和SVHN)上进行训练和测试,为了对比模型效果,还增设了无连接网络(Plain-net),经过一系列实验,取n=5(此时效果最好)的3种网络模型与其它典型网络进行对比,它们的框架结构如图4所示.
为了保证实验的公平性,在每个实验中,对4种数据集采取相同的图像处理方法,超参数的设置也遵循公平对比原则.
MNIST:手写数字数据库[20]来自NIST的专用数据库3(SD-3)和专用数据库1(SD-1)[21],其中包含从0-9的二进制手写数字图像.它们由高等学校学生和美国人口普查局工作人员收集.训练集共有60000个样本,SD-3和SD-1分别提供30000个.测试集共有10000个样本,SD-3和SD-1分别提供5000个.MNIST数据集由28×28的灰度图像组成.
CIFAR-10:该数据集[22]由32×32像素的彩色自然图像组成,共10个类别,训练集有50000张图片,测试集有10000张图片.我们还采用了广泛用于该数据集的标准数据增强方案[12](镜像/移位).
CIFAR-100:该数据集[22]的尺寸和格式与CIFAR-10数据集一样,不同的是CIFAR-100数据集包含100种类别.
Street View House Numbers:SVHN[23]数据集由Google Street View收集的32×32像素的彩色房屋编号图像组成.数据集中有两种格式,我们考虑第2种格式,73257张图像作为训练集,26032张图像作为测试集,531131张图像作为额外的一组数据集.这个数据集的任务是对位于图像中心的数字进行分类,其他出现在背景中的数字不作为检测目标.
实验平台是单个GPU,参数是Nvidia TITAN Xp,采用的深度学习框架是Tensorflow,目前它非常受欢迎.
在CIFAR-10数据集上,模型在训练时采用带有动量的随机梯度优化算法,借鉴文献[24]中的方法,设置权重衰减(weight decay)大小为10-4,Nesterov momentum大小为0.99,权重初始化引用文献[16]中的方法.每次训练处理的图片(batch size)为64张,迭代批次为200.初始学习率设为0.001,当训练批次达到总批次数的50%和75%时,学习率除以10.
在CIFAR-100数据集上,每次训练处理的图片为128张,迭代批次为160.初始学习率设为0.1,当训练批次达到总批次数的50%和75%时,学习率除以10.其它设置与CIFAR-10相同.
在手写数字数据集(MNIST)上,每次训练处理的图片为128张,迭代批次为50.初始学习率设为10-4,当训练批次达到总批次数的50%和75%时,学习率除以10.权重衰减和Nesterov momentum参数及优化算法设置和数据集CIFAR-10相同.
对于SVHN数据集,训练网络时采用Adam优化
算法,每次训练处理的图片为40张,迭代批次为25.初始学习率设为10-4,此外,还将局部对比归一化[25](local contrast normalization)方法应用于该数据集的预处理.
然而,文章的目标不是实现最优的图像识别效果,其中需要利用其他技术,如集成(ensemble),随机化输入顺序(randomized input order)和抽样方法(sampling methodologies)等.因此,并没有采用这些辅助技术,而是仅仅使用一个简单的模型框架进行对比实验,验证提出网络的有效性.
C-FNetO,C-FnetT和Plain-net共3种网络的具体参数和框架细节在表1和图4中展示,由于采用n=5,所以网络的卷积层层数共15层,图4中从左至右依次是Plain-net,C-FnetO和C-FnetT,它们的基础框架相同,只是在跨层连接线的设置上存在区别,并呈现由简单到复杂的趋势.
表1 3种网络模型框架Table 1 Architecture for three networks
图4 3种网络模型结构Fig.4 Architecture for three networks
图5记录了3种网络在不同数据集上的准确率,可以观察到,C-FnetO比Plain-net的测试准确率高一些,而C-FnetT的测试准确率比C-FnetO高一些,即C-FnetT表现最佳,同时证明引入交叉跨层连接可以提高网络性能.
文章分别在4个公开数据集上对各种网络模型进行测试,其中,MNIST数据集比较简单,采用很浅的网络就可以实
图5 3种网络的测试准确率Fig.5 Test accuracy of three networks
现不错的图像识别准确率,当采用复杂网络时,很容易出现过拟合现象,但是在实验中,通过dropout方法避免了过拟合的出现.在MNIST数据集上的测试准确率如表2所示,最好的测试结果以加粗黑体标注,可以观察到C-FnetT网络的准确率为99.54%,在所有的模型中表现最好,虽然结果和ResNet接近,但是C-FnetT的卷积层层数却很少.
在CIFAR-10数据集上的实验结果如表3所示,C-FnetT的层数最少,但是取得了相对最高的识别准确率,比ResNet,DenseNet,Inception-ResNet-v2和Xception分别提高了0.41%,9.63%,6.66%和7.24%.这是相当不错的测试结果,较少的层数获得了更高的准确率,证明了交叉连接方式的有效性和残差模块中跨层连接的部分冗余性.
在CIFAR-100数据集上的测试准确率如表4所示,C-FnetT依然是表现最好的网络,比ResNet和DenseNet分别提高3%和34%.为了更充分证明C-FnetT优化方法的正确性,图6展示了C-FnetT和ResNet训练误差对比图,由于C-FnetT是在残差模块的基础上进行改进,所以主要和残差网络对比.由图6可以明显发现在104次迭代训练后,C-FnetT的训练误差远远低于ResNet,并保持下去,大大提高了模型收敛速度.
表2 MNIST上的图像识别测试准确率(%)Table 2 Test accuracy(%)on MNIST dataset
表3 CIFAR-10上的图像识别测试准确率(%)Table 3 Test accuracy(%)on CIFAR-10 dataset
表4 CIFAR-100上图像识别测试准确率(%)Table 4 Test accuracy(%)on CIFAR-100 dataset
图6 两种网络在CIFAR-100上的训练误差 (其中ResNet有32层,C-FnetT为15层)Fig.6 Train loss of two networks on CIFAR-100
表5记录了模型在SVHN数据集上的准确率,C-FnetT的结果为92.27%,相比其它网络获得了最好的图像识别效果.同时图7绘制了C-FnetT和ResNet训练误差对比图,在3×104次迭代训练后,C-FnetT的训练误差开始明显低于ResNet网络,这样的状态一直保持到训练结束,极大证明了C-FnetT模型的有效性.
表5 SVHN上的图像识别测试准确率(%)Table 5 Test accuracy(%)on SVHN dataset
图7 两种网络在SVHN上的训练误差 (其中ResNet有32层,C-FnetT为15层)Fig.7 Train loss of two networks on SVHN
文章提出两种新型的网络结构(C-FnetO和C-FnetT),它们在四种公开数据集(MNIST,CIFAR-10,CIFAR-100和 SVHN)上显著提高了图像分类准确率,尤其C-FnetT.首先,C-FnetT在残差模块基础上进行优化,采用交叉连接方式,并以较少的层数获得了比很多先进模型更高的准确率.此外,实验结果表明,与其它方法相比,C-FnetT不仅具有更好的测试精度和泛化能力,而且加快了模型收敛速度.在未来的工作中,将文章提出的模型在ImageNet数据集上进行检验将成为主要任务.