(1.四川大學電子信息學院,成都 610065;2.中儲糧成都儲藏研究院有限公司,成都 610091)
作為我國第二大農作物,小麥對人民日常飲食、國家的糧食安全,以及推動國民經濟發展都有著舉足輕重的作用。小麥不完善粒是指受到了損傷但仍有使用價值的小麥籽粒,包括破損粒、蟲蝕粒、病斑粒(赤霉病粒以及黑胚粒)、發芽粒、霉變粒等。不完善粒的含量是對小麥完成定級、定等的關鍵指標。我國目前小麥質量檢測工作仍然是由專業質檢人員根據經驗判斷,該方法主觀性強、工作量大、可重復性差,并且在檢測過程中可能毀壞受檢麥粒,如人工對發芽籽粒的判定可能刮傷籽粒。
1984 年的美國農業部最先提出基于圖像來對小麥進行分類的思想。1985 年堪薩斯州立大學的Zayas[1]基于圖像提取了小麥的長、寬、面積等形態特征進行識別。最先使用機器視覺技術對小麥不完善粒進行檢測是在1991 年的美國華盛頓州立大學,Thomson等[2]通過逐麥粒掃描三維圖形對生芽粒進行分類,正常粒小麥識別率83%,發芽粒小麥識別率89%。1999年,Majumdar等[3]提取麥粒的紋理特征和顏色特征,對大麥、小麥、燕麥等不同種類的麥粒樣品進行分類,準確率達到100%。2007 年,Neethirajan 等[4]提取麥粒55 個特征,使用BP(Back Propagation)人工神經網絡進行分類,準確率達到95%。2012 年,我國浙江大學陳豐農[5]提取小麥的形態、顏色、紋理三類共計178 維特征,使用主成分分析(Principal Component Analysis,PCA)+支持向量機(Support Vector Machine,SVM)算法進行分類,對黑胚粒、破損粒和正常粒小麥的識別率分別達到97.2%、98.4%和97.9%,并且開發了一臺小麥不完善粒自動檢測的樣機。
早期的研究主要集中在使用各種方法提取小麥的形態、顏色和紋理三類特征,然后用各種機器學習算法對圖像進行分類,其局限在于人工定義特征困難、數據可分性弱,且偏向可行性研究,數據量偏小。近年來,卷積神經網絡(Conventional Neural Network,CNN)蓬勃發展,國內相關研究人員對使用CNN 識別小麥不完善粒開展了諸多研究。2017年,曹婷翠[6]提出采用雙面圖像進行識別的方案,基于LeNet-5構建神經網絡,獲得了平均90%以上的準確率。2018年,陳文根[7]構建了具有五層卷積的神經網絡,對九種不同的小麥進行分類,取得了98.4%的準確率。2019年,張博[8]構建了具有三個殘差塊的殘差神經網絡,對正常、破損、蟲蝕、病斑、生芽和霉變六類小麥分類,獲得了96%的準確率。2020 年,祝詩平等[9]使用近紅外光譜圖像提取光譜特征,對比了LeNet-5、ResNet-34、VGG-16 和AlexNet 幾種經典CNN 與傳統分類方法,在AlexNet 上對正常籽粒和破損籽粒二分類獲得最高98.02%的準確率。
目前針對小麥不完善粒識別的研究中,基于高光譜圖像的研究較多,僅使用普通圖像的研究較少。而高光譜成像設備價格昂貴,自動檢測設備開發和實驗室研究成本都比較高。所以本文使用普通圖像展開研究,而當前絕大部分使用普通小麥圖像分類的研究只是將其視作一般圖像分類任務,著重改進分類算法,而沒有利用好小麥圖像自身的特點。本文依據實際應用場景下小麥圖像的特點,提出對麥粒細節作圖像增強(Image Enhancement,IE)以突出不完善特征,并在CNN中加入批正則化(Batch Normalization,BN)層提高泛化性能,之后以突出細節特征的圖像作為輸入,訓練卷積神經網絡分類器進行分類檢測,取得了較好的實驗效果。
實驗樣本由中儲糧成都儲藏研究院有限公司相關人員收集,包括完善粒和五類不完善粒樣本共六類,即完善粒、破損粒、蟲蝕粒、病斑粒、發芽粒、生霉粒,然后由該研究院專業小麥質檢人員做數據標注。以抖動式自動上料盤、透明玻璃板和一對工業相機(均為維視相機MV-EM200C搭配遠心電耦合器件(Charge Coupled Device,CCD)光學鏡頭BT-2336)構成自動圖像采集設備,模擬實際應用場景采集麥粒雙面圖像。
所用的工業相機聚焦可以實現背景為純黑色,然而麥粒本身占整幅圖像的比例不大,采集到的圖像大部分區域為黑色背景,并且部分區域會有麥粒上料過程中掉落的碎屑。所以先對圖像進行預處理工作,刪除多余背景,具體為:對圖像進行二值化之后查找輪廓,最大輪廓即為麥粒邊緣,以麥粒邊緣確定的矩形區域為界,向四周擴充兩個像素之后裁剪原圖。
裁剪后的圖像大小各異,為方便神經網絡輸入,運用圖像處理算法將其大小調整至等寬高。具體為:固定圖像寬高比將圖像縮放至227×n(n≤227),并在較短的邊兩側等量補零,將圖像調整至227× 227大小。
以前述處理后的圖像為基礎,共收集完善粒圖像12 998張,破損粒圖像8 658 張,蟲蝕粒圖像7 180 張,病斑粒圖像6 690張,生芽粒圖像6 000張,霉變粒圖像6 322張。圖1展示了六類小麥的圖像。為了評估本文所提方法的性能,避免不平衡分類問題,六類樣本每一類各取6 000張圖像建立小麥不完善粒識別數據集,其中5 000 張作為訓練集,1 000 作為測試集。

圖1 六類麥粒圖例Fig.1 Samples of six wheat kernel classes
六類小麥圖像除部分破損粒輪廓嚴重不完整或是有較大區域為白塊以外,大部分圖像僅靠微小的局部差異判斷小麥籽粒是否完善或不完善。因此,本文運用圖像處理技術從輸入端突出不完善粒的特征,以期改善不完善粒的識別率。
突出圖像細節的基本思想是將圖像拆解為基礎層和細節層,突出細節層后與基礎層疊加。分解原圖的核心是找到圖像的基礎圖層,通過圖像平滑即可得到圖像的基礎層。
關于圖像平滑的研究頗多,經典算法有雙邊濾波、加權最小二乘法、全變分(Total Variation,TV)模型、L0范數最小化算法等。由于預處理后的小麥圖像背景為全0 像素,背景部分水平和豎直方向梯度均為0。本文采取Xu 等[10]提出的使用L0 范數約束的方法來平滑圖像,相較以往的算法,此算法不依賴局部信息,通過全局定位圖像的明顯邊緣來進行平滑。具體為:
約定I為原圖像,S為待求解的平滑圖像,?xSp和?ySp表示求解出的S沿著水平和豎直方向的偏導數(此偏導采用前向差分求解),于是圖像中任一點p處的導數可以記為?Sp=(?xSp,?ySp)T,對二維圖像S而言,需要約束水平方向和豎直方向的L0范數,具體的約束項為:

其中,“#{}”表示對大括號內滿足條件的像素p計數。假設I為原圖像,S為滿足約束條件下的基礎層,則求解目標函數為:

將其轉化為非約束形式:

其中:λ是一個非負參數,控制I被平滑的權重。
由于C(S)非凸非可導,求解此式困難。為此引入輔助變量h和v,求解目標變換為:

其中:β是一個超參數,約束hp和vp與對應原圖像梯度?xSp和?ySp的相似性。求解此式即可得到圖像在參數(λ,β)下的基礎層S。使用交替最小化算法來求解此式,當固定S時(h,v)的最優解為:

圖2 六類麥粒圖像平滑和增強Fig.2 Smoothing and enhancement of images of six wheat kernel classes

圖3 完善粒不同增強方法效果Fig.3 Effect of perfect wheat kernel enhanced by different methods

固定(h,v)時S的最優解為:

其中:“F”表示傅里葉變換,“F-1”為傅里葉逆變換,“F*()”表示取取傅里葉變換所得矩陣的伴隨。
交替固定S按式(5)求解(h,v)和固定(h,v)按式(6)更新S,即可迭代完成基礎層S的求解。求出S后,原圖I減去基礎層S得到細節層,突出細節層并與基礎層S求和,即得到突出細節后的目標圖像D,即:

其中:γ是一個大于1 的常數,控制突出細節的程度。整個算法流程如算法1所示。
算法1
1)初始化S=I,設置λ和β的初始值以及β最大值βmax;
2)按式(5)更新(h,v);
3)按式(6)更新S并更新β←β× 2;
4)重復步驟2)和3)直至β>βmax;
5)按式(7)求出增強后的圖像D。
當λ和β的初始值為0.02,βmax取105,γ取1.2 時,六類圖像原圖I、平滑處理求得的基礎圖層S以及增強后的圖像D如圖2所示。
經典圖像增強(IE)方法眾多,總的來說可以分為空域增強和頻域增強。其中空域增強直接對像素進行操作,包括直方圖均衡化、gamma 變換、拉普拉斯算子卷積、對數變換以及本文采用的分解圖層后增強某些層的方法。而頻域增強則是通過離散傅里葉變換將圖像變換到頻率域,選擇合適的閾值和增強系數增強高頻部分。圖3 分別展示了完善粒圖像使用上述幾種方法增強后的效果圖。
由圖3 可以看出,就小麥圖像而言:頻域高通濾波丟失了很多整體信息;因為有很多接近零而非0 的像素點,直方圖均衡會引入額外噪聲;而gamma 變換和對數變換更多用來解決光照太亮或者太暗時對比度太低的問題,對小麥圖像而言反而減少了其紋理信息;拉普拉斯卷積核通過每一個像素點的像素值乘五再減去四鄰域的像素和,一定程度上使得紋理信息有所增強,但也不如本文方法的效果顯著。
批正則化技術即Batch Normalization(BN)是近年來深度學習發展的重要成果之一。有研究[11]指出,將圖像白化(將數據處理為標準正態分布)過后再送入神經網絡,可以加速收斂過程。假設有m個數據,計算其均值μB和標準差每一個數據作如此映射:xi=其中:

在深度神經網絡各個卷積層之間,每一層都相當于下一層的輸入,若將神經網絡每一層輸出神經元都采取白化操作,則需要對神經網絡每一層都使用所有數據,計算全局的均值和標準差,計算量非常大導致訓練過程很慢。當今小批量學習已成為訓練深度神經網絡的主流方法,即每一次訓練前向傳播和反向傳播都只取固定數量的一部分數據(稱為一個mini-batch)參與,既減小了硬件開銷又能同時學習到各類數據的特征。于是,Loffe 等[12]提出對神經網絡每一層輸入,以mini-batch 為單位進行白化操作而不用計算全局的均值和方差,讓數據以小方差集中在批均值附近;同時,為了更好地學習到非線性特征,對白化之后的正態分布再進行縮放和平移。

其中:γ與β控制縮放和平移的程度,由神經網絡學習。
BN 已經被證明可以加速網絡收斂和抑制過擬合現象并且被廣泛應用于各種分類任務中。在深度學習別的研究領域還衍生出了Layer Normalization、Group Normalization、Weight Normalization、Instance Normalization 等變體[13]。在分類網絡中加入BN層,以期獲得更好的識別率。通常在神經網絡卷積輸出之后非線性激活之前加入BN,圖4展示了神經網絡相鄰卷積層之間加入BN層前后結構。

圖4 神經網絡相鄰層加入BN前后的結構Fig.4 Structure of CNN adjacent layers before and after adding BN layer
實際應用場景中,雖然成批的麥子其數量是極大的,基于機器視覺技術逐麥粒進行識別無法用于完善-不完善粒分揀,但是對于國家糧食機構收糧現場小樣本快速質檢是完全可行的。在快速質檢的應用場景下,只需要給出一批樣本的不完善率即可,此時結合圖像增強和CNN 進行小麥不完善粒識別的流程如圖5所示。

圖5 本文不完善粒識別流程Fig.5 Flowchart of the proposed imperfect wheat kernel recognition
分別以經典分類網絡LeNet-5、VGG-16 以及ResNet-34 作為主干網絡,對輸入圖像進行細節增強后送入含有BN層的神經網絡進行分類(CNN+IE+BN)。對比實驗包括:1)僅使用原網絡(CNN);2)只做圖像增強(CNN+IE);3)只添加BN(CNN+BN)。實驗環境為:操作系統為Ubuntu 16.04,CPU 為Intel Core i5-7500,內存為8 GB,GPU 為Nvidia GTX1080Ti(顯存11 GB)。使用CUDA 8.0+Pytorch-1.0。
所有網絡實驗均迭代250次,學習率初始值0.01,每迭代100 輪學習率衰減90%。設置Batch Size 為84,由于pytorch 框架不提供LeNet-5 的預訓練模型,初始權值均使用pytorch 預設的初始化策略進行初始化。其中細節增強部分參數設置為:λ和β的初始值0.02,βmax=105,γ=1.2。對比訓練集準確率和測試集準確率。
實驗數據如表1所示。其中圖像增強(IE)在表中用IE 表示。由于ResNet 網絡本身加入了BN 層,實驗時對比原網絡去除BN 層(-BN)、原網絡去除BN 后使用增強細節的圖像(-BN+IE)、原網絡(ResNet34),以及原網絡使用增強圖像(ResNet34+IE)四種情況。

表1 十二組對比實驗的訓練集準確率、測試集準確率 單位:%Tab.1 Training set accuracies and test set accuracies of 12 groups of comparison experiments unit:%
從表1可以看出:
1)實驗的三個分類網絡均在本文所提方法上獲得最高測試集準確率。
2)ResNet-34在去除BN 層后,相較于原網絡,無論是否對輸入數據作增強處理,訓練集和測試集準確率都遠不如原網絡。但是增強處理后相較不做此處理有更好的表現。
3)單獨對比是否在網絡中加BN 層和是否做圖像增強可以發現,相較基礎網絡,二者單獨使用均帶來一定程度的訓練集最高準確率降低和測試集最高準確率升高。并且除ResNet-34 去除BN 層后網絡學習困難以外,其他實驗均在結合使用BN 和圖像增強時達到最大訓練集準確率的最小值和最大測試集準確率的最大值。
由以上分析可以得出,ResNet-34 所使用的殘差結構對BN 層依賴程度較高,去除BN 層后降低了ResNet 網絡的學習能力。而此時使用細節增強的圖像作為輸入,相較不做細節增強也能獲得更好的訓練集和測試集準確率;綜合十二組對比實驗可知,在CNN 中添加BN 層和本文所提的圖像增強方法均對提升模型的泛化能力、抑制過擬合現象有積極作用,且對于不同的分類網絡均有良好的適應性,其中表現最為優秀的是VGG-16+IE+BN。
本文使用模擬實際應用場景下采集到的小麥圖像,分析其有別于普通圖像的特點,提出了一種針對小麥籽粒圖像的圖像增強方法,并在CNN 中添加BN 層。在LeNet-5、ResNet-34、VGG-16 三個不同的經典CNN 上,僅使用該方法增強輸入數據,測試集準確率均提升超過1個百分點;僅在CNN中加入BN 層而不做圖像增強,在三個不同的網絡上測試集準確率均提升超過5 個百分點;二者結合使用時,在三個網絡上測試集準確率提升均超過7 個百分點。其中:LeNet-5 參數量最少(約500 萬),其總體表現也最差;ResNet-34 參數量約為2 100萬,且含有殘差結構可以以較小的參數量獲取更深層的特征,雖然參數量相較LeNet-5增加不多,但測試集準確率提高非常明顯(約9個百分點)。而VGG-16以大量的卷積層堆疊而成,參數量較大(約1.3 億),其表現是最好的,但是訓練和預測階段比較耗時,且參數量的大量增長帶來的識別率提高相對有限(相較ResNet-34 多了5 倍的參數而測試集準確率只提高2.5 個百分點),分類網絡的選取和改進對于識別任務也非常重要。
但是本文對于分類網絡改進并未做深入研究,實際上,小麥不完善粒識別屬于細粒度分類任務。這是深度學習領域一個富有挑戰性的任務,目前學術界已提出不少細粒度分類網絡,但普遍網絡參數量非常大(相當一部分細粒度分類網絡就是用VGG-16 來提特征的)。而實際應用場景下對識別時間有較高要求,限制了網絡的復雜程度。將細粒度網絡輕量化使其可以提取到更深層次的特征的同時又能較快完成識別是一個值得研究的課題,這也是我們今后的研究方向。