張力超,馬 蓉,張垚鑫
(石河子大學 機械電氣工程學院,新疆 石河子 832003)
早期的圖像識別與分類系統(tǒng)主要是基于用尺度不變特征變換(scale-invariant feature transform,SIFT)[1]和方向梯度直方圖(histogram of oriented gradients,HOG)[2]等特征提取方法進行特征提取,再將提取到的特征作為支持向量機[3]、Adaboost[4]等分類器的輸入來進行識別與分類。然而很多特征本質(zhì)上都是通過人對特定問題進行深入研究之后設計的,當問題較復雜的時候,特征的設計將十分困難。因此,這段時期的視覺識別與分類系統(tǒng)大多是針對某個或某幾個特定的識別任務,數(shù)據(jù)量一般不大,且泛化能力也較差。
卷積神經(jīng)網(wǎng)絡[5](convolutional neural network,CNN)是一種前饋的多層神經(jīng)網(wǎng)絡,其布局更接近于實際的生物神經(jīng)網(wǎng)絡。CNN不同于以往的機器學習方法,直接對圖像練數(shù)據(jù)進行學習,其輸入是圖像的像素值而非顯示特征。此外,CNN網(wǎng)絡采用一種共享權值的方式,即同一層的不同神經(jīng)元映射權值是相同的,極大降低了網(wǎng)絡中需要學習的參數(shù)量,降低了網(wǎng)絡的復雜性,使得網(wǎng)絡可以并行學習,這是卷積網(wǎng)絡的另一大優(yōu)勢[6]。因此,CNN在語音識別[7,8]和圖像處理[9,10]方面有著獨特的優(yōu)越性。
上世紀90年代,F(xiàn)acebook公司的LeCun基于卷積神經(jīng)網(wǎng)絡CNN這一特殊的深度學習,研發(fā)了一套命名為LeNet的手寫數(shù)字識別系統(tǒng),IEEE計算機學會為此給他頒發(fā)了著名的“神經(jīng)網(wǎng)絡先鋒獎”。但由于數(shù)據(jù)量和計算資源有限等原因,CNN在圖像識別領域經(jīng)歷了一段時期的蕭條,支持向量機和其它的一些更簡單的感知器模型則得到了更高的關注。然而隨著大數(shù)據(jù)時代的到來,GPU和分布式計算的出現(xiàn),計算機的計算能力得到了極大的加強,尤其是Krizhevsky等提出基于CNN的AlexNet結構模型在ImageNet競賽中以遠超第二名的成績刷新了image classification的記錄,一舉奠定了深度學習(deep learning)在機器學習中的地位,近年來其在手寫字體識別和人臉檢測等各種任務中出色的表現(xiàn)使得深度學習已成為互聯(lián)網(wǎng)巨頭競爭的一個焦點。
國內(nèi)目前也有一些基于CNN模型的識別與分類研究。曲景影等[11]在對衛(wèi)星遙感圖像中的目標進行分類時就采用了CNN模型進行分類。該文中對傳統(tǒng)的LeNet-5網(wǎng)絡模型進行了改進,將傳統(tǒng)模型中的激勵層Sigmoid函數(shù)改為ReLu函數(shù),提高了模型的運算效率并取得了不錯的分類精度。史天予等[12]則在傳統(tǒng)的LeNet-5網(wǎng)絡模型中的全連接層后面加入隨機Dropout層以提高神經(jīng)網(wǎng)絡的泛化能力。湯一平等[13]在對圖像進行一定預處理之后采用CNN模型實現(xiàn)了火炮全景圖的瑕疵病識別。本文擬基于LeNet-5模型構建改進的神經(jīng)網(wǎng)絡模型,通過對比實驗確定模型參數(shù),實現(xiàn)紅富士與紅元帥蘋果的自動分類。
LeNet-5是一種典型的用來識別手寫數(shù)字的卷積神經(jīng)網(wǎng)絡模型。LeNet-5共有7層網(wǎng)絡(不包括輸出層),每層都含有大量的可訓練的權重參數(shù)。經(jīng)典的LeNet-5模型的輸入數(shù)據(jù)先后經(jīng)過了卷積層-池化層-卷積層-全連接層-激勵層-全連接層-Soft Max層。其中最后一層的Soft Max是一種用于解決多分類問題的回歸模型,是logistic回歸模型在多分類問題上的一個推廣。
首先,由于LeNet-5模型最初是用于手寫識別,采用的是28×28的圖像。而本文的識別對象是紅富士與紅元帥蘋果,圖片內(nèi)容的復雜程度遠超過手寫數(shù)字,參考人臉識別系統(tǒng)[14]所采用的圖片大小80×80,本文嘗試將64×64像素作為改進的LeNet-5模型的輸入,由于輸入圖像為彩色圖像,因此其輸入格式為3×64×64。具體模型結構與原始LeNet-5對比如圖1所示。
圖1 改進的LeNet-5與原始模型對比
其次,由于本文中的初始輸入數(shù)據(jù)是一個3維數(shù)據(jù),而原始模型中處理的圖像是一維的黑白手寫圖像。因此本文改進的模型在原始LeNet-5模型全連接層之前加入了一個Flatten層,用來將輸入“壓平”,即把多維的輸入一維化,常用在從卷積層到全連接層的過渡。
再次,為增強模型的泛化能力,本文在原始LeNet-5模型全連接層之后加入了Dropout函數(shù)。Dropout是一種能夠提高神經(jīng)網(wǎng)絡泛化能力的學習方法,其操作是在訓練過程中將一部分的神經(jīng)元輸出設為0,在下一次訓練過程時再將之前保留下的值恢復,之后再次隨機選擇一部分神經(jīng)元并設其輸出為0,如此反復操作,以減弱神經(jīng)元節(jié)點間的聯(lián)合適應性。
最后,在激勵函數(shù)方面,本文采用的是LeakyReLU。傳統(tǒng)的LeNet-5,激勵層所使用的激勵函數(shù)是Sigmoid函數(shù),該函數(shù)計算量較大,且對于深層次的網(wǎng)絡結構,反向傳播時產(chǎn)生的梯度消失現(xiàn)象較明顯以至深層次的神經(jīng)網(wǎng)絡一般以修正線性單元(ReLU函數(shù))取而代之[15]。與Sigmoid函數(shù)相比,ReLU函數(shù)最主要的優(yōu)點就是易于優(yōu)化,并且由于其一半定義域中輸出為0,這使得網(wǎng)絡變得更加稀疏,有利于緩解過擬合;而另一半定義域輸出的梯度保持為1,這就意味著它的梯度對于學習來說將會更加有用。然而ReLU也存在一個弊端,就是當網(wǎng)絡進行第一次訓練時若權重為0以下時,根據(jù)ReLU的計算方式,之后的訓練將一直為0。為避免這種現(xiàn)象,本文采用LeakyReLU,這種特殊的ReLU,當神經(jīng)元不激活時仍會有一個小梯度的非零值輸出,從而避免可能出現(xiàn)的神經(jīng)元“死亡”現(xiàn)象。Sigmoid函數(shù)、ReLU函數(shù)、LeakyReLU函數(shù)的大致圖形,如圖2所示。
圖2 幾種激勵函數(shù)圖像
本實驗中視覺采集系統(tǒng)是由視覺采集箱、環(huán)形無影光源以及頂端固定的單目相機組成。實驗研究對象是在新疆石河子農(nóng)貿(mào)批發(fā)市場采購的紅富士蘋果和紅元帥蘋果各300個,每個蘋果進行3次拍照,每次拍照時將蘋果以果柄為軸翻轉大約120度,最終得到兩種蘋果各900張圖像樣本,將其中每種蘋果的600張圖像作為訓練樣本,300張圖像作為測試樣本,所有圖像尺寸歸一化為64×64。單個紅元帥與單個紅富士蘋果的3個面拍攝圖片,如圖3所示。
圖3 部分蘋果圖片
針對于CNN模型中的優(yōu)化器選取、卷積核大小、卷積層學習步長、卷積層的濾波器數(shù)量對網(wǎng)絡模型訓練的影響進行了研究。本研究中的參數(shù)是在圖1模型結構的基礎上進行的參數(shù)選取,同時卷積核大小等參數(shù)均采用LeNet的默認參數(shù),并將首層輸入改為3×64×64。在此基礎上,通過對比實驗,依次選擇出最佳的學習率、卷積核大小、卷積層學習步長、卷積層的濾波器數(shù)量,進而使蘋果的分類準確率達到最優(yōu)。
(1)優(yōu)化器選取
本研究中的實驗是基于Python平臺下的Keras庫進行編程的,模型的學習率選取最常用的0.01。原始的LeNet-5模型中采用的優(yōu)化器是隨機梯度下降的方法(SGD),本研究中分別采用SGD、ADAM、RMSProp進行了3組對比實驗,其中每組做10次實驗取平均值,實驗結果見表1,從結果可以看到ADAM取得了最佳的損失函數(shù)和對測試樣本的分類準確度,故本研究采取ADAM作為模型的優(yōu)化器。
表1 優(yōu)化器選取對比實驗結果
(2)卷積核大小的選取
在學習率為0.01,優(yōu)化器選用ADAM的基礎上,分別進行了6組對比實驗,如圖4所示,橫坐標表示第一個卷積核大小,每個橫坐標對應的5個柱狀圖分別對應5×5至25×25,以不同顏色深度表示,縱坐標表示平均錯誤率。通過圖中結果可以發(fā)現(xiàn),當2個卷積核分別為17×17和21×21時模型的平均錯誤率最低。
圖4 卷積核大小選取對比實驗結果
(3)卷積層學習步長的選取
在前面實驗確定的參數(shù)的基礎上,分別選取步長為(1,1),(2,2),(3,3),(4,4)做4組對比實驗。實驗結果如圖5所示,橫坐標表示第一個卷積層學習步長,不同顏色的柱狀條代表第二個卷積層的學習步長。通過結果可以發(fā)現(xiàn),當?shù)谝粋€卷積層學習步長為(2,2),第二個卷積層學習步長為(1,1)時,模型的平均錯誤率最低。同時可以看到一個大致的趨勢是,在LeNet-5的模型中第二個卷積層中的學習步長會隨著步長的增加降低分類準確度。
圖5 學習步長對比實驗結果
(4)卷積層的濾波器數(shù)量選取
鑒于LeNet-5默認濾波器數(shù)量分別為6和16,本研究中分別選取4、6、8和12、16、20作為濾波器數(shù)量進行了3組實驗,實驗結果如圖6所示,橫坐標表示第一個卷積層的濾波器數(shù)量,不同顏色的柱狀條表示第二個卷積層的濾波器數(shù)量。實驗結果表明當濾波器數(shù)量分別為6和20時平均錯誤率最低。
圖6 濾波器數(shù)量選取對比實驗結果
(5)全連接層神經(jīng)元個數(shù)選取
本研究中的模型含有2個全連接層,而第二個全連接層受到所分類個數(shù)的影響只能選2,因此對第一個全連接層選取不同個數(shù)做了對比實驗。實驗數(shù)據(jù)對神經(jīng)元個數(shù)分別為100、200、300、400、500做了5組實驗,每組實驗進行了10次,將每組10次實驗得到數(shù)據(jù)的平均值作為表2的數(shù)據(jù)。由下表可以看出當神經(jīng)元數(shù)量為200時具有最高的測試準確度。
綜上所述,本文提出的基于改進LeNet-5模型的蘋果分類器最優(yōu)參數(shù)為:學習率0.01,ADAM優(yōu)化器,第一第二卷積層的卷積核尺寸分別為21×21和17×17,學習步長分別為(2,2)和(1,1),濾波器數(shù)量分別為6和20,第一全連接層的神經(jīng)元個數(shù)為200,第二全連接層神經(jīng)元個數(shù)為2,此時可達到最高的測試集分類精度95.31%。
表2 全連接層神經(jīng)元個數(shù)選取實驗結果
為驗證本文算法的有效性,將目前比較主流的兩種SVM方法與本文方法進行了對比??偣策M行10次實驗,每次實驗從每類蘋果的900張圖片中隨機選出300張作為測試樣本,其它作為訓練樣本。相比于CNN方法,SVM的方法的輸入是蘋果的特征而非圖像本身,在經(jīng)過圖像處理后需要經(jīng)過一定的計算得到所需要的特征參數(shù)。結合相關文獻[16-18]中介紹的特征參數(shù)計算方式,本文對比了目前主流的兩種SVM方法。其中SVM+HOG表示采用方向梯度直方圖方法提取特征,以9個方向的VL_feat方法進行特征提取,最初采用64×64像素的圖片進行實驗,但實驗結果幾乎不能夠用來進行紅富士與紅元帥兩種蘋果的分類,經(jīng)多次嘗試,最終以256×256圖片大小進行實驗,以8×8像素大小組成一個Cell,再以8×8個Cell組成一個block,并將此結果與本文CNN進行比較。SVM+G表示采用matlab自帶的梯度函數(shù)方法提取特征,參數(shù)默認,圖片大小為256×256。兩種方法均用LibSVM工具進行SVM訓練與分類測試,svm類型為C-SVM,核函數(shù)選擇RBF核,懲罰系數(shù)默認選擇1,進行10折交叉驗證,終止準則中可允許偏差設為0.001,學習率0.01。實驗結果見表3。
實驗結果表明,在測試準確度方面,CNN方法相比于其它算法具有更高的分類準確度,CNN方法相對于其它算法有比較明顯的測試準確度,分析其原因是CNN網(wǎng)絡不需要人為建立特征,而是由機器自主學習特征,相比于SVM這類可以看成是只有一個隱含層的網(wǎng)絡具有更好的泛化能力。在測試階段耗時上,CNN方法的輸入為圖像數(shù)據(jù)本身,不像SVM需要對圖像數(shù)據(jù)進行一系列的計算求得特征參數(shù),因此其運行效率明顯的優(yōu)于其它方法。但需要注意的是神經(jīng)網(wǎng)絡的訓練時間,神經(jīng)網(wǎng)絡的訓練時間與網(wǎng)絡中需要進行學習的參數(shù)數(shù)量有直接關系[19]。本文算法的訓練耗時優(yōu)于SVM的方法主要是由于LeNet-5模型本身層數(shù)不高,同時經(jīng)過對比實驗得出的最佳參數(shù)中,全連接層神經(jīng)元個數(shù)也并不多,因此在訓練時間上相比SVM更優(yōu)。由此可以得出,經(jīng)過合理改進的LeNet-5模型,可以適用于對紅富士以及紅元帥兩種蘋果的分類。
表3 幾種方法的測試準確度
本文提出了一種基于LeNet-5改進的CNN模型進行紅富士蘋果與紅元帥蘋果分類。由于CNN模型不同于以往的模式識別方式,減少了人工手動建立并提取特征的難度,這是采用CNN網(wǎng)絡進行分類的好處之一,此外在數(shù)據(jù)量龐大時這種分類器在時間效率和泛化能力方面也具有明顯的優(yōu)勢。
本文在LeNet-5模型的基礎上進行了改進,將最初適用于1維黑白手寫數(shù)字識別的CNN模型改進成一種可以用于處理彩色蘋果圖片的模型。通過實驗,確定了最佳模型參數(shù),構建了基于改進LeNet-5模型的蘋果分類器,并與SVM+HOG和SVM+G進行了分類實驗對比,實驗結果表明CNN方法相比于SVM方法在測試精度和訓練時間上都有較明顯的優(yōu)勢,論證了本文方法的有效性。在下一步的工作中,將繼續(xù)對分類模型進行改進,以進一步提高蘋果分類的精度,并嘗試將其應用于更多的分類領域中。