焦方圓
申金媛1
郝同盟2
(1. 鄭州大學,河南 鄭州 450001;2. 華北水利水電大學,河南 鄭州 450045)
煙葉是卷煙工業(yè)的重要原料,煙葉分級[1-3]是煙草公司產(chǎn)業(yè)運作中的一個至關(guān)重要的環(huán)節(jié),關(guān)乎種煙農(nóng)戶和行業(yè)工商企業(yè)利益,影響卷煙原料的高效利用。現(xiàn)行烤煙評級標準[4]主要是基于人工經(jīng)驗,具有一定的主觀性。隨著煙草產(chǎn)品質(zhì)量[5]的不斷提高和圖像處理、人工智能等技術(shù)的快速發(fā)展,越來越多的學者研究將煙葉的智能識別技術(shù)代替人工的方法[6]。
目前常用的煙葉分級方法主要分為傳統(tǒng)方法和深度學習方法。傳統(tǒng)的特征提取方法是進行圖片處理的常用方式,在煙葉分級中,通過提取煙葉圖片的顏色、脈絡(luò)等相關(guān)的顯式特征,再根據(jù)人工經(jīng)驗來判斷煙葉的等級。常用的傳統(tǒng)分級方法有支持向量機、粒子群算法、遺傳算法等。但是傳統(tǒng)方法無法對圖片的深度特征進行提取,存在分級準確率和分級效率不高的問題。針對傳統(tǒng)方法存在的不足,文獻[7]在主成分分析、遺傳算法和支持向量機的基礎(chǔ)上提出了一種PCA-GA-SVM煙葉分級方法,在煙葉分級效率方面有一定的提高;文獻[8]通過近紅外光譜技術(shù),并結(jié)合粒子群—支持向量機(PSO-SVM)算法實現(xiàn)了煙葉更深層特征的提??;文獻[9]從煙葉圖像中提取用于分類定級的關(guān)鍵信息,實現(xiàn)了煙葉的智能識別和分級,這種特征提取的技術(shù)對煙葉分級效率和準確性都有一定提高;文獻[10]通過手持式近紅外光譜儀和粒子群優(yōu)化—極限學習機算法的組合,直接從煙草葉中無損地收集訓練樣品的光譜數(shù)據(jù),利用粒子群優(yōu)化—極限學習機算法建立了不同類別的訓練模型,并使用開發(fā)的模型來預(yù)測測試樣本的類別,為煙葉分級提供了一種新穎的分類方法。
由于卷積神經(jīng)網(wǎng)絡(luò)能夠快速提取圖片更深層次的特征,且具有良好的非線性特性,因此采用深度學習的方式對煙葉進行分級的研究較多。常用的深度學習煙葉分級模型有VGG16網(wǎng)絡(luò)、殘差網(wǎng)絡(luò)、AlexNet網(wǎng)絡(luò)等。文獻[11]在經(jīng)典AlexNet網(wǎng)絡(luò)的基礎(chǔ)上提出了一種全卷積AlexNet網(wǎng)絡(luò)模型, 增加了模型的學習能力,提高了煙葉分級的準確性;文獻[12]提出了用訓練好的煙葉分組模型遷移學習煙葉分級的低維深層特征表達,解決了煙葉分級過程中訓練樣本少,準確率不高的問題;文獻[13]在inception V3網(wǎng)絡(luò)模型的基礎(chǔ)上提出了一種基于深度學習的煙葉分級算法,改善了人工煙葉分級的差異性大、合格率低等現(xiàn)象。但以上研究仍存在煙葉分級準確率不夠高、分級種類不夠多的問題。
經(jīng)典VGG16網(wǎng)絡(luò)模型包括卷積層和全連接層,卷積層由5個block塊組成,結(jié)構(gòu)規(guī)整簡潔,沒有繁多復(fù)雜的超參數(shù),一方面有效控制了網(wǎng)絡(luò)模型的計算量,另一方面有利于對模型進行分解。與AlexNet和ZF-Net網(wǎng)絡(luò)相比,VGG16網(wǎng)絡(luò)的卷積核更小,通過多層非線性層增加網(wǎng)絡(luò)深度,因此對于給定的感受野,可以提取更多的特征信息,采用堆積的小卷積核可以學習更復(fù)雜的模式,增加了模型的表達能力,有利于圖片的特征提取與分類。鑒于以上特點,文章擬以VGG16網(wǎng)絡(luò)模型為原型來改進深度學習算法。針對煙葉分級準確率不高的問題,主要從卷積模塊和激活函數(shù)兩部分對網(wǎng)絡(luò)結(jié)構(gòu)進行改進;以41種等級的煙葉樣本進行分類,通過增強數(shù)據(jù)的方式來增強網(wǎng)絡(luò)的識別能力;并將試驗改進的算法分別與原始模型和傳統(tǒng)特征提取的方式進行結(jié)果對比,以此來驗證試驗算法在煙葉分級準確率方面表現(xiàn)出的優(yōu)越性。
為了增強模型的健壯性,需對現(xiàn)有的數(shù)據(jù)集進行平移、翻轉(zhuǎn)、旋轉(zhuǎn)、縮放、亮度增強等操作[14],以生成新的多樣化圖片來參與訓練或測試。為了保持樣本的原始性和真實性,使用Python的PIL模塊,通過將圖片旋轉(zhuǎn)實現(xiàn)圖像增強技術(shù)。一般情況下,圖像的原點位置在左上角,令圖像的高度為H,寬度為W,原始點為(x0,y0),變換后的點為(x1,y1),則變換公式為:
(1)
試驗使用的煙葉由平頂山煙草公司提供,采集的煙草透射圖像經(jīng)增強后的部分圖片示例如圖1所示。
圖1 部分圖像增強后的圖片F(xiàn)igure 1 Picture of part of the image after enhancement
由于采集到的煙葉圖片背景含有大量噪聲和雜質(zhì)[15],需對樣本集進行背景分割和去噪。使用閾值迭代法進行背景分割,具體步驟如下:
(1) 計算圖像的灰度值,并遍歷出圖像灰度的最大值和最小值,分別記為Zmax和Zmin,令初始閾值T0=(Zmax+Zmin)/2。
(2) 根據(jù)提出的閾值TK確定圖像的前景和背景,分別求出兩者灰度的平均值Z0和ZB。
(3) 求出新閾值TK+1=(Z0+ZB)/2。
(4) 若滿足關(guān)系式TK=TK+1,則所得結(jié)果即閾值;否則返回第(2)步。
背景分割后再進行去除噪聲處理,使用卷積濾波的方式進行去噪,其具體步驟如下:
(1) 用一個3×3的矩陣在圖像中由上到下,由左到右進行卷積,邊緣部分進行補零。
(2) 求出對應(yīng)像素的灰度值,并將灰度值按從小到大的順序排序。
(3) 將第5個像素的結(jié)果賦給對應(yīng)模板中心位置。
卷積濾波后的圖像如圖2所示。
圖2 預(yù)處理后的圖片F(xiàn)igure 2 Picture after preprocessing
CNN網(wǎng)絡(luò)結(jié)構(gòu)主要由輸入層、卷積層、ReLU層、池化層和全連接層等構(gòu)成,根據(jù)不同的應(yīng)用場景可以將這些層疊加不同的深度,從而構(gòu)建一個完整的卷積神經(jīng)網(wǎng)絡(luò)。通常將卷積層與ReLU層并稱為卷積層,因此在卷積層經(jīng)卷積操作后,需通過激活函數(shù)來增強網(wǎng)絡(luò)的非線性建模能力。一般來說,卷積層和全連接層(CONV/FC)對輸入執(zhí)行變換操作時,不僅會用到激活函數(shù),還會用到較多參數(shù),即神經(jīng)元的權(quán)值w和偏差b;而ReLU層和池化層則是進行一個固定不變的函數(shù)操作。隨著梯度的下降,對卷積層和全連接層中的參數(shù)進行訓練,使卷積神經(jīng)網(wǎng)絡(luò)計算出的分類分數(shù)對應(yīng)訓練集中每幅圖像的標簽[16]。
如圖3所示,原始VGG16的輸入被設(shè)置為224×244大小的RGB圖像,網(wǎng)絡(luò)對輸入圖像計算RGB均值,然后將圖像作為輸入傳入VGG16卷積網(wǎng)絡(luò)。經(jīng)典VGG16網(wǎng)絡(luò)模型包括卷積層和全連接層,卷積層包括5個block塊,卷積核大小為3×3,卷積層步長設(shè)置為1。池化操作采用最大池化的方式,池化單元尺寸為2×2。激活函數(shù)為ReLU函數(shù)。最后通過3層全連接層完成維度向量的轉(zhuǎn)換。
圖3 VGG16網(wǎng)絡(luò)原理圖Figure 3 VGG16 network principle diagram
傳統(tǒng)的卷積過程是卷積核在二維輸入數(shù)據(jù)上掃描,每次掃描的面積與卷積核的尺寸大小相同,并將對應(yīng)元素加權(quán)求和(見圖4)。
圖4 傳統(tǒng)CNN卷積Figure 4 Traditional CNN convolution
在深度學習網(wǎng)絡(luò)中,為了進一步抽取更高階的特征,需在卷積操作后以池化的方式進行下采樣[17],而下采樣的同時也忽略了一些特征信息,大量使用池化操作會損失部分圖像特征,不利于煙葉等級的識別。
為避免上述信息缺失的問題,提出將空洞卷積代替block中傳統(tǒng)卷積的方法。假設(shè)空洞卷積的卷積核大小為k,空洞數(shù)為d,其等效卷積核大小k′,則:
k′=k+(k-1)×d-1。
(2)
當前層的感受野:
(3)
RFi+1=RFi+(k-1)×Si,
(4)
式中:
Si——除當前層外前面所有層的步長的乘積;
RFi+1——當前層的感受野;
RFi——上一層的感受野;
k′——卷積層中卷積核的大小。
空洞卷積的具體工作過程如圖5所示。
圖5 空洞卷積Figure 5 Convolution with holes
假設(shè)空洞數(shù)量為d,則在一定的像素區(qū)域中,每隔d個像素對像素點進行采樣,然后再將采樣點與卷積核進行卷積,故在不增大卷積核尺寸的同時擴大了感受野,避免了因池化帶來的特征信息損失,且保持像素的相對空間位置不變。
傳統(tǒng)的VGG16網(wǎng)絡(luò)的激活函數(shù)采用ReLU函數(shù),其函數(shù)曲線如圖6所示。
由圖6可知,當x<0時,ReLU硬飽和,其函數(shù)值為0,當x>0時,則不存在飽和問題。因此,ReLU函數(shù)能夠在x>0時保持梯度不衰減,有效緩解了梯度消失的問題。這使得能夠直接以監(jiān)督的方式訓練網(wǎng)絡(luò)模型,而無需依賴無監(jiān)督的逐層預(yù)訓練。樣本集訓練過程中,可能存在部分輸入落入硬飽和區(qū)的情況,這將導致無法更新對應(yīng)權(quán)重。這種現(xiàn)象被稱為“神經(jīng)元死亡”。與sigmoid類似,ReLU的輸出均值也>0,對于網(wǎng)絡(luò)的收斂性而言,偏移現(xiàn)象和神經(jīng)元死亡都有著重要影響。
圖6 ReLU激活函數(shù)曲線Figure 6 ReLU activation function curve
針對x<0的硬飽和問題,文章對ReLU函數(shù)作出相應(yīng)的改變,將ReLU激活函數(shù)改為Leaky_relu,其數(shù)學表達式為:
(5)
式中:
a——梯度值,也可以作為一個參數(shù)來學習,一般初始化α為0.25,不采用正則。其函數(shù)曲線如圖7所示。
由圖7可知,Leaky_relu函數(shù)保留了x<0時的梯度,這樣既修正了數(shù)據(jù)分布,又能保證網(wǎng)絡(luò)中相應(yīng)權(quán)重的更新,避免了負軸信息丟失。Leaky_relu函數(shù)的分布特點決定了其以下特點:
圖7 Leaky_relu激活函數(shù)曲線Figure 7 Leaky_relu activation function curve
(1) 神經(jīng)元不會出現(xiàn)死亡的情況。
(2) 對于所有的輸入,不管是大于等于0還是小于0,神經(jīng)元不會出現(xiàn)飽和現(xiàn)象。
(3) 由于Leaky_relu線性、非飽和的形式,在梯度下降時能夠快速收斂。
(4) 由于Leaky_relu函數(shù)只有線性關(guān)系,不需要指數(shù)的計算,因此計算速度會有所增加,不管在前向傳播還是反向傳播,計算速度均比sigmoid和tanh快。
試驗使用的原始煙葉數(shù)據(jù)集有1 498張,共41種等級,通過對原始數(shù)據(jù)進行±5°的旋轉(zhuǎn)增強,數(shù)據(jù)集擴充為4 494張,其中3 371張煙葉圖片作為訓練集,1 123張煙葉圖片作為測試集。
使用Pycharm工具,運用keras、tensorflow等框架,對數(shù)據(jù)集進行結(jié)果驗證,其詳細參數(shù)信息見表1,試驗結(jié)果見圖8。
表1 試驗的詳細參數(shù)Table 1 Detailed parameters of theexperiment
由圖8可知,改進后算法的準確率收斂速度較快,分級準確率更高;原始VGG16網(wǎng)絡(luò)模型的準確率為88.02%,改進后算法的分級準確率達到95.89%,提高了7.87%。
圖8 原始VGG16網(wǎng)絡(luò)與改進算法的分級準確率
由圖9可知,算法改進后的損失率收斂速度較快,且損失率更??;原始VGG16網(wǎng)絡(luò)模型的損失率為0.39,算法改進后的損失率為0.13,算法改進后損失率有所降低。
圖9 原始VGG16網(wǎng)絡(luò)與改進算法的分級損失率
由表2可知,改進模型的分級準確率更高,最終的損失率更小,且試驗改進的模型訓練過程中更加穩(wěn)定,收斂速度較快。
表2 不同算法的試驗結(jié)果Table 2 Experimental results of different algorithms
值得說明的是,使用不同性能的計算機,計算速度和計算時間有很大的差別。試驗所用計算機的算力為7.5,通過GPU-GTX1650來計算。從運算時間上來看,與VGG16算法相比,改進算法沒有明顯的優(yōu)勢,但比傳統(tǒng)SVM算法的速度稍快;從準確率上來看,改進算法的準確率均優(yōu)于SVM和原始VGG16算法,且損失率有所減小,與文獻[12]中的CNN算法相比,試驗算法的分級準確率仍略高一些,且識別了更多的煙葉等級。因此試驗改進算法具有較好的煙葉預(yù)測與分類性能。
為了考察試驗改進模型的預(yù)測能力,將改進算法的訓練結(jié)果與測試結(jié)果進行對比,結(jié)果如圖10所示。
圖10 試驗改進算法的訓練與測試結(jié)果對比
由圖10可知,當?shù)螖?shù)≤21次時,測試曲線波動較大,而訓練曲線穩(wěn)步上升,但從第21次之后,測試曲線開始快速收斂,從整體上來看預(yù)測曲線與訓練曲線趨勢相同,且能夠與訓練曲線收斂一致,表明模型有較好的預(yù)測能力。
文章從經(jīng)典VGG16網(wǎng)絡(luò)出發(fā),自定義搭建卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),將空洞卷積技術(shù)運用到網(wǎng)絡(luò)中,在不增大卷積核尺寸的同時擴大感受野,避免了因池化帶來的特征信息損失,并通過改變激活函數(shù)來提高算法的泛化性和魯棒性,使用煙葉數(shù)據(jù)集分類的層次結(jié)構(gòu)來增強從各種深度CNN架構(gòu)獲得的預(yù)測的一致性。結(jié)果表明,與傳統(tǒng)SVM算法、原始VGG16網(wǎng)絡(luò)以及文獻[12]中的CNN算法相比,試驗算法在分級準確率和損失率上有更好的優(yōu)越性。但試驗算法并不能考慮到煙葉內(nèi)部的化學特征對煙葉分級的影響,后續(xù)將通過多模態(tài)數(shù)據(jù)融合或者進一步地優(yōu)化網(wǎng)絡(luò)模型,來實現(xiàn)煙葉分級準確率和分級速度的進一步提升。