趙明巖,李一欣,徐 鵬,宋天月,李煥然
(1.中國計量大學機電工程學院,杭州 310018;2.中國計量大學理學院,杭州 310018)
黑皮雞樅菌(Oudemansiella raphanipes)作為一種高檔菌菇,富含蛋白質、氨基酸等多種營養(yǎng)物質,在降血糖、降血脂、抗癌等方面具有獨特的生理功效[1],具有較高的研究與開發(fā)價值。近年來隨著消費水平的提高,其市場規(guī)模逐年擴大。雞樅菌各級別之間的價格可相差數倍,為使經濟效益最大化,須將品相飽滿、外形勻稱的雞樅菌與叢生菇、無傘菇區(qū)分開來。然而傳統的人工分選方式存在效率低、一致性差等問題。隨著云南、貴州等地的大面積種植和產量大幅提高,人工分選方式已經不能滿足生產需求。
機器視覺技術[2-5]在特定的環(huán)境條件下可快速、高精度地檢測單一目標,但當外界因素如光照等發(fā)生變化時,檢測結果會出現一定偏差。而基于深度學習的圖像檢測系統可學習識別不同環(huán)境下的目標,目前被廣泛用于谷物[6-7]、畜牧[8-10]、蔬果[11-13]等諸多領域。在搭建蘑菇數據集方面,袁培森等[14]在基于生成式對抗網絡(Generative Adversarial Networks, GAN)的基礎上使用Wasserstein距離和帶有梯度懲罰的損失函數構建菌菇數據模型,為后期解決珍稀菌菇分類數據非均衡的問題提供了研究基礎。在蘑菇分級系統方面,Lin等[15]采用長短期記憶網絡(Long Short-Term Memory,LSTM)對蘑菇進行實時跟蹤分級,可準確定位蘑菇,并能預測蘑菇在攝像機視野之外的位置,但分級時間長,效率低。Lu等[16]采用基于計分懲罰算法(Score-Punishment algorithm)的YOLOv3進行蘑菇的估計分級,對于不同時期采集的蘑菇圖像,該算法具有很強的魯棒性,能夠克服顏色偏差對估計精度的影響,但不適用于黑皮雞樅菌的品質分選。
綜上,國內外學者基于深度學習技術對農產品的精選分級進行了廣泛研究,但目前針對黑皮雞樅菌的研究以營養(yǎng)方面[17-18]為主,圖像分級識別方面的研究未見述及。目前深度學習領域的研究主要分為兩類[19]:第一類模型參數量大,精度高,但單幅識別時間長;第二類模型參數量小,識別速度快,但精度低。由于黑皮雞樅菌分級特征不顯著,對深度學習模型要求高,而現有網絡模型適用性低,無法滿足雞樅菇分級需求。近年來知識蒸餾算法[20-23]在解決優(yōu)化模型效率的問題中頗受青睞,該算法通過大參數模型去訓練小參數模型,可在不提高資源占用的前提下,提升小參數模型精度。本文針對黑皮雞樅菌特征分級的實際需求,構建Resnet18基礎網絡結構,并通過復合知識蒸餾優(yōu)化模型,以實現雞樅菌自動品質分級,為雞樅菌分級生產線的應用提供技術支持。
選用由貴州省水城縣營盤鄉(xiāng)雞樅養(yǎng)殖基地(26°8′~26°15′N,140°40′~140°47′E)提供的黑皮雞樅菌作為試驗材料,其收獲時間為2020年11月1日。參考菇業(yè)標準[24],按照菇柄、菇蓋、色澤等因素將雞樅菌分為4類:一級菇、二級菇、無傘菇、叢生菇,如圖1所示。一級菇為菇柄飽滿且菌帽未開張的雞樅菌;二級菇為菇柄細長、菌帽平展的雞樅菌;而無傘菇及叢生菇均存在一定的缺陷,屬于次品菇。
采用工業(yè)相機(有效像素為2 592×1 944)垂直拍攝雞樅菌樣本,拍攝條件為室內環(huán)形燈光照,將待分級雞樅菌隨機擺放,拍攝4個品類(均為750根)雞樅共3 000幅圖像,圖像采集裝置如圖2所示。
使用Python語言對得到的雞樅圖像進行預處理。首先計算圖像中每一根雞樅菌的最小外接矩的二維坐標,從而在原始圖像中分割出每一個雞樅菌的RGB圖像。由于卷積神經網絡的輸入圖像一般為正方形,因此將單根雞樅菌圖像擴展為正方形。采用Retinex算法對雞樅菌圖像進行色彩平衡、歸一化、增益及偏差線性加權處理。Retinex算法的目的是突出顯示選定的特征及弱化其他無關特征,通過對缺陷進行補償,可改善低質圖像,并能使其更清晰地被觀察到[25-26]。
式中x為像素點的行坐標,y為像素點的列坐標,F(x,y)為中心環(huán)繞函數,λ為尺度值,c為高斯環(huán)繞尺度,Ri(x,y)為反射圖像,Ii(x,y)為原始圖像,Li(x,y)為圖像亮度,ri(x,y)為輸出圖像。
隨后進行數據增強操作,對樣本數據按任意順序隨機添加下列三種擴充方法:旋轉、隨機裁剪、增加圖像高斯噪聲來豐富數據集,將3 000幅圖像擴充為6 000幅,同時按照8:2的比例,將4 800幅雞樅菌圖像作為訓練集,其余1 200幅圖像作為驗證集。
卷積神經網絡模型與傳統網絡模型相比,一方面降低了訓練的參數量,另一方面降低了模型的復雜度,且提取的圖像特征(如顏色、紋理、形狀及圖像的拓撲結構)具有更高的準確性[27]。早期的卷積模型如LeNet5[28]、AlexNet[29]、VGGNet[30]等在網絡層數較低的情況下,可以有效對整個網絡的參數矩陣進行不斷調整。但隨著網絡層數不斷加深,來自結果的誤差信號在傳播過程中會逐漸消失,模型準確率反而下降。而Resnet引入了殘差網絡結構(residual network),通過這種殘差網絡結構,在加深網絡層的同時,最終的分類精度也得到提升[31]。
殘差網絡的基本結構如圖3所示,通過捷徑連接的方式將輸入x添加到輸出,即輸出結果為H(x)=F(x)+x。區(qū)別于早期神經網絡結構,Resnet的學習目標不再是單一的輸出,而是殘差塊F(x),即H(x)和x的差值。當進行鏈式求導來求得某個參數的偏導數時,傳統模型僅對一層網絡求偏導時的更新公式為
式中Loss為損失值,X為樣本,W為權值,b為偏置數。
當網絡足夠深的時候,求偏導的結果趨近于0,使得前端網絡得不到有效更新:
式中Xi(i∈1…N)為第i層樣本值,Wi(i∈1…N)為第i層權值,bi(i∈1…N)為第i層偏置數,Fi(i∈1…N)為第i層非線性映射殘差函數。
而當增添殘差塊之后,偏導結果如下所示:
此時,參數反饋中的梯度彌散問題得到解決,并且函數擬合F(x)=0會比F(x)=x更加容易,使得網絡結構對參數的變化更加敏銳。
本文主干網絡是在Resnet18網絡結構基礎上改進而來,如圖4所示。網絡采用了殘差網絡結構且在每2個卷積層接1個殘差鏈接,網絡共包括17個卷積層,1個池化層,1個全連接層。其中卷積核尺寸為3×3,池化層采用Avg Pool。
Adam優(yōu)化器來源于自適應矩估計(Adaptive Moment Estimation),其迭代參數的學習率有一定的范圍,不會因梯度變化而大幅偏移設定值,參數值相對比較穩(wěn)定。
式中t為時間步數,θt為更新梯度,ft(θ)為關于θ的隨機目標函數,?θ為對θ求偏導,gt為梯度值,β1,β2∈[0,1)為指數衰減率,mt為一階矩的估計值,?tm為經過偏差修正的一階矩估計值,vt為二階矩的估計值,v?t為經過偏差修正的二階矩估計值,α為步長,ε為任意小的正數。
訓練精度曲線可以檢測模型的運行情況,優(yōu)化器分別選用Adam和Adadelata,其他參數保持初始狀態(tài),對驗證集進行1 000次迭代訓練后的精度變化曲線如圖5所示,預測精度為預測標簽是正確標簽的概率??傻肁dam優(yōu)化器的訓練速度以及精度明顯優(yōu)于Adadelata優(yōu)化器,可使神經網絡模型收斂速度加快,縮短模型訓練時間。
隨著Resnet卷積神經網絡提出殘差網絡結構,網絡深度不斷延伸,大網絡模型逐漸投入使用。雖然大網絡模型擁有較高的準確性,但在部署階段需占用巨大的內存資源,且運行極其耗時。而農業(yè)領域針對農產品識別時,要求神經網絡模型資源占用少、響應速度快。為實現上述目的,需將大參數模型壓縮成小參數量模型,且保證模型準確率。知識蒸餾算法的提出為解決上述問題提供了一種新的思路。
知識蒸餾方法用教師模型(大參數模型)去訓練學生模型(小參數模型),提供學生模型在hard label(硬標簽)上無法習得的soft label(軟標簽)信息。相比于學習單一正確標簽,通過知識蒸餾學生模型能學習到預測目標的類別權重,這些類別權重是學生模型提取不到而教師模型可通過訓練得到的,從而在不提高資源占用的情況下,使得學生模型精度得到提高,知識蒸餾基本結構如圖6所示。
本研究數據測試選用ImageNet-1k訓練集,通過對Resnet18、Resnet34、Resnet50 3個模型進行訓練得到各自模型信息如表1所示,FLOPS為每秒浮點運算次數,Top1準確率為預測標簽中概率最大的標簽是正確標簽的概率,Top5準確率為預測標簽中概率排列前五的標簽中出現正確標簽的概率。已知教師模型采用更深的網絡層數,能使學生模型更加有效地提高其預測準確率[20],本文選用Resnet18為學生模型,即本文主體網絡;Resnet50為教師模型,負責優(yōu)化學生模型參數。
?
卷積操作可在降低圖片尺寸的前提下,提取雞樅菌形狀特征,減少卷積神經網絡的運算量。本文采用截留網絡輸入層傳輸至中間層的參數信息方法,觀察Resnet18第9層及Resnet50中第25層的圖像特征信息,所得結果如圖7所示。
通過對比第9次卷積操作和第25次卷積操作后提取的圖像特征,能夠發(fā)現隨著卷積層的加深,網絡模型更容易提取到雞樅的深層特征。目前知識蒸餾算法僅通過輸出的soft label信息更新整體學生模型,導致模型更新信息在傳遞過程中仍存在一定程度的失真現象。為更加充分利用特征信息,本文提出了一種基于復合知識蒸餾提取模型的黑皮雞樅菌分級檢測方法,同時在模型的不同位置使用知識蒸餾,其網絡結構如圖8所示。
首先使用訓練集對教師模型(Resnet50)進行1 000次訓練,直到其預測準測率達到最大值,隨后截留Resnet50第25次卷積操作的輸出對學生模型(Resnet18)的前9層卷積模型進行參數訓練。學生模型能夠在訓練過程中通過學習教師模型的輸出不斷地調整權重信息,使其獲得較優(yōu)結果。最后將經過預訓練的學生模型的前9層卷積模型與其后半部分進行拼接,進行整體模型的知識蒸餾。
對一級菇、二級菇、無傘菇、叢生菇等4種品質進行分級,測試硬件為Intel Core i7-9700F 3.00 GHz,內存16GB,配備NVIDIA GeForce RTX 2060 GPU加速試驗進程,試驗運行環(huán)境為Windows 10(64位)操作系統,PyCharm2019版本,Python 3.7版本, Tensorflow 2.1版本。
每次訓練選取的樣本數量為4 800幅,迭代共1 000次,采用Adam優(yōu)化器,初始學習率為0.001。在每層之間添加BatchNormalization層[32],BN層可以使得非線性變換函數的輸入值落入對輸入比較敏感的區(qū)域。同時在輸入層之后和全連接層之前分別添加Drop-out層,Drop-out雖會影響整個模型的訓練速度,但可提升魯棒性,使最終準確率得到提高。
為驗證復合蒸餾提取模型的有效性,將其與改進前的Resnet18與Resnet50模型在訓練集上進行雞樅菇識別結果比較,具體定量識別結果如表2所示,其中準確率為預測值與真值相符合的概率。由表2可知,經過復合蒸餾的Resnet18識別準確率為96.89%,識別單幅圖像所用時間為0.032 s。本文模型相比Resnet50識別單幅圖像所用時間縮短68.93%,同時相比于未經過知識蒸餾以及經過單次知識蒸餾的Resnet18模型,準確率分別提升了0.97和0.52個百分點。準確率改善的原因在于:傳統神經網絡反向傳播參數更新時,每經過一層卷積層就存在一定的失真現象。隨著網絡結構的加深,模型前幾層往往得不到有效的更新信號,而本文Resnet網絡使結構對參數的變化更加敏銳,且知識蒸餾技術可以給學生模型提供在hard label上學不到的soft label信息。本文提出的復合知識蒸餾技術讓學生模型的前半部分預先學習高階特征信息,然后再對模型整體進行參數調整??墒蛊涓映浞值匚战處熌P椭械闹R,改善反饋參數在傳遞過程中梯度彌散現象。因此,本文提出的基于復合蒸餾的Resnet18可在不增加硬件配置以及運行時間的前提下,顯著提升雞樅菌識別及分級精度。
表2 訓練集下模型使用復合知識蒸餾與未使用知識蒸餾的對比Table 2 Comparison between the training set model by compound knowledge distillation and that without knowledge distillation
混淆矩陣是用于評估深度學習分類模型性能的矩陣,它將實際目標值與深度學習模型預測的目標值進行比較,有助于分析分類模型的性能情況。本文模型分類的混淆矩陣如圖9所示,使用數據集為驗證集,圖像總數為1 200幅,4類雞樅菌數量均為300幅,通過混淆矩陣可以看出,模型對4類雞樅菌的識別準確率都處于較高水平,其平均準確率為96.58%。其中無傘菇及叢生菇準確率較高,分別為97.67%、99.00%,說明形狀特征差異越顯著,越利于模型學習,而參數訓練誤差產生了少數錯誤預測樣本;一級菇及二級菇準確率相對較低,分別為95.33%、94.33%,這是由于二者形狀特征重疊度高,不易于區(qū)分造成的。進一步增強不同雞樅菇特征之間的可區(qū)分性是下一步研究重點。
Kappa系數是一致性檢驗指標,可用于衡量分類效果,由混淆矩陣數據計算得出。
式中po表示模型準確率,pe表示各自類別的實際數量與其預測數量乘積的總和除以樣本總數的平方。
本研究中不同網絡模型的Kappa系數如表3所示,其中經過雙蒸餾的學生模型的模型準確率為0.968 9,各自類別的實際數量與其預測數量乘積的總和除以樣本總數的平方為0.242 2,Kappa系數為0.959 0,優(yōu)于其他方法訓練的學生網絡,僅次于教師網絡,可得模型預測結果和實際分類結果近乎完全一致。
表3 不同網絡的Kappa系數對比Table 3 Comparison of Kappa coefficients of different networks
綜上可知,本文所提出的復合知識蒸餾算法對不同品質雞樅菌的識別效率有顯著提升,能夠實現雞樅菇形態(tài)的有效識別,符合智能分級需求。
本文提出了一種基于卷積神經網絡和復合知識蒸餾優(yōu)化算法的黑皮雞樅菌分級模型,一定程度上解決了農產品領域要求神經網絡識別精度高、模型部署規(guī)模小的需求。讓學生模型的前半部分預先學習特征信息,然后再對模型整體進行參數調整,通過復合學習可使學生模型充分獲得高階特征。主要結論如下:
1)通過使用復合知識蒸餾算法優(yōu)化,模型在訓練集中對雞樅菌的檢測準確率為96.89%,較初始Resnet18模型提升0.97個百分點,同時較傳統知識蒸餾模型提高了0.52個百分點;單幅圖像檢測時間為0.032 s,較Resnet50模型縮短68.93%。
2)采用混淆矩陣校核本文模型在驗證集中的分類預測準確率,得出模型對4類雞樅菌的識別準確率均較好,4類平均準確率為96.58%,尤其是對叢生菇的識別,準確率達到了99.00%,證明本文所提出的方法能夠對4類雞樅菌圖像進行準確識別。
本文提出的復合知識蒸餾算法可在不增加運行時間及額外硬件占用的前提下,使小模型的準確率逼近大型網絡訓練準確率。研究結果可為實際雞樅菌分級生產線的應用提供技術支持,進一步推動基于神經網絡技術的農產品視覺快速檢測與分選的發(fā)展。