焦方圓
申金媛1
郝同盟2
(1. 鄭州大學,河南 鄭州 450001;2. 華北水利水電大學,河南 鄭州 450045)
煙葉是卷煙工業的重要原料,煙葉分級[1-3]是煙草公司產業運作中的一個至關重要的環節,關乎種煙農戶和行業工商企業利益,影響卷煙原料的高效利用。現行烤煙評級標準[4]主要是基于人工經驗,具有一定的主觀性。隨著煙草產品質量[5]的不斷提高和圖像處理、人工智能等技術的快速發展,越來越多的學者研究將煙葉的智能識別技術代替人工的方法[6]。
目前常用的煙葉分級方法主要分為傳統方法和深度學習方法。傳統的特征提取方法是進行圖片處理的常用方式,在煙葉分級中,通過提取煙葉圖片的顏色、脈絡等相關的顯式特征,再根據人工經驗來判斷煙葉的等級。常用的傳統分級方法有支持向量機、粒子群算法、遺傳算法等。但是傳統方法無法對圖片的深度特征進行提取,存在分級準確率和分級效率不高的問題。針對傳統方法存在的不足,文獻[7]在主成分分析、遺傳算法和支持向量機的基礎上提出了一種PCA-GA-SVM煙葉分級方法,在煙葉分級效率方面有一定的提高;文獻[8]通過近紅外光譜技術,并結合粒子群—支持向量機(PSO-SVM)算法實現了煙葉更深層特征的提??;文獻[9]從煙葉圖像中提取用于分類定級的關鍵信息,實現了煙葉的智能識別和分級,這種特征提取的技術對煙葉分級效率和準確性都有一定提高;文獻[10]通過手持式近紅外光譜儀和粒子群優化—極限學習機算法的組合,直接從煙草葉中無損地收集訓練樣品的光譜數據,利用粒子群優化—極限學習機算法建立了不同類別的訓練模型,并使用開發的模型來預測測試樣本的類別,為煙葉分級提供了一種新穎的分類方法。
由于卷積神經網絡能夠快速提取圖片更深層次的特征,且具有良好的非線性特性,因此采用深度學習的方式對煙葉進行分級的研究較多。常用的深度學習煙葉分級模型有VGG16網絡、殘差網絡、AlexNet網絡等。文獻[11]在經典AlexNet網絡的基礎上提出了一種全卷積AlexNet網絡模型, 增加了模型的學習能力,提高了煙葉分級的準確性;文獻[12]提出了用訓練好的煙葉分組模型遷移學習煙葉分級的低維深層特征表達,解決了煙葉分級過程中訓練樣本少,準確率不高的問題;文獻[13]在inception V3網絡模型的基礎上提出了一種基于深度學習的煙葉分級算法,改善了人工煙葉分級的差異性大、合格率低等現象。但以上研究仍存在煙葉分級準確率不夠高、分級種類不夠多的問題。
經典VGG16網絡模型包括卷積層和全連接層,卷積層由5個block塊組成,結構規整簡潔,沒有繁多復雜的超參數,一方面有效控制了網絡模型的計算量,另一方面有利于對模型進行分解。與AlexNet和ZF-Net網絡相比,VGG16網絡的卷積核更小,通過多層非線性層增加網絡深度,因此對于給定的感受野,可以提取更多的特征信息,采用堆積的小卷積核可以學習更復雜的模式,增加了模型的表達能力,有利于圖片的特征提取與分類。鑒于以上特點,文章擬以VGG16網絡模型為原型來改進深度學習算法。針對煙葉分級準確率不高的問題,主要從卷積模塊和激活函數兩部分對網絡結構進行改進;以41種等級的煙葉樣本進行分類,通過增強數據的方式來增強網絡的識別能力;并將試驗改進的算法分別與原始模型和傳統特征提取的方式進行結果對比,以此來驗證試驗算法在煙葉分級準確率方面表現出的優越性。
為了增強模型的健壯性,需對現有的數據集進行平移、翻轉、旋轉、縮放、亮度增強等操作[14],以生成新的多樣化圖片來參與訓練或測試。為了保持樣本的原始性和真實性,使用Python的PIL模塊,通過將圖片旋轉實現圖像增強技術。一般情況下,圖像的原點位置在左上角,令圖像的高度為H,寬度為W,原始點為(x0,y0),變換后的點為(x1,y1),則變換公式為:
(1)
試驗使用的煙葉由平頂山煙草公司提供,采集的煙草透射圖像經增強后的部分圖片示例如圖1所示。

圖1 部分圖像增強后的圖片Figure 1 Picture of part of the image after enhancement
由于采集到的煙葉圖片背景含有大量噪聲和雜質[15],需對樣本集進行背景分割和去噪。使用閾值迭代法進行背景分割,具體步驟如下:
(1) 計算圖像的灰度值,并遍歷出圖像灰度的最大值和最小值,分別記為Zmax和Zmin,令初始閾值T0=(Zmax+Zmin)/2。
(2) 根據提出的閾值TK確定圖像的前景和背景,分別求出兩者灰度的平均值Z0和ZB。
(3) 求出新閾值TK+1=(Z0+ZB)/2。
(4) 若滿足關系式TK=TK+1,則所得結果即閾值;否則返回第(2)步。
背景分割后再進行去除噪聲處理,使用卷積濾波的方式進行去噪,其具體步驟如下:
(1) 用一個3×3的矩陣在圖像中由上到下,由左到右進行卷積,邊緣部分進行補零。
(2) 求出對應像素的灰度值,并將灰度值按從小到大的順序排序。
(3) 將第5個像素的結果賦給對應模板中心位置。
卷積濾波后的圖像如圖2所示。

圖2 預處理后的圖片Figure 2 Picture after preprocessing
CNN網絡結構主要由輸入層、卷積層、ReLU層、池化層和全連接層等構成,根據不同的應用場景可以將這些層疊加不同的深度,從而構建一個完整的卷積神經網絡。通常將卷積層與ReLU層并稱為卷積層,因此在卷積層經卷積操作后,需通過激活函數來增強網絡的非線性建模能力。一般來說,卷積層和全連接層(CONV/FC)對輸入執行變換操作時,不僅會用到激活函數,還會用到較多參數,即神經元的權值w和偏差b;而ReLU層和池化層則是進行一個固定不變的函數操作。隨著梯度的下降,對卷積層和全連接層中的參數進行訓練,使卷積神經網絡計算出的分類分數對應訓練集中每幅圖像的標簽[16]。
如圖3所示,原始VGG16的輸入被設置為224×244大小的RGB圖像,網絡對輸入圖像計算RGB均值,然后將圖像作為輸入傳入VGG16卷積網絡。經典VGG16網絡模型包括卷積層和全連接層,卷積層包括5個block塊,卷積核大小為3×3,卷積層步長設置為1。池化操作采用最大池化的方式,池化單元尺寸為2×2。激活函數為ReLU函數。最后通過3層全連接層完成維度向量的轉換。

圖3 VGG16網絡原理圖Figure 3 VGG16 network principle diagram
傳統的卷積過程是卷積核在二維輸入數據上掃描,每次掃描的面積與卷積核的尺寸大小相同,并將對應元素加權求和(見圖4)。

圖4 傳統CNN卷積Figure 4 Traditional CNN convolution
在深度學習網絡中,為了進一步抽取更高階的特征,需在卷積操作后以池化的方式進行下采樣[17],而下采樣的同時也忽略了一些特征信息,大量使用池化操作會損失部分圖像特征,不利于煙葉等級的識別。
為避免上述信息缺失的問題,提出將空洞卷積代替block中傳統卷積的方法。假設空洞卷積的卷積核大小為k,空洞數為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
假設空洞數量為d,則在一定的像素區域中,每隔d個像素對像素點進行采樣,然后再將采樣點與卷積核進行卷積,故在不增大卷積核尺寸的同時擴大了感受野,避免了因池化帶來的特征信息損失,且保持像素的相對空間位置不變。
傳統的VGG16網絡的激活函數采用ReLU函數,其函數曲線如圖6所示。
由圖6可知,當x<0時,ReLU硬飽和,其函數值為0,當x>0時,則不存在飽和問題。因此,ReLU函數能夠在x>0時保持梯度不衰減,有效緩解了梯度消失的問題。這使得能夠直接以監督的方式訓練網絡模型,而無需依賴無監督的逐層預訓練。樣本集訓練過程中,可能存在部分輸入落入硬飽和區的情況,這將導致無法更新對應權重。這種現象被稱為“神經元死亡”。與sigmoid類似,ReLU的輸出均值也>0,對于網絡的收斂性而言,偏移現象和神經元死亡都有著重要影響。

圖6 ReLU激活函數曲線Figure 6 ReLU activation function curve
針對x<0的硬飽和問題,文章對ReLU函數作出相應的改變,將ReLU激活函數改為Leaky_relu,其數學表達式為:

(5)
式中:
a——梯度值,也可以作為一個參數來學習,一般初始化α為0.25,不采用正則。其函數曲線如圖7所示。
由圖7可知,Leaky_relu函數保留了x<0時的梯度,這樣既修正了數據分布,又能保證網絡中相應權重的更新,避免了負軸信息丟失。Leaky_relu函數的分布特點決定了其以下特點:

圖7 Leaky_relu激活函數曲線Figure 7 Leaky_relu activation function curve
(1) 神經元不會出現死亡的情況。
(2) 對于所有的輸入,不管是大于等于0還是小于0,神經元不會出現飽和現象。
(3) 由于Leaky_relu線性、非飽和的形式,在梯度下降時能夠快速收斂。
(4) 由于Leaky_relu函數只有線性關系,不需要指數的計算,因此計算速度會有所增加,不管在前向傳播還是反向傳播,計算速度均比sigmoid和tanh快。
試驗使用的原始煙葉數據集有1 498張,共41種等級,通過對原始數據進行±5°的旋轉增強,數據集擴充為4 494張,其中3 371張煙葉圖片作為訓練集,1 123張煙葉圖片作為測試集。
使用Pycharm工具,運用keras、tensorflow等框架,對數據集進行結果驗證,其詳細參數信息見表1,試驗結果見圖8。

表1 試驗的詳細參數Table 1 Detailed parameters of theexperiment
由圖8可知,改進后算法的準確率收斂速度較快,分級準確率更高;原始VGG16網絡模型的準確率為88.02%,改進后算法的分級準確率達到95.89%,提高了7.87%。

圖8 原始VGG16網絡與改進算法的分級準確率
由圖9可知,算法改進后的損失率收斂速度較快,且損失率更??;原始VGG16網絡模型的損失率為0.39,算法改進后的損失率為0.13,算法改進后損失率有所降低。

圖9 原始VGG16網絡與改進算法的分級損失率
由表2可知,改進模型的分級準確率更高,最終的損失率更小,且試驗改進的模型訓練過程中更加穩定,收斂速度較快。

表2 不同算法的試驗結果Table 2 Experimental results of different algorithms
值得說明的是,使用不同性能的計算機,計算速度和計算時間有很大的差別。試驗所用計算機的算力為7.5,通過GPU-GTX1650來計算。從運算時間上來看,與VGG16算法相比,改進算法沒有明顯的優勢,但比傳統SVM算法的速度稍快;從準確率上來看,改進算法的準確率均優于SVM和原始VGG16算法,且損失率有所減小,與文獻[12]中的CNN算法相比,試驗算法的分級準確率仍略高一些,且識別了更多的煙葉等級。因此試驗改進算法具有較好的煙葉預測與分類性能。
為了考察試驗改進模型的預測能力,將改進算法的訓練結果與測試結果進行對比,結果如圖10所示。

圖10 試驗改進算法的訓練與測試結果對比
由圖10可知,當迭代次數≤21次時,測試曲線波動較大,而訓練曲線穩步上升,但從第21次之后,測試曲線開始快速收斂,從整體上來看預測曲線與訓練曲線趨勢相同,且能夠與訓練曲線收斂一致,表明模型有較好的預測能力。
文章從經典VGG16網絡出發,自定義搭建卷積神經網絡結構,將空洞卷積技術運用到網絡中,在不增大卷積核尺寸的同時擴大感受野,避免了因池化帶來的特征信息損失,并通過改變激活函數來提高算法的泛化性和魯棒性,使用煙葉數據集分類的層次結構來增強從各種深度CNN架構獲得的預測的一致性。結果表明,與傳統SVM算法、原始VGG16網絡以及文獻[12]中的CNN算法相比,試驗算法在分級準確率和損失率上有更好的優越性。但試驗算法并不能考慮到煙葉內部的化學特征對煙葉分級的影響,后續將通過多模態數據融合或者進一步地優化網絡模型,來實現煙葉分級準確率和分級速度的進一步提升。