(1.四川大學電子信息學院,成都 610065;2.中儲糧成都儲藏研究院有限公司,成都 610091)
作為我國第二大農(nóng)作物,小麥對人民日常飲食、國家的糧食安全,以及推動國民經(jīng)濟發(fā)展都有著舉足輕重的作用。小麥不完善粒是指受到了損傷但仍有使用價值的小麥籽粒,包括破損粒、蟲蝕粒、病斑粒(赤霉病粒以及黑胚粒)、發(fā)芽粒、霉變粒等。不完善粒的含量是對小麥完成定級、定等的關(guān)鍵指標。我國目前小麥質(zhì)量檢測工作仍然是由專業(yè)質(zhì)檢人員根據(jù)經(jīng)驗判斷,該方法主觀性強、工作量大、可重復(fù)性差,并且在檢測過程中可能毀壞受檢麥粒,如人工對發(fā)芽籽粒的判定可能刮傷籽粒。
1984 年的美國農(nóng)業(yè)部最先提出基于圖像來對小麥進行分類的思想。1985 年堪薩斯州立大學的Zayas[1]基于圖像提取了小麥的長、寬、面積等形態(tài)特征進行識別。最先使用機器視覺技術(shù)對小麥不完善粒進行檢測是在1991 年的美國華盛頓州立大學,Thomson等[2]通過逐麥粒掃描三維圖形對生芽粒進行分類,正常粒小麥識別率83%,發(fā)芽粒小麥識別率89%。1999年,Majumdar等[3]提取麥粒的紋理特征和顏色特征,對大麥、小麥、燕麥等不同種類的麥粒樣品進行分類,準確率達到100%。2007 年,Neethirajan 等[4]提取麥粒55 個特征,使用BP(Back Propagation)人工神經(jīng)網(wǎng)絡(luò)進行分類,準確率達到95%。2012 年,我國浙江大學陳豐農(nóng)[5]提取小麥的形態(tài)、顏色、紋理三類共計178 維特征,使用主成分分析(Principal Component Analysis,PCA)+支持向量機(Support Vector Machine,SVM)算法進行分類,對黑胚粒、破損粒和正常粒小麥的識別率分別達到97.2%、98.4%和97.9%,并且開發(fā)了一臺小麥不完善粒自動檢測的樣機。
早期的研究主要集中在使用各種方法提取小麥的形態(tài)、顏色和紋理三類特征,然后用各種機器學習算法對圖像進行分類,其局限在于人工定義特征困難、數(shù)據(jù)可分性弱,且偏向可行性研究,數(shù)據(jù)量偏小。近年來,卷積神經(jīng)網(wǎng)絡(luò)(Conventional Neural Network,CNN)蓬勃發(fā)展,國內(nèi)相關(guān)研究人員對使用CNN 識別小麥不完善粒開展了諸多研究。2017年,曹婷翠[6]提出采用雙面圖像進行識別的方案,基于LeNet-5構(gòu)建神經(jīng)網(wǎng)絡(luò),獲得了平均90%以上的準確率。2018年,陳文根[7]構(gòu)建了具有五層卷積的神經(jīng)網(wǎng)絡(luò),對九種不同的小麥進行分類,取得了98.4%的準確率。2019年,張博[8]構(gòu)建了具有三個殘差塊的殘差神經(jīng)網(wǎng)絡(luò),對正常、破損、蟲蝕、病斑、生芽和霉變六類小麥分類,獲得了96%的準確率。2020 年,祝詩平等[9]使用近紅外光譜圖像提取光譜特征,對比了LeNet-5、ResNet-34、VGG-16 和AlexNet 幾種經(jīng)典CNN 與傳統(tǒng)分類方法,在AlexNet 上對正常籽粒和破損籽粒二分類獲得最高98.02%的準確率。
目前針對小麥不完善粒識別的研究中,基于高光譜圖像的研究較多,僅使用普通圖像的研究較少。而高光譜成像設(shè)備價格昂貴,自動檢測設(shè)備開發(fā)和實驗室研究成本都比較高。所以本文使用普通圖像展開研究,而當前絕大部分使用普通小麥圖像分類的研究只是將其視作一般圖像分類任務(wù),著重改進分類算法,而沒有利用好小麥圖像自身的特點。本文依據(jù)實際應(yīng)用場景下小麥圖像的特點,提出對麥粒細節(jié)作圖像增強(Image Enhancement,IE)以突出不完善特征,并在CNN中加入批正則化(Batch Normalization,BN)層提高泛化性能,之后以突出細節(jié)特征的圖像作為輸入,訓練卷積神經(jīng)網(wǎng)絡(luò)分類器進行分類檢測,取得了較好的實驗效果。
實驗樣本由中儲糧成都儲藏研究院有限公司相關(guān)人員收集,包括完善粒和五類不完善粒樣本共六類,即完善粒、破損粒、蟲蝕粒、病斑粒、發(fā)芽粒、生霉粒,然后由該研究院專業(yè)小麥質(zhì)檢人員做數(shù)據(jù)標注。以抖動式自動上料盤、透明玻璃板和一對工業(yè)相機(均為維視相機MV-EM200C搭配遠心電耦合器件(Charge Coupled Device,CCD)光學鏡頭BT-2336)構(gòu)成自動圖像采集設(shè)備,模擬實際應(yīng)用場景采集麥粒雙面圖像。
所用的工業(yè)相機聚焦可以實現(xiàn)背景為純黑色,然而麥粒本身占整幅圖像的比例不大,采集到的圖像大部分區(qū)域為黑色背景,并且部分區(qū)域會有麥粒上料過程中掉落的碎屑。所以先對圖像進行預(yù)處理工作,刪除多余背景,具體為:對圖像進行二值化之后查找輪廓,最大輪廓即為麥粒邊緣,以麥粒邊緣確定的矩形區(qū)域為界,向四周擴充兩個像素之后裁剪原圖。
裁剪后的圖像大小各異,為方便神經(jīng)網(wǎng)絡(luò)輸入,運用圖像處理算法將其大小調(diào)整至等寬高。具體為:固定圖像寬高比將圖像縮放至227×n(n≤227),并在較短的邊兩側(cè)等量補零,將圖像調(diào)整至227× 227大小。
以前述處理后的圖像為基礎(chǔ),共收集完善粒圖像12 998張,破損粒圖像8 658 張,蟲蝕粒圖像7 180 張,病斑粒圖像6 690張,生芽粒圖像6 000張,霉變粒圖像6 322張。圖1展示了六類小麥的圖像。為了評估本文所提方法的性能,避免不平衡分類問題,六類樣本每一類各取6 000張圖像建立小麥不完善粒識別數(shù)據(jù)集,其中5 000 張作為訓練集,1 000 作為測試集。
圖1 六類麥粒圖例Fig.1 Samples of six wheat kernel classes
六類小麥圖像除部分破損粒輪廓嚴重不完整或是有較大區(qū)域為白塊以外,大部分圖像僅靠微小的局部差異判斷小麥籽粒是否完善或不完善。因此,本文運用圖像處理技術(shù)從輸入端突出不完善粒的特征,以期改善不完善粒的識別率。
突出圖像細節(jié)的基本思想是將圖像拆解為基礎(chǔ)層和細節(jié)層,突出細節(jié)層后與基礎(chǔ)層疊加。分解原圖的核心是找到圖像的基礎(chǔ)圖層,通過圖像平滑即可得到圖像的基礎(chǔ)層。
關(guān)于圖像平滑的研究頗多,經(jīng)典算法有雙邊濾波、加權(quán)最小二乘法、全變分(Total Variation,TV)模型、L0范數(shù)最小化算法等。由于預(yù)處理后的小麥圖像背景為全0 像素,背景部分水平和豎直方向梯度均為0。本文采取Xu 等[10]提出的使用L0 范數(shù)約束的方法來平滑圖像,相較以往的算法,此算法不依賴局部信息,通過全局定位圖像的明顯邊緣來進行平滑。具體為:
約定I為原圖像,S為待求解的平滑圖像,?xSp和?ySp表示求解出的S沿著水平和豎直方向的偏導數(shù)(此偏導采用前向差分求解),于是圖像中任一點p處的導數(shù)可以記為?Sp=(?xSp,?ySp)T,對二維圖像S而言,需要約束水平方向和豎直方向的L0范數(shù),具體的約束項為:
其中,“#{}”表示對大括號內(nèi)滿足條件的像素p計數(shù)。假設(shè)I為原圖像,S為滿足約束條件下的基礎(chǔ)層,則求解目標函數(shù)為:
將其轉(zhuǎn)化為非約束形式:
其中:λ是一個非負參數(shù),控制I被平滑的權(quán)重。
由于C(S)非凸非可導,求解此式困難。為此引入輔助變量h和v,求解目標變換為:
其中:β是一個超參數(shù),約束hp和vp與對應(yīng)原圖像梯度?xSp和?ySp的相似性。求解此式即可得到圖像在參數(shù)(λ,β)下的基礎(chǔ)層S。使用交替最小化算法來求解此式,當固定S時(h,v)的最優(yōu)解為:
圖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的最優(yōu)解為:
其中:“F”表示傅里葉變換,“F-1”為傅里葉逆變換,“F*()”表示取取傅里葉變換所得矩陣的伴隨。
交替固定S按式(5)求解(h,v)和固定(h,v)按式(6)更新S,即可迭代完成基礎(chǔ)層S的求解。求出S后,原圖I減去基礎(chǔ)層S得到細節(jié)層,突出細節(jié)層并與基礎(chǔ)層S求和,即得到突出細節(jié)后的目標圖像D,即:
其中:γ是一個大于1 的常數(shù),控制突出細節(jié)的程度。整個算法流程如算法1所示。
算法1
1)初始化S=I,設(shè)置λ和β的初始值以及β最大值βmax;
2)按式(5)更新(h,v);
3)按式(6)更新S并更新β←β× 2;
4)重復(fù)步驟2)和3)直至β>βmax;
5)按式(7)求出增強后的圖像D。
當λ和β的初始值為0.02,βmax取105,γ取1.2 時,六類圖像原圖I、平滑處理求得的基礎(chǔ)圖層S以及增強后的圖像D如圖2所示。
經(jīng)典圖像增強(IE)方法眾多,總的來說可以分為空域增強和頻域增強。其中空域增強直接對像素進行操作,包括直方圖均衡化、gamma 變換、拉普拉斯算子卷積、對數(shù)變換以及本文采用的分解圖層后增強某些層的方法。而頻域增強則是通過離散傅里葉變換將圖像變換到頻率域,選擇合適的閾值和增強系數(shù)增強高頻部分。圖3 分別展示了完善粒圖像使用上述幾種方法增強后的效果圖。
由圖3 可以看出,就小麥圖像而言:頻域高通濾波丟失了很多整體信息;因為有很多接近零而非0 的像素點,直方圖均衡會引入額外噪聲;而gamma 變換和對數(shù)變換更多用來解決光照太亮或者太暗時對比度太低的問題,對小麥圖像而言反而減少了其紋理信息;拉普拉斯卷積核通過每一個像素點的像素值乘五再減去四鄰域的像素和,一定程度上使得紋理信息有所增強,但也不如本文方法的效果顯著。
批正則化技術(shù)即Batch Normalization(BN)是近年來深度學習發(fā)展的重要成果之一。有研究[11]指出,將圖像白化(將數(shù)據(jù)處理為標準正態(tài)分布)過后再送入神經(jīng)網(wǎng)絡(luò),可以加速收斂過程。假設(shè)有m個數(shù)據(jù),計算其均值μB和標準差每一個數(shù)據(jù)作如此映射:xi=其中:
在深度神經(jīng)網(wǎng)絡(luò)各個卷積層之間,每一層都相當于下一層的輸入,若將神經(jīng)網(wǎng)絡(luò)每一層輸出神經(jīng)元都采取白化操作,則需要對神經(jīng)網(wǎng)絡(luò)每一層都使用所有數(shù)據(jù),計算全局的均值和標準差,計算量非常大導致訓練過程很慢。當今小批量學習已成為訓練深度神經(jīng)網(wǎng)絡(luò)的主流方法,即每一次訓練前向傳播和反向傳播都只取固定數(shù)量的一部分數(shù)據(jù)(稱為一個mini-batch)參與,既減小了硬件開銷又能同時學習到各類數(shù)據(jù)的特征。于是,Loffe 等[12]提出對神經(jīng)網(wǎng)絡(luò)每一層輸入,以mini-batch 為單位進行白化操作而不用計算全局的均值和方差,讓數(shù)據(jù)以小方差集中在批均值附近;同時,為了更好地學習到非線性特征,對白化之后的正態(tài)分布再進行縮放和平移。
其中:γ與β控制縮放和平移的程度,由神經(jīng)網(wǎng)絡(luò)學習。
BN 已經(jīng)被證明可以加速網(wǎng)絡(luò)收斂和抑制過擬合現(xiàn)象并且被廣泛應(yīng)用于各種分類任務(wù)中。在深度學習別的研究領(lǐng)域還衍生出了Layer Normalization、Group Normalization、Weight Normalization、Instance Normalization 等變體[13]。在分類網(wǎng)絡(luò)中加入BN層,以期獲得更好的識別率。通常在神經(jīng)網(wǎng)絡(luò)卷積輸出之后非線性激活之前加入BN,圖4展示了神經(jīng)網(wǎng)絡(luò)相鄰卷積層之間加入BN層前后結(jié)構(gòu)。
圖4 神經(jīng)網(wǎng)絡(luò)相鄰層加入BN前后的結(jié)構(gòu)Fig.4 Structure of CNN adjacent layers before and after adding BN layer
實際應(yīng)用場景中,雖然成批的麥子其數(shù)量是極大的,基于機器視覺技術(shù)逐麥粒進行識別無法用于完善-不完善粒分揀,但是對于國家糧食機構(gòu)收糧現(xiàn)場小樣本快速質(zhì)檢是完全可行的。在快速質(zhì)檢的應(yīng)用場景下,只需要給出一批樣本的不完善率即可,此時結(jié)合圖像增強和CNN 進行小麥不完善粒識別的流程如圖5所示。
圖5 本文不完善粒識別流程Fig.5 Flowchart of the proposed imperfect wheat kernel recognition
分別以經(jīng)典分類網(wǎng)絡(luò)LeNet-5、VGG-16 以及ResNet-34 作為主干網(wǎng)絡(luò),對輸入圖像進行細節(jié)增強后送入含有BN層的神經(jīng)網(wǎng)絡(luò)進行分類(CNN+IE+BN)。對比實驗包括:1)僅使用原網(wǎng)絡(luò)(CNN);2)只做圖像增強(CNN+IE);3)只添加BN(CNN+BN)。實驗環(huán)境為:操作系統(tǒng)為Ubuntu 16.04,CPU 為Intel Core i5-7500,內(nèi)存為8 GB,GPU 為Nvidia GTX1080Ti(顯存11 GB)。使用CUDA 8.0+Pytorch-1.0。
所有網(wǎng)絡(luò)實驗均迭代250次,學習率初始值0.01,每迭代100 輪學習率衰減90%。設(shè)置Batch Size 為84,由于pytorch 框架不提供LeNet-5 的預(yù)訓練模型,初始權(quán)值均使用pytorch 預(yù)設(shè)的初始化策略進行初始化。其中細節(jié)增強部分參數(shù)設(shè)置為:λ和β的初始值0.02,βmax=105,γ=1.2。對比訓練集準確率和測試集準確率。
實驗數(shù)據(jù)如表1所示。其中圖像增強(IE)在表中用IE 表示。由于ResNet 網(wǎng)絡(luò)本身加入了BN 層,實驗時對比原網(wǎng)絡(luò)去除BN 層(-BN)、原網(wǎng)絡(luò)去除BN 后使用增強細節(jié)的圖像(-BN+IE)、原網(wǎng)絡(luò)(ResNet34),以及原網(wǎng)絡(luò)使用增強圖像(ResNet34+IE)四種情況。
表1 十二組對比實驗的訓練集準確率、測試集準確率 單位:%Tab.1 Training set accuracies and test set accuracies of 12 groups of comparison experiments unit:%
從表1可以看出:
1)實驗的三個分類網(wǎng)絡(luò)均在本文所提方法上獲得最高測試集準確率。
2)ResNet-34在去除BN 層后,相較于原網(wǎng)絡(luò),無論是否對輸入數(shù)據(jù)作增強處理,訓練集和測試集準確率都遠不如原網(wǎng)絡(luò)。但是增強處理后相較不做此處理有更好的表現(xiàn)。
3)單獨對比是否在網(wǎng)絡(luò)中加BN 層和是否做圖像增強可以發(fā)現(xiàn),相較基礎(chǔ)網(wǎng)絡(luò),二者單獨使用均帶來一定程度的訓練集最高準確率降低和測試集最高準確率升高。并且除ResNet-34 去除BN 層后網(wǎng)絡(luò)學習困難以外,其他實驗均在結(jié)合使用BN 和圖像增強時達到最大訓練集準確率的最小值和最大測試集準確率的最大值。
由以上分析可以得出,ResNet-34 所使用的殘差結(jié)構(gòu)對BN 層依賴程度較高,去除BN 層后降低了ResNet 網(wǎng)絡(luò)的學習能力。而此時使用細節(jié)增強的圖像作為輸入,相較不做細節(jié)增強也能獲得更好的訓練集和測試集準確率;綜合十二組對比實驗可知,在CNN 中添加BN 層和本文所提的圖像增強方法均對提升模型的泛化能力、抑制過擬合現(xiàn)象有積極作用,且對于不同的分類網(wǎng)絡(luò)均有良好的適應(yīng)性,其中表現(xiàn)最為優(yōu)秀的是VGG-16+IE+BN。
本文使用模擬實際應(yīng)用場景下采集到的小麥圖像,分析其有別于普通圖像的特點,提出了一種針對小麥籽粒圖像的圖像增強方法,并在CNN 中添加BN 層。在LeNet-5、ResNet-34、VGG-16 三個不同的經(jīng)典CNN 上,僅使用該方法增強輸入數(shù)據(jù),測試集準確率均提升超過1個百分點;僅在CNN中加入BN 層而不做圖像增強,在三個不同的網(wǎng)絡(luò)上測試集準確率均提升超過5 個百分點;二者結(jié)合使用時,在三個網(wǎng)絡(luò)上測試集準確率提升均超過7 個百分點。其中:LeNet-5 參數(shù)量最少(約500 萬),其總體表現(xiàn)也最差;ResNet-34 參數(shù)量約為2 100萬,且含有殘差結(jié)構(gòu)可以以較小的參數(shù)量獲取更深層的特征,雖然參數(shù)量相較LeNet-5增加不多,但測試集準確率提高非常明顯(約9個百分點)。而VGG-16以大量的卷積層堆疊而成,參數(shù)量較大(約1.3 億),其表現(xiàn)是最好的,但是訓練和預(yù)測階段比較耗時,且參數(shù)量的大量增長帶來的識別率提高相對有限(相較ResNet-34 多了5 倍的參數(shù)而測試集準確率只提高2.5 個百分點),分類網(wǎng)絡(luò)的選取和改進對于識別任務(wù)也非常重要。
但是本文對于分類網(wǎng)絡(luò)改進并未做深入研究,實際上,小麥不完善粒識別屬于細粒度分類任務(wù)。這是深度學習領(lǐng)域一個富有挑戰(zhàn)性的任務(wù),目前學術(shù)界已提出不少細粒度分類網(wǎng)絡(luò),但普遍網(wǎng)絡(luò)參數(shù)量非常大(相當一部分細粒度分類網(wǎng)絡(luò)就是用VGG-16 來提特征的)。而實際應(yīng)用場景下對識別時間有較高要求,限制了網(wǎng)絡(luò)的復(fù)雜程度。將細粒度網(wǎng)絡(luò)輕量化使其可以提取到更深層次的特征的同時又能較快完成識別是一個值得研究的課題,這也是我們今后的研究方向。