吳麗娜,王林山
(中國海洋大學(xué) 數(shù)學(xué)科學(xué)學(xué)院,山東 青島 266100)
卷積神經(jīng)網(wǎng)絡(luò)模型是一種具有高學(xué)習(xí)效率,非線性映射能力以及較強(qiáng)的魯棒性和容錯性的深度學(xué)習(xí)模型[1,2],因此該網(wǎng)絡(luò)被廣泛關(guān)注,它的理論和應(yīng)用研究是人工神經(jīng)網(wǎng)絡(luò)領(lǐng)域的熱點(diǎn)之一。
卷積神經(jīng)網(wǎng)絡(luò)有多種形式,如,在海量圖像分類領(lǐng)域取得突破性成果的Alex Net模型[3];適用于目標(biāo)檢測的R-CNN(regions with CNN)[4]模型;能夠?qū)崿F(xiàn)端到端的圖像語義分割的全卷積網(wǎng)絡(luò)(fully convolution networks,F(xiàn)CN)模型[5],應(yīng)用于圖像的摘要生成和圖像內(nèi)容問答的RNN[6,7]模型。尤其是應(yīng)用于手寫字符識別、圖像分類的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型,是由LeCun提出的一種典型的用來識別手寫數(shù)字的卷積神經(jīng)網(wǎng)絡(luò)模型[8],在計(jì)算機(jī)視覺領(lǐng)域有廣泛的應(yīng)用和改進(jìn):如,李勇等[9]用了跨連接的思想, 提出一種新的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型,將其用于面部表情識別,并在JAFFE表情公開庫和CK+數(shù)據(jù)庫取得了較好的識別效果;馬苗等[10]去掉基本LeNet-5中的第3卷積層,并用SVM分類器代替輸出層中的Softmax分類器,在國際公開的SVHN數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果表明,改進(jìn)的LeNet-5對街景門牌號碼的識別效果較好,并達(dá)到了較高的識別率;特別是劉德建等[11]成功地應(yīng)用經(jīng)典LeNet-5卷積神經(jīng)網(wǎng)絡(luò)成功地研究花卉識別問題,存在著進(jìn)一步提高花卉圖像識別率的問題。本文在文獻(xiàn)[11]的基礎(chǔ)上,試圖對LeNet-5卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn),并對Oxford-17(17 category flower datasets)花卉數(shù)據(jù)集進(jìn)行測試,實(shí)驗(yàn)結(jié)果表明,改進(jìn)的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)對花卉圖像的識別率達(dá)到96.5%,比未改進(jìn)的LeNet-5卷積網(wǎng)絡(luò)提高了6.5%。
LeNet-5卷積網(wǎng)絡(luò)模型(如圖1所示)不包括輸入層,總共有7層,包括:C1卷積層,S2池化層,C3卷積層,S4池化層,C5卷積層,F(xiàn)6全連接層,Output輸出層。輸入的圖像是32×32像素的圖像。C1卷積層有6張?zhí)卣鲌D,其運(yùn)算方式是每個特征圖中的每個單位都與輸入圖中的 5×5 像素的區(qū)域相連,且每個特征圖都通過6個5×5像素大小的卷積核進(jìn)行卷積操作,從而得到6個28×28像素大小的特征圖。S2池化層包括6張?zhí)卣鲌D,與C1卷積層中的特征圖數(shù)目相等,該層每張?zhí)卣鲌D的大小為14×14像素,其運(yùn)算方式是每個特征圖的單元都與C1卷積層中的每個特征圖的2×2像素的區(qū)域相連。C3卷積層有16張?zhí)卣鲌D,其運(yùn)算方式是每個特征圖都通過5×5像素的卷積核與S2池化層中的某幾個或全部特征圖進(jìn)行卷積操作得到,見表1。S4池化層共有16個5×5像素大小的特征圖,其運(yùn)算方式是該層特征圖的每個單元都與C3層每個特征圖的 2×2 像素區(qū)域相連。C5卷積層共有120個特征圖,每個特征圖單元都與S4層所有特征圖5×5像素的區(qū)域相連,該層的特征圖都通過5×5像素的卷積核與S4層的所有特征圖進(jìn)行卷積操作得到,所以該層特征圖的大小為1×1像素。F6全連接層共有84個單元, 并且F6層與C5層是全連接的。Output輸出層采用的是歐式徑向基函數(shù)(RBF)。
圖1 LeNet-5網(wǎng)絡(luò)結(jié)構(gòu)
表1 S2與C3的連接方式
123456789101112131415161XXXXXXXXXX2XXXXXXXXXX3XXXXXXXXXX4XXXXXXXXXX5XXXXXXXXXX6XXXXXXXXXX
LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型最初是通過卷積核自動提取特征,將原始數(shù)據(jù)通過一系列的非線性變換轉(zhuǎn)化為高維特征,從而對高維特征進(jìn)行分類。但是這種分類方法沒有考慮到低維的細(xì)節(jié)特征,且隨著深度的增加,易出現(xiàn)梯度消失或爆炸問題[12]。為了解決此類問題,使得低維細(xì)節(jié)特征均勻地傳遞給下一層,并將高維的突出特征全部傳遞給輸出層,本文主要從池化操作方式以及S4層與C5層的連接方式入手,并針對花卉以及花瓣與手寫數(shù)字字符存在形態(tài)上的差異,在不考慮同一類別的花卉有很大的差異性以及圖像背景復(fù)雜的前提下[13],對原LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型進(jìn)行如下改進(jìn)和與文獻(xiàn)[11]不同的參數(shù)設(shè)置,以此為基礎(chǔ)給出新的訓(xùn)練算法:
(1)關(guān)于池化操作的改進(jìn):S2層的池化操作設(shè)置為均值池化(Avg-pooling),且S4層的池化操作設(shè)置為最大池化(Max-pooling);
(2)關(guān)于連接方式的改進(jìn):將C5層設(shè)置為全連接層,即將S4層與C5層之間的5×5卷積核去掉,使兩層的特征圖以全連接的方式相連。
(1)
其中,f為激活函數(shù),bj為偏置向量(bias),n表示S4層神經(jīng)元的個數(shù)。k表示C5層神經(jīng)元的個數(shù)。圖2為LeNet-5網(wǎng)絡(luò)拓?fù)鋱D。
圖2 LeNet-5網(wǎng)絡(luò)拓?fù)?/p>
(1)在F6層之后、輸出層之前使用Dropout正則化方法。
(2)將激活函數(shù)設(shè)置為ReLU激活函數(shù)
(2)
(3)算法:使用隨機(jī)梯度下降算法SGD(stochastic gradient descent)[14]更新權(quán)值參數(shù)。SGD算法原理公式
(3)
(4)
(5)
其中,h(α) 表示擬合函數(shù),J(α) 表示損失函數(shù),α=(α1,α2,…,αn) 表示網(wǎng)絡(luò)參數(shù)權(quán)值,yi表示第i個樣本的樣本值,m表示的是整個迭代進(jìn)行的總次數(shù),j表示網(wǎng)絡(luò)中參數(shù)的總數(shù)目,α′j表示更新后的網(wǎng)絡(luò)參數(shù)。
(4)分類器的確定:選用Softmax分類器。對于Output層,輸入x, 則有
(6)
其中,ω=(ω1,ω2,…,ωm)T表示權(quán)值,P計(jì)算的是輸入為j類別時的概率,設(shè)置輸出類別為17。
(1)S2層的均值池化操作,能夠使得上一層中的低層次細(xì)節(jié)特征可以充分或均勻地出現(xiàn)在下一層的特征圖中。S4層的最大值池化,可以保證C3層中更為突出的高層次特征傳遞給下一層(S4層)。
(2)將C5層設(shè)置為全連接層以后,圖像的高維特征通過全連接的方式傳遞給下一層,取得的識別效果更好。
(3)Dropout方法是卷積神經(jīng)網(wǎng)絡(luò)中經(jīng)典的正則化方法,實(shí)驗(yàn)中數(shù)據(jù)集并不是非常大,使用Dropout方法能有效減少過擬合現(xiàn)象。
(4)將激活函數(shù)替換為ReLU激活函數(shù)。使用傳統(tǒng)的Sigmoid激活函數(shù),需要預(yù)訓(xùn)練,否則會出現(xiàn)梯度消失無法收斂的問題。將激活函數(shù)替換為ReLU激活函數(shù)會使收斂速度更快[15]。
(5)隨機(jī)梯度下降算法SGD每次只隨機(jī)選擇一個樣本來更新模型參數(shù),因此每次的學(xué)習(xí)是非??焖俚?。
(6)由于本次實(shí)驗(yàn)輸出類別數(shù)為17,所以選擇Softmax多分類器。
改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置見表2,新網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。學(xué)習(xí)率設(shè)置:本文分別考察了學(xué)習(xí)率為0.001和0.01對識別率的影響,實(shí)驗(yàn)結(jié)果表明,在相同條件下,學(xué)習(xí)率設(shè)置為0.001時,識別率更高。因此學(xué)習(xí)率設(shè)置為0.001。
表2 新的LeNet-5網(wǎng)絡(luò)結(jié)構(gòu)
圖3 新的LeNet-5網(wǎng)絡(luò)結(jié)構(gòu)
數(shù)據(jù)集是包含17個類別的牛津花卉(Oxford-17 flo-wer)數(shù)據(jù)集,該數(shù)據(jù)集是由牛津大學(xué)Visual Geometry Group創(chuàng)建的。每個類有80幅圖像,總共有1360張圖像,本文選取其中1000張圖像作為訓(xùn)練樣本,200張作為測試樣本集。圖4是實(shí)驗(yàn)中部分花卉圖像。
圖4 部分彩色花卉圖像
圖像預(yù)處理一般是指對輸入的數(shù)字圖像進(jìn)行顏色空間轉(zhuǎn)換,高斯濾波等[16]。顏色是花卉圖像最顯著的特征之一,具有形狀和方向無關(guān)性,適合作為花卉種類識別的依據(jù)[17]。但是顏色會對花卉種類的識別造成一定的干擾,每類花的顏色,拍照時圖像的亮度都對花卉種類的識別產(chǎn)生較大的影響,彩色圖像存儲量大,處理不方便,需要將彩色圖像轉(zhuǎn)化為包含同樣信息量且處理過程更加簡單快速的灰度圖像[18,19]。
使用matlabR2016將收集到的圖像進(jìn)行預(yù)處理:先將所有圖像統(tǒng)一轉(zhuǎn)化為單通道的灰度圖像, 灰度級設(shè)置為8,并對數(shù)據(jù)集進(jìn)行批量人工標(biāo)號。其次,將圖像的分辨率統(tǒng)一轉(zhuǎn)化為28×28大小的分辨率,最后使用VS2013和Opencv3.1將圖像轉(zhuǎn)化為相應(yīng)的二進(jìn)制格式文件。圖5~圖7 表示部分灰度圖像、向日葵放大灰度圖像和識別錯誤圖像。
圖5 一些灰度圖像
圖6 向日葵的放大灰度
圖7 識別錯誤的圖片
硬件環(huán)境:
本次實(shí)驗(yàn)是在牛津花卉數(shù)據(jù)庫上進(jìn)行的實(shí)驗(yàn),考慮到數(shù)據(jù)量不是很高,以及網(wǎng)絡(luò)深度并沒有很大,所以實(shí)驗(yàn)數(shù)據(jù)放在單CPU上進(jìn)行處理,實(shí)驗(yàn)硬件環(huán)境見表3。
軟件安裝及配置:
實(shí)驗(yàn)中所用的深度學(xué)習(xí)框架是tensorFlow[20],編程語言是Python3.5.4,輔助軟件工具是matlabR2016,Opencv3.1和VS2013。
tensorFlow是一個非常強(qiáng)大的用來做大規(guī)模數(shù)值計(jì)算
表3 硬件環(huán)境
的庫。其所擅長的任務(wù)就是實(shí)現(xiàn)以及訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)。它已經(jīng)在大量移動設(shè)備上或者大規(guī)模分布式集群中使用,已經(jīng)經(jīng)過了實(shí)踐檢驗(yàn)。其分布式實(shí)現(xiàn)是基于圖計(jì)算,它將圖分割成多個子圖,每個計(jì)算實(shí)體作為圖中的一個計(jì)算節(jié)點(diǎn)[21]。本文最終得到的圖表則是應(yīng)用了tensorboard這一可視化工具。
(1)初始化卷積核,偏置向量(bias)。
(2)設(shè)置訓(xùn)練參數(shù),將學(xué)習(xí)率設(shè)置為0.001,批訓(xùn)練樣本數(shù)量batch設(shè)置為100,迭代次數(shù)epochs=2000,每次訓(xùn)練batch個樣本數(shù)量。每100次迭代輸出一次結(jié)果,最后輸出總識別率。
(3)輸入樣本,正向傳播和誤差反向傳播,用SGD更新權(quán)值參數(shù)。
(4)啟動tensorboard,借助谷歌瀏覽器打開相關(guān)網(wǎng)址,將訓(xùn)練過程可視化。
為了驗(yàn)證改進(jìn)后的新模型的可行性,從總樣本中不同種類的花瓣集選取了共100張圖片進(jìn)行檢驗(yàn)(即設(shè)置validation_size=100)。整個實(shí)驗(yàn),沒有使用GPU及CUDA加速,在單CPU上的訓(xùn)練時間是3.5小時左右。
改進(jìn)LeNet-5網(wǎng)絡(luò)模型部分實(shí)驗(yàn)輸出結(jié)果展示:
test Accuracy at step 0:0.16
test Accuracy at step 500:0.64
test Accuracy at step 1000:0.88
test Accuracy at step 1500:0.94
test accuracy 0.965
實(shí)驗(yàn)中,在原LeNet-5網(wǎng)絡(luò)模型上進(jìn)行訓(xùn)練,訓(xùn)練到第1000步的時候,識別正確率達(dá)到0.88,在迭代到1500步的時候,識別結(jié)果達(dá)到0.94,總體識別率為0.965,圖8為交叉熵(cross_entropy)變化曲線圖,識別正確率(accuracy_1)變化曲線如圖9所示。
圖8 改進(jìn)的LeNet-5神經(jīng)網(wǎng)絡(luò)模型交叉熵變化曲線
圖9 改進(jìn)的LeNet-5神經(jīng)網(wǎng)絡(luò)模型 識別正確率變化曲線
對于相同的樣本數(shù)據(jù)集,每個模型每100步記錄一次結(jié)果,總共記錄10次,對比結(jié)果如圖10所示,圖10中,橫軸step為迭代步數(shù),縱軸Accuracy為識別正確率。由此結(jié)果對比可以得出,改進(jìn)的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)比BP神經(jīng)網(wǎng)絡(luò)和原LeNet-5卷積神經(jīng)網(wǎng)絡(luò)具有更高的識別精度。
圖10 3種網(wǎng)絡(luò)模型對比結(jié)果
表4為在新的LeNet-5網(wǎng)絡(luò)中,設(shè)置不同學(xué)習(xí)率得到不同的識別率,由此結(jié)果可以看出,控制其它參數(shù)條件不變,調(diào)節(jié)學(xué)習(xí)率這項(xiàng)參數(shù),發(fā)現(xiàn),當(dāng)學(xué)習(xí)率設(shè)置為0.001時,識別率更高。表5為在新的LeNet-5網(wǎng)絡(luò)中其它參數(shù)設(shè)置不變的情況下,不同激活函數(shù)對識別率的影響。表6為在新的LeNet-5網(wǎng)絡(luò)中,使用Dropout正則化方法對識別率的影響,顯然,在其它參數(shù)設(shè)置不變的情況下,有無Dropout對識別正確率的影響比較大。表7為實(shí)驗(yàn)數(shù)據(jù)放在3種不同的網(wǎng)絡(luò)模型中得到的識別精度,顯然,改進(jìn)的LeNet-5網(wǎng)絡(luò)比其它兩種網(wǎng)絡(luò)模型對實(shí)驗(yàn)數(shù)據(jù)有更好的識別效果。
表4 不同學(xué)習(xí)率對應(yīng)識別率結(jié)果
表5 不同激活函數(shù)對應(yīng)識別率結(jié)果
表6 有無Dropout對識別率的影響
表7 3種網(wǎng)絡(luò)模型結(jié)果對比
本文在經(jīng)典的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型的基礎(chǔ)上,將S2層的池化操作設(shè)置為均值池化,且S4層的池化操作設(shè)置為最大池化,S4層與C5層的連接方式設(shè)置為全連接,得到一類新的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型,并將其應(yīng)用于花卉種類識別。實(shí)驗(yàn)結(jié)果表明,改進(jìn)的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型可以達(dá)到提高花卉分類識別率的目的。但同時存在如下需要進(jìn)一步改進(jìn)的問題:
(1)本文對圖像做了灰度化處理,沒有考慮顏色對識別精度的影響,顏色對于測試結(jié)果有何影響還尚未給出討論;
(2)是否還有更好的改進(jìn)方法或者模型,適合研究花卉種類識別的工作,使得識別效果更好,在下一步的工作中將繼續(xù)研究。