王 金 李顏娥 馮海林 王安瀾
(浙江農林大學信息工程學院1,杭州 311300)(浙江省林業智能監測與信息技術實驗室2,杭州 311300)(林業感知技術與智能裝備國家林業局重點實驗室3,杭州 311300)
中國是糧食的生產和消費大國,然而糧食從被種植、收割、運輸到儲存和消費的過程中都會有大量的損失,其中在糧食儲存過程中,由于糧食產后干燥儲藏的方法原始、設施簡陋、工藝落后等原因而導致蟲害的發生,每年中國糧食產量的7%~11%在產后環節被損失掉[1]。此外,害蟲代謝物還會造成糧食發熱霉變、人類過敏以及加工品質降低等一系列損失,最終導致糧食安全問題[2]。通過發現并消除糧倉內的害蟲,將有效地減少糧食損失和提高糧食最后出倉時的質量。因此,研究出一種準確有效的針對儲糧害蟲的圖像檢測模型具有非常重要的意義。
目標檢測是結合了目標定位和識別的2個任務的一項基礎性計算機視覺任務[3]。近年來深度學習[4]迅速發展,其中卷積神經網絡(Convolutional Neural Networks, CNN)[5]是一種具有代表性的深度學習網絡結構,已經廣泛應用于圖像識別領域[6]。小目標是指自身真實的物理尺寸過小或與拍攝設備距離較遠導致其在整幅圖像中占比小的一類目標[7]。將深度學習模型應用到儲糧害蟲的小目標檢測中,需要解決的問題是當圖像中單只儲糧害蟲的像素過小時會導致模型的檢測精度較低,而且不能準確地檢測出圖像中的害蟲位置和種類。因此解決小目標儲糧害蟲圖像的檢測問題將有利于提高儲糧害蟲圖像的目標定位的精度和識別的準確率。
針對現有的公開數據集中儲糧害蟲圖像數據集相對較少,而且深度學習模型的儲糧害蟲目標檢測精度較低的問題,本研究以常見的5種儲糧害蟲為例,建立常見儲糧害蟲圖像的數據集,并對深度學習模型中重要的網絡結構和訓練參數進行了優化和改進,建立一種基于深度學習的儲糧害蟲圖像檢測模型。
近年來,隨著深度學習網絡研究的不斷深入,圖像檢測性能隨之迅速發展。以CNN為基礎,Girshick[8]提出了Fast R-CNN模型,由于感興趣區域(Region of interest, ROI)池化層可接受任意尺寸的輸入,不需要歸一化操作,因此,Fast R-CNN解決了此前網絡需要輸入固定尺寸圖像的問題。任少卿等[9]在Fast R-CNN的基礎上又提出了Faster R-CNN模型,該方法利用區域候選網絡(Region Proposal Network, RPN)生成候選區,進一步提高了檢測精度和速度,并且,Faster R-CNN真正實現端到端的目標檢測框架。
以上模型的發展主要是解決了公開數據集(VOC2007、VOC2012、COCO)的圖像檢測問題,但是針對儲糧害蟲圖像檢測問題的模型相對較少。其中,Shen等[10]提出一種改進的Faster R-CNN模型,該方法對儲糧害蟲的檢測取得了良好的效果。試驗結果表明,該方法能有效地檢測和鑒定儲糧害蟲,其平均精度(mean Average Precision, mAP)達到88%。周亦哲等[11]采用基于深度卷積神經網絡的雙流法網絡,綜合圖像目標檢測算法和兩幀差分法進行識別,實現視頻數據中儲糧害蟲的定位與識別。Chen等[12]基于R-CNN提出一種改進方法,使得R-CNN可以生成更小的候選區域,該改進后的算法在小目標檢測的精度提升非常大,但是算法復雜度較高。
本研究針對小目標儲糧害蟲圖像,提出了一種基于Faster R-CNN的改進方法,以提高儲糧害蟲目標檢測的準確率。
本研究以糧倉中的儲糧害蟲為研究對象,選取了常見的5種儲糧害蟲。分別為赤擬谷盜、米象、豆象、谷蠹和印度谷螟。通過害蟲圖像采集儀器對儲糧害蟲樣本進行拍攝并獲取圖像,該儀器裝備了OV2640型號的圖像傳感器,圖像傳感器拍攝的儲糧害蟲圖像均為1 200×800像素的大小。
傳統的圖像數據集中單張圖像只含有一類害蟲,本研究為了使單張的儲糧害蟲圖像更具有豐富性,進行圖像采集時,儲糧害蟲樣本中包含了一類或者多類害蟲等不同情況。對儀器采集的圖像進行整理后獲得942張儲糧害蟲的圖像。其中,圖像數據集的70%用作訓練集,30%用作測試集。采集獲得的數據集圖像與害蟲數量如表1所示。最后,對儲糧害蟲目標進行人工標框以獲得圖像中每一個目標的種類、位置和大小信息。儲糧害蟲的圖像采集過程如圖1所示。

圖1 儲糧害蟲圖像采集過程

表1 數據集圖像與害蟲數量
數據集的圖像質量是影響網絡模型的訓練與測試結果的重要因素之一,儲糧害蟲體積較小,所以與包含大目標的圖像相比,儲糧害蟲目標圖像含有的目標信息較低,特別是在單張圖像的目標數較少的情況下。因此,為了豐富數據集圖像中的儲糧害蟲目標信息,提高模型訓練過程中匹配的候選區域(anchor)的數量,數據增強將采用儲糧害蟲目標批量擴充的方式。
為防止訓練過程中發生信息泄露,對數據集進行先分組再增強的處理方式,僅對數據集中的訓練集進行數據增強。同時,為防止單張圖像的目標信息過于飽和,實驗對數據集中的訓練集做出目標信息擴充3倍的增強處理。以單張圖像被擴充一倍目標數為例,具體操作的流程圖如圖2所示。部分處理前后的圖像對比如圖3所示,其中,圖3a、圖3b、圖3e和圖3f為原始圖像,圖3c、圖3d、圖3g和圖3h為增強后的圖像。

圖2 單張圖像目標擴充一倍算法流程圖

圖3 圖像處理前后對比
經過數據的采集和處理獲取了包含大量檢測目標的常見儲糧害蟲(Common Stored Grain Pests, CSGP)的圖像數據集。數據增強后的CSGP數據集的圖像與害蟲數量如表2所示。

表2 訓練集增強后數據集圖像與害蟲數量
在一個多層卷積神經網絡中,底層的特征往往能很好地表示圖像的紋理和邊緣等細節信息。隨著神經元感受野的擴大,高層的特征往往能很好地表示圖像的語義信息,但是相應的就會忽略一些細節信息[13]。
卷積神經網絡是一種包含多層次深度卷積運算的前饋神經網絡,典型卷積神經網絡的結構包含卷積層、池化層和全連接層[14]。Faster R-CNN主要由特征提取層、RPN和Fast R-CNN模型的分類層3個模塊組成。原始的Faster R-CNN是一個單尺度的目標檢測卷積神經網絡,這是因為其使用ResNet[15]作為特征提取的基礎網絡時,RPN結構僅采用ResNet網絡的其中一層特征圖,如圖4所示。

圖4 原始Faster R-CNN整體結構
ResNet101的網絡結構如圖5所示,其主要由5個部分組成,分別是:conv1、conv2_x、conv3_x 、conv4_x和conv5_x,其中conv1是卷積層。卷積層的主要功能是特征提取,其包含多個固定通道數的卷積核,卷積核的通道數則是由上一層的輸出或原始圖像的通道數決定。在做卷積運算的過程中,本層的輸入圖像和卷積核首先進行卷積運算,然后經過激活函數計算,最后得到卷積特征圖序列,新的特征圖會被輸出到下一層。其卷積運算的過程表達式可表示為:

圖5 ResNet101網絡模型結構
(1)

ResNet的核心思想是提出了一種快捷連接(Shortcut connection)方法構成的結構塊(Building block),可以有效解決隨著網絡深度的增加,精度迅速下降的問題。在ResNet101中,conv1卷積層之后的conv2_x、conv3_x、conv4_x和conv5_x分別包含了不同個數的結構塊,conv5_x生成7x7的特征圖經過平均池化層(Average pooling)到達最后一層的全連接層(FC)。
ResNet101網絡中越深層次的特征圖越抽象,這更有利于分類。雖然最高層的特征具有最豐富的語義信息,但是分辨率也是最低的,這不利于小目標物體的檢測。
在ResNet作卷積與池化的運算過程中,特征圖的分辨率越來越小,因此底層的特征圖往往具有較高的分辨率,位置信息也可以得到較好的保留,但是底層特征圖針對分類能力的語義信息十分弱。Lin等[17]提出的特征金字塔網絡(Feature Pyramid Networks, FPN)結構在目標檢測方面較大提升了模型的檢測精度,該網絡結構利用底層的特征圖與高層特征圖進行融合,既保留了位置信息,又有較強的語義信息,底層和高層的特征都進行了預測。以ResNet101為基礎的特征金字塔模型結構如圖6所示。

圖6 特征金字塔模型結構
在特征金字塔生成特征圖的過程中,高層的特征圖(M5,M4,M3)首先進行上采樣(x2),使得特征圖變大,然后與經過1×1卷積運算后的底層特征圖進行融合。最后,特征圖融合過程中生成的新特征圖序列進行3×3的卷積運算得到一個多尺度的輸出(P2,P3,P4)。多尺度特征圖P2~P5需要輸入候選區域網絡(Region Proposal Network,RPN)用以產生候選框,同時也需要作為第二階段分類與回歸運算的輸入部分;ResNet網絡最頂層的特征圖經過最大池化生成的最小尺寸特征圖(P6)僅作為RPN的輸入部分。
特征金字塔經過特征提取的卷積與池化運算后,會生成多個不同尺寸的特征圖,但是ROI pooling僅需一種尺寸的特征圖,因此需要在不同尺寸的特征圖之間做出選擇。特征圖的選擇公式如式(2)所示:
(2)
k0為基準值,代表原始層級的輸出。w與h代表ROI的大小,224代表標準的訓練集訓練前輸入的圖像大小。通過式(2)計算,可以得到wh尺寸在ROI映射的目標級別k,將寬度w和高度h的ROI分配給特征金字塔的PK層。當wh越大時,則需要將更高層的特征圖輸入到ROI pooling。
本研究利用TensorFlow框架在Windows 10系統下進行實驗。實驗所用到的硬件配置為: Intel(R) Xeon(R) CPU E3-1 225 v5處理器,主頻3.31GHz,硬盤2T,內存16.0GB,顯卡Nvidia GTX 1 080Ti型號,所用的軟件環境為:Python 3.5.2,TensorFlow 1.14.0,Cuda 9.0,Cudnn 7.0.5。
在目標檢測實驗的過程中會出現正負實例與正負檢測結果的多種匹配情況,TP(True Positive)表示圖像中的目標為正實例,檢測結果也為正實例;FP(False Positive)表示目標為正實例,檢測結果卻為負實例;TN(True Negative)表示目標為負實例,檢測結果卻為正實例;FN(False Negative)表示目標為負實例,檢測結果同為負實例。通過目標實例類型與檢測結果之間的匹配關系的分析,可以更好地對網絡模型在圖像中的目標檢測性能進行評估。
為了評估Faster R-CNN模型在不同數據集下的檢測精度,在模型訓練完成后,使用測試集對Faster R-CNN生成的模型結果進行測試并對結果進行比較,在測試過程中,采用各類儲糧害蟲目標檢測的平均精度(average precision,AP)作為驗證指標。通過檢測過程中的TP、FP和FN的統計與計算可以得到召回率(recall)與準確率(precision),如式(3)與式(4)所示。在獲得召回率與準確率值后進而得到平均精度,如式(5)所示。采用平均精度均值(mAP)作為模型整體檢測結果精確度的評價指標,mAP值為所有類害蟲的目標檢測精度AP的求和平均數。

(3)

(4)

(5)
在數據增強處理結束后分別得到了3種的樣本組合情況:原始訓練集 (original training set, OTS)、數據增強處理的數據集(augmentation training set,ATS)和原數據集+增強處理的數據集(OTS + ATS),以下在Faster R-CNN網絡模型中分別對這3種情況進行實驗,最終得到每一類害蟲圖像目標的檢測精度AP和Faster R-CNN模型下整體的檢測性能mAP,如表3所示。
從表3可以看出實驗中使用增強后的數據集(ATS)比原始數據集(OTS)以及兩種混合的數據集(OTS+ATS)在mAP方面的表現比較好,主要表現在谷蠹(RhizoperthaDominica)和印度谷螟(PlodiaInterpunctella)的檢測精度有一定的提升,尤其在印度谷螟的目標檢測方面的檢測精度提升較大。

表3 數據增強前后的檢測精度對比
儲糧害蟲圖像經過特征提取層可以生成不同層的特征圖,而改進后的特征提取層利用到了每一層特征圖進而提升了模型對圖像的特征提取能力。為了比較改進前后模型的變化,利用IoU定義真實對象與預測對象之間的匹配度,通過在較好表現的ATS(CSGP)數據集上進行訓練與測試,最后計算得出不同模型下的每一類害蟲目標的精度召回率(precision-recall,PR)曲線。PR曲線如圖7所示,其中a表示改進前的模型下的PR曲線,b表示改進后的模型下的PR曲線。


圖7 不同模型下的PR曲線
從圖7中可以看出不同網絡模型下的差別主要在谷蠹(RhizoperthaDominica)的檢測,以及在召回率(recall)較大時其他類害蟲的精度差距。其中,谷蠹、赤擬谷盜(TriboliumCastaneum)和米象(SitophilusOryzae)在圖7b中的PR曲線下面積都要大于圖7a中的PR曲線下面積,另外其余的兩類害蟲在不同的模型都表現很好的檢測效果,而且圖7b略優于圖7a中的效果。
(6)
為了比較改進前后模型的CGPS數據集的檢測精度,通過統計不同訓練階段下的模型F1分數(F1)可以得到模型的F1值變化曲線,如圖8所示,F1值計算如式(6)所示。圖8表示在不同迭代次數下的F1值變化,其中,a表示改進前模型下的F1曲線,b表示改進后模型下的F1曲線。

圖8 改進前后的F1值變化
從圖8可以看出,不同模型下的害蟲圖像目標檢測都表現出較好的效果。圖8a首先達到90%的檢測精度,并且在后續的迭代過程中始終保持著90%以上的檢測效果,圖8b在達到較穩定的F1值時則需要較多的迭代次數。在檢測精度趨于穩定時,圖8a都要優于圖8b的效果且維持在90%以上。由于在F1值趨于穩定時仍有一定波動,因此,通過計算迭代次數在12k~20k之間的F1值的平均數對模型的檢測精度進行評估,計算后可以得到改進后的模型F1均值為92.71%,相比較于改進前的模型F1均值提升了4.91%。
R-FCN[18]是在Faster R-CNN的基礎上采取的另一種改進方法,為對比R-FCN模型、改進的檢測模型(Faster R-CNN*)以及YOLOv3[19]模型的檢測精度和實時性,將3種不同模型在CSGP數據集上進行訓練和測試集檢測,通過計算每一類害蟲目標的AP值、模型在CSGP數據集上的mAP值和每秒傳輸幀數(Frames Per Second, FPS)可以得到表4所示的對比結果,FPS計算公式如式(7)所示。

表4 不同模型的檢測精度與實時性對比
(7)
式中:FrameNum為檢測測試集圖像的數量,ElapsedTime為檢測測試集消耗的時間。
從表4中可以看出,改進的儲糧害蟲目標檢測模型(Faster R-CNN*)的檢測精度mAP達到了96.69%,相比于表3中的改進前的模型提高了4.08%。在表4中的Faster R-CNN*模型的各類害蟲檢測精度AP和在CSGP數據集上的平均精度均值mAP均高于其他兩類模型;在FPS方面,Faster R-CNN*模型與YOLOv3模型相差不大,R-FCN模型則有較高的傳輸速率,但R-FCN模型精度較低。
為了將儲糧害蟲圖像的檢測結果更直觀得表現出來,對基于兩種不同特征提取層的網絡模型的檢測結果進行可視化操作。部分的可視化結果如圖9所示,其中圖9a、圖9b、圖9e和圖9f為改進前模型的檢測結果,圖9c、圖9d、圖9g和圖9h為改進后模型的檢測結果。從圖9結果中可以看出,原始網絡模型的漏檢率與誤檢率較高,改進后的模型較好的解決了這個問題,因此改進后模型具有較高的準確性和精度。

圖9 改進前后模型檢測結果的可視化
在特征圖融合過程中,語義信息很強的特征圖將底層位置信息很強的特征圖進行了橫向連接,并且進行了多次的特征融合。由于特征圖在同時利用到了高層特征,所以有很強的語義信息。橫向連接后的特征圖更有利于精準的定位和小物體的識別。
在實際應用儲糧害蟲監測系統時,由于系統的檢測模型所需的硬件條件較高,而且會對糧倉內的環境造成影響,因此系統很難被直接放置在糧倉內。本研究通過采取云計算的方式,將儲糧害蟲圖像的采集與處理過程分隔開,可以較好地解決由于系統硬件限制的問題,該系統整體結構如圖10所示。在系統實施時,首先將圖10a儀器進行封裝,并保留若干細微孔洞以供害蟲進出,儀器在封裝后可以被埋沒在糧倉內,如圖10b,然后定時對儀器內害蟲進行拍攝并將圖像數據上傳至云服務器;部署在云服務器上的檢測模型對上傳的圖像數據進行處理,并將結果保存在云服務器上;最后,該系統通過數據可視化網站對結果進行展示,如圖10c。

圖10 儲糧害蟲監測系統
本研究針對小目標儲糧害蟲圖像中的圖像檢測問題,采用PIL庫中的Image類進行目標擴充的方式增加訓練集中的樣本目標數量,并且提出了一種Faster R-CNN的改進方法。通過特征金字塔網絡中的特征圖下采樣方式,增強特征提取層輸出的特征圖中目標的位置信息和分辨率,使得輸入的原始圖像的位置信息與語義信息在網絡模型中都能得到很好的保留與利用;通過對優化后的特征提取層產生的特征圖進行RPN和ROI Pooling運算,提高了預測框的準確性,從而增強了儲糧害蟲圖像檢測的整體準確性和精度。實驗結果表明,本研究通過儲糧害蟲目標數量擴充的方式在mAP上提升了2.21%;通過改進網絡模型算法,網絡模型在CSGP圖像數據集上的mAP達到了96.69%,較改進前的網絡模型提升了4.08%,減少了原始模型在數據集檢測中的漏檢率和誤檢率。最后通過在云服務器上部署檢測模型的方式,對儲糧害蟲監測系統進行了設計。