仲會(huì)娟,謝朝和,劉文武,劉大茂
(陽光學(xué)院人工智能學(xué)院,福建福州 350015)
與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)相比,卷積神經(jīng)網(wǎng)絡(luò)可通過局部感受野和權(quán)值共享機(jī)制大幅降低網(wǎng)絡(luò)結(jié)構(gòu)的參數(shù)數(shù)量[1],并且能夠通過池化操作有效降低特征維度,同時(shí)可有效改善網(wǎng)絡(luò)的泛化能力.因此,卷積神經(jīng)網(wǎng)絡(luò)被廣泛應(yīng)用在大規(guī)模圖像數(shù)據(jù)集的分類與識(shí)別中.近年來,學(xué)者對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行了進(jìn)一步的研究,并取得了一些研究成果.例如:2012年,Alex Krizhevsky等提出了AlexNet模型,該模型通過Relu激活函數(shù)削弱梯度消失,實(shí)現(xiàn)了網(wǎng)絡(luò)結(jié)構(gòu)的加深,并通過輸入端的數(shù)據(jù)增廣和隱藏層的輸出隨機(jī)失活有效抑制過擬合[2].2014年,“VGG”團(tuán)隊(duì)提出了VGG模型,該模型通過小卷積核增加網(wǎng)絡(luò)的深度,可減少網(wǎng)絡(luò)參數(shù)量[3].文獻(xiàn)[4]提出了25列CNN組合模型,將各列輸出的平均值作為最終分類結(jié)果,提高了網(wǎng)絡(luò)精度.文獻(xiàn)[5]利用幾何變換增廣數(shù)據(jù)集,并使用批量歸一化和支持向量機(jī)分類器加快收斂速度,縮短了網(wǎng)絡(luò)的訓(xùn)練時(shí)間.上述研究中,研究者均以卷積、激活、池化、全連接操作為基礎(chǔ),通過加大網(wǎng)絡(luò)深度和改變卷積核大小及滑動(dòng)步長(zhǎng)來改進(jìn)網(wǎng)絡(luò)的性能。但因以上方法均將最后一層特征信息映射為一維向量送入分類器進(jìn)行圖像的分類識(shí)別,因此特征尺度單一.
研究表明,CNN是一種具有層次結(jié)構(gòu)的學(xué)習(xí)模型,文獻(xiàn)[6]詳細(xì)闡述了該模型能夠挖掘出數(shù)據(jù)的多尺度特征描述,并可通過特征的可視化闡明了每一層的特征描述表征識(shí)別對(duì)象不同層次的特征屬性.文獻(xiàn)[7-8]利用卷積神經(jīng)網(wǎng)絡(luò)中的最后2個(gè)池化層輸出特征和最后1個(gè)卷積層輸出特征,得到了較為理想的多尺度識(shí)別特征.文獻(xiàn)[9-10]將CNN結(jié)構(gòu)中的每一個(gè)池化層再次池化后送入末端全連接層用于圖像分類識(shí)別,取得了良好效果.以上方法表明,利用數(shù)據(jù)的多尺度特征,即使用全局和局部?jī)煞N不同尺度的特征信息,可有效提高人臉識(shí)別、圖像分割的準(zhǔn)確率和穩(wěn)健性[11].基于此,本文提出一種改進(jìn)的基于CNN的多尺度特征識(shí)別算法,并通過實(shí)驗(yàn)驗(yàn)證了本文方法的有效性.
手寫數(shù)字識(shí)別數(shù)據(jù)集(Mixed National Institute of Standards and Technology database,MNIST)包含55 000條訓(xùn)練數(shù)據(jù),5 000條驗(yàn)證數(shù)據(jù),10 000條測(cè)試數(shù)
圖1 MNIST訓(xùn)練數(shù)據(jù)集Fig.1 Data Set of the MNIST Training
據(jù)[12].數(shù)據(jù)集中的每一條數(shù)據(jù)由feature(數(shù)字圖像)和labels(標(biāo)簽)組成[12].如圖1所示,每幅圖像都是長(zhǎng)度784的一維數(shù)組,且每個(gè)數(shù)組元素的值介于0-1之間;每一個(gè)labels是One-Hot-Encoding格式,即由數(shù)字0與1所組成的長(zhǎng)度為10的序列,其中只有一個(gè)數(shù)字是1,其余全部為0.
TensorFlow框架對(duì)MNIST數(shù)據(jù)集進(jìn)行了封裝,可以直接下載、讀取及查看.如圖1所示,每幅圖像是長(zhǎng)度784的一維數(shù)組,而卷積網(wǎng)絡(luò)直接從彩色或灰度圖像中提取特征,因此通過tf.reshape函數(shù)可將一維數(shù)組轉(zhuǎn)換為28*28像素的灰度圖像.每一個(gè)數(shù)據(jù)labels是One-Hot-Encoding格式,而模型輸出層共有10個(gè)神經(jīng)元,因此通過函數(shù)tf.argmax可將數(shù)據(jù)labels轉(zhuǎn)換為對(duì)應(yīng)0-9的數(shù)字.每次訓(xùn)練并不是讀取所有數(shù)據(jù)同時(shí)進(jìn)行訓(xùn)練,而是讀取一個(gè)batch數(shù)據(jù)進(jìn)行訓(xùn)練,通過mnist.train.next_batch方法可按照批次讀取數(shù)據(jù).
本文提出的基于CNN的多尺度特征識(shí)別算法結(jié)構(gòu)如圖2所示.該模型由數(shù)據(jù)預(yù)處理、CNN層次化特征提取、多尺度特征融合、SoftMax分類識(shí)別等幾部分組成.
圖2 基于CNN的多尺度特征識(shí)別算法結(jié)構(gòu)Fig.2 Structure of Multi-scale Feature Recognition Algorithm Based on CNN
2.2.1 CNN特征提取 在算法結(jié)構(gòu)中,輸入為像素28*28*1的手寫數(shù)字圖像,經(jīng)過3個(gè)卷積層、3個(gè)池化層、1個(gè)全連接層和1個(gè)輸出層.第1個(gè)卷積層為32個(gè)5*5*1的卷積核,采用全零填充方式;滑動(dòng)步長(zhǎng)設(shè)置為1.輸入圖像卷積后采用Rule激活函數(shù),Rule函數(shù)的計(jì)算公式為:
(公式1)
第2個(gè)卷積層使用64個(gè)5*5*32的卷積核,第3個(gè)卷積層使用128個(gè)5*5*64的卷積核,其他參數(shù)設(shè)置與第一層相同.以上每個(gè)卷積層后均采用最大池化操作,窗口尺寸為2*2,滑動(dòng)步長(zhǎng)設(shè)置為2,其中第3個(gè)池化層輸出特征pool3尺寸為128*4*4.
2.2.2 多尺度特征融合 本文結(jié)合文獻(xiàn)[8]和文獻(xiàn)[10]中的算法,將第2個(gè)池化層的輸出特征通過64個(gè)5*5*64的卷積核,其滑動(dòng)步長(zhǎng)為2,輸出特征Conv5為64*4*4;將第1個(gè)池化層的輸出特征通過32個(gè)5*5*32的卷積核,其滑動(dòng)步長(zhǎng)設(shè)置為4,輸出特征Conv4為32*4*4.然后,將不同層次的特征pool3、Conv4、Conv5連接,得到3584維的多尺度特征信息,并送入具有256個(gè)神經(jīng)元的全連接層.最后,將特征信息送入10個(gè)神經(jīng)元的SoftMax輸出層,獲得10個(gè)(0-9)分類的概率分布.
本文所有實(shí)驗(yàn)均在Windows 10操作系統(tǒng)的計(jì)算機(jī)上進(jìn)行.計(jì)算機(jī)的配置為Intel Core i5-7300HQ CPU、主頻2.5GHz、內(nèi)存8.0GB.實(shí)驗(yàn)所用編譯器為Spyder,編程語言為Python,所用的依賴庫如表1所示.
網(wǎng)絡(luò)模型使用Relu激活函數(shù),損失函數(shù)使用交叉熵,初始學(xué)習(xí)率0.001,L2權(quán)重正則化系數(shù)1*10-5,優(yōu)化器使用Adam梯度下降算法,SoftMax分類器進(jìn)行分類,訓(xùn)練周期設(shè)置為30次,每個(gè)批次為100項(xiàng)數(shù)據(jù).同時(shí),為了選取合適的卷積核尺寸、全連接層神經(jīng)元數(shù)目、Dropout參數(shù),本文進(jìn)行了如下比選實(shí)驗(yàn).
1)在CNN模型中,設(shè)置卷積核的尺寸為3*3,5*5,7*7[10],實(shí)驗(yàn)結(jié)果如表2所示.由表中數(shù)據(jù)可知,采用5*5的卷積核時(shí),訓(xùn)練時(shí)間相對(duì)較長(zhǎng),但識(shí)別準(zhǔn)確率最高,損失最小.
2)將全連接層神經(jīng)元數(shù)目分別設(shè)置為64、128、256、512,實(shí)驗(yàn)結(jié)果如表3所示.由表中數(shù)據(jù)可知,當(dāng)神經(jīng)元數(shù)目設(shè)置為256時(shí),損失最小,識(shí)別準(zhǔn)確率最高.
3)在深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,為改善模型的泛化能力引入了Dropout,各層的Dropout參數(shù)設(shè)置如表4所示.由表中數(shù)據(jù)可知,當(dāng)全連接層Dropout參數(shù)設(shè)置為0.2,卷積層Dropout參數(shù)全部設(shè)置為0時(shí),損失最小,準(zhǔn)確率最高.
根據(jù)以上實(shí)驗(yàn)結(jié)果,最終選定卷積核尺寸5*5,全連接層神經(jīng)元數(shù)目256,全連接層Dropout參數(shù)為0.2,此時(shí)網(wǎng)絡(luò)的訓(xùn)練時(shí)間較短,識(shí)別準(zhǔn)確率最高,損失最小.
在不同隱藏層數(shù)下,對(duì)比單層特征與多尺度特征的識(shí)別準(zhǔn)確率.單層特征為卷積神經(jīng)網(wǎng)絡(luò)中最后一層池化層的輸出特征,即端層特征.對(duì)比結(jié)果如表5所示.由表中數(shù)據(jù)可知,在相同分類問題中,多尺度特征的識(shí)別準(zhǔn)確率明顯高于單層特征的識(shí)別準(zhǔn)確率.
在隱藏層數(shù)目為256且分類器為SoftMax的條件下,將本文算法與單層特征、文獻(xiàn)[8]和[10]中算法進(jìn)行對(duì)比,結(jié)果如表6所示.由表中數(shù)據(jù)可知,文獻(xiàn)[8]中的特征融合算法,識(shí)別正確率大幅降低;本文的改進(jìn)算法在訓(xùn)練時(shí)間和準(zhǔn)確率上均優(yōu)于文獻(xiàn)[10]中多層特征識(shí)別算法.通過參數(shù)比選和使用多尺度CNN有效提高了識(shí)別準(zhǔn)確率,提升了訓(xùn)練速度,可在較差的硬件配置基礎(chǔ)上,用更少的訓(xùn)練時(shí)間,獲得較好的識(shí)別率.
本文提出的基于CNN的多尺度特征識(shí)別算法,利用了全局及局部特征信息,解決了傳統(tǒng)CNN網(wǎng)絡(luò)中僅使用端層特征進(jìn)行圖像分類帶來的特征不全面問題,并通過改進(jìn)系統(tǒng)結(jié)構(gòu),選定系統(tǒng)參數(shù),獲得了更為有效的多尺度圖像特征.本文選取MNIST數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,在相同分類器作用下本文提出的算法取得了99.20%的識(shí)別準(zhǔn)確率,有效提升了分類識(shí)別精度,同時(shí)加快了網(wǎng)絡(luò)收斂速度,即可在較差的硬件配置基礎(chǔ)上,用更少的訓(xùn)練和識(shí)別時(shí)間獲得好的識(shí)別率,具有較好的可靠性.下一步將通過加寬加深網(wǎng)絡(luò)結(jié)構(gòu),進(jìn)一步提高檢測(cè)精度,以適用于更為復(fù)雜的數(shù)據(jù)環(huán)境.