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