周 劍,徐中貴,謝知音
(1.湖北民族大學林學園藝學院,湖北 恩施 445000;2.湖北民族大學智能科學與工程學院,湖北 恩施 445000)
隨著機械化農業(yè)與計算機視覺的快速發(fā)展,在深度卷積神經網絡的技術支持下,水果識別檢測、果實產量預測等成為目前農產品生產工業(yè)的研究熱點[1]。柑橘產業(yè)在我國水果產業(yè)中的占比相對較重,產量上升的同時導致柑橘在生產過程中所需要的勞動力也在增加[2]。而柑橘分級在柑橘生產中是一重要環(huán)節(jié),該環(huán)節(jié)工作量大,人工分級易出錯。因此,實現(xiàn)柑橘的高效精確分級研究至關重要。
近年來,國內外關于水果的分級檢測研究提出了多種解決方案。傳統(tǒng)水果圖像識別技術主要利用水果的顏色、紋理、幾何形狀特征進行水果定位識別[3]?;谒伾卣髦饕霉麑嵟c背景之間的顏色差別,將目標與背景分開。熊俊濤等[4]提出使用YCbCr 顏色模型對荔枝圖像進行閾值分割,去除復雜背景,可實現(xiàn)荔枝果實與果梗的識別。項榮等[5]使用基于邊緣曲率分析的方法去識別被輕微遮擋的番茄,對遮擋率為25%~50% 的番茄目標的識別正確率達76.90%。HUSSIN 等[6]使用霍夫變換對柑橘進行識別檢測,檢測準確度較低,且在柑橘重疊嚴重時,易出現(xiàn)錯誤檢測。SENGUPTA等[7]提出由Hough 圓檢測結合基于支持向量機的紋理分類等技術對戶外柑橘進行檢測,算法準確率達到80.4%。WU 等[8]采用顏色結合形狀特征進行水果分割,利用水果像素特征粗分割,同時采用點云簇的視點特征直方圖(viewpoint feature histogram,VFH)精分割水果區(qū)域,準確率達到80.09%。以上傳統(tǒng)識別技術受環(huán)境因素影響大,特征提取復雜,并且難以對水果進行實時性檢測。
隨著深度學習的深入研究,目標檢測算法在水果識別領域得到了廣泛應用。GAN 等[9]將彩色圖像與熱圖像進行結合,采用Faster-RCNN 對圖像進行實時檢測,達到了較高的識別精確度。由于兩階段算法存在檢測速度慢等問題,REDMON 等[10-12]在2016 年提出You Only Look Once(YOLO)算法用于對象檢測,該算法將區(qū)域建議網絡(RPN)與分階段訓練進行結合,實現(xiàn)網絡結構簡單的同時,具有較快的計算速度與較高的計算效率,體現(xiàn)出了較好的檢測性能,使其成為真正意義上的實時檢測器。王輝等[13]將YOLO 算法進行改進后提出一種水果識別模型,將網絡中原有的Batch Normalization 方法用Group Normalization 方法替代,并對其參數進行優(yōu)化,實現(xiàn)目標檢測的實時性,但算法中的特征金字塔網絡模塊對特征進行融合的效果較差,不能充分提取到水果的特征,進而導致檢測效果不理想。華南農業(yè)大學薛月菊團隊[14]對于果園場景下的芒果采摘問題,將YOLOv2 網絡進行改進,設計出新的密集連接網絡,較好地解決了果實遮擋與重疊問題,同時采用目標前景標注方法,大大提高了對于未成熟芒果的檢測準確率。呂石磊等[15]也提出一種改進的YOLOv3-LITE 輕量級神經網絡,該網絡將GIOU 邊界回歸損失函數進行引入從而實現(xiàn)目標果實識別的回歸框準確率。
本文基于目標檢測算法在水果識別領域的研究,提出一種使用YOLOv3-SPP 的柑橘分級研究,利用YOLOv3 算法的多尺度特征融合檢測結合空間金字塔池化,實現(xiàn)多尺度的輸入加上多尺度的識別檢測。通過該算法可實現(xiàn)食品工業(yè)環(huán)境下柑橘的快速分級,為水果產業(yè)提高技術支持。
本次試驗所采用的試驗對象為處于不同生長周期的柑橘果實,根據果實的成熟度進行后續(xù)劃分。由于目前沒有現(xiàn)成的柑橘分級圖像數據集,因此需要采集大量圖像來建立新數據集。數據集中的圖像樣本采集自湖北省宜昌市秭歸縣的臍橙,在自然光照條件下用相機進行拍攝,圖像分辨率為3 864×3 864,共拍攝圖像500 張。
本研究將柑橘按照柑橘表面著色率的高低,將柑橘劃分為4 個等級,分別是一級(著色率為25%以下)、二級(著色率為50%左右)、三級(著色率為75%左右)、四級(著色率為95%以上)。圖1 為各劃分等級的柑橘示意圖。
圖1 各劃分等級的柑橘示意圖
深度卷積神經網絡在訓練過程中,數據集的數量對于模型最終的性能表現(xiàn)具有重要作用。試驗中所采集的圖像是有限的,圖像中的目標可能存在于不同的環(huán)境中,所采集到的圖像并不能較好地體現(xiàn)出數據的完整性,因此需要對數據進行增強操作。數據增強并不是簡單的數據擴充,而是模仿物體處于不同場景中的姿態(tài),比如在不同的方位、亮度、位姿、縮放比例等。
常用的數據增強的方法主要有:圖像翻轉、圖像旋轉、圖像裁剪、亮度增強與減弱、圖像模糊、添加噪聲等,通過數據增強所生成的圖像是很難從有限條件下的場景中獲得的,因此數據增強對于數據集的完整性具有重要作用。本文中所用到的數據增強方式如圖2 所示。
圖2 模擬不同環(huán)境的數據增強效果
數據增強的作用主要體現(xiàn)在:①可有效地避免模型過擬合,當數據集中的數據存在一種顯著的特征信息時,例如在同一個場景拍攝有多張圖像,可采用數據增強的方法避免模型學習到與目標不相關的特征信息。②可提高模型的穩(wěn)定性,降低模型對于圖像的靈敏度,當圖像中的檢測目標出現(xiàn)遮擋、亮度缺失、模糊等狀況時,通過數據增強的方式,對訓練數據添加噪聲等方法提高網絡模型在訓練過程中的穩(wěn)定性。③增加訓練的試驗數據,提升算法模型的泛化能力。④避免因數據較少造成的樣本不均衡,在正負樣本不平衡的情況下,需要對樣本較少的一方進行數據增強,降低不均衡比例。經過圖像增強后的數據集將圖像擴充到1 846張,使用1 476 張圖像進行網絡模型的訓練,370 張圖像用來對模型的檢測性能進行驗證。樣本統(tǒng)計結果如表1 所示。
表1 柑橘數據集樣本統(tǒng)計
基于深度學習的目標檢測算法需要從大量的數據中提取有效信息,因此數據集的質量與數量在算法訓練過程中顯得尤為重要,選擇一種適合目標檢測算法訓練的數據集也是關鍵所在。對于數據集的制作,除了對柑橘圖片的采集外,還需要對所采集到的數據進行類別標注,標注原理是對圖像中需要識別的物體進行標記,只有經過標注后的圖片數據才可為目標檢測算法模型提供真實值,模型根據真實值與預測值之間的關系才可進行反向傳播,進而更新參數。根據本次試驗所采集的圖片數據,對所有圖片進行標注工作。
本次試驗所有數據集由標注工具LabelImg 標注,LabelImg 工具是一個圖形圖像注釋工具。通過使用矩形框手動框選出含柑橘的圖像中的柑橘目標位置,該矩形框包含了柑橘目標在圖像中的位置信息,再根據事先規(guī)定好的柑橘類別標簽進行劃分。值得注意的是每一張圖片中的柑橘目標都需要被標記,不可漏標或錯標,以免提供錯誤的信息給模型,進而影響模型的訓練。
1)骨干網絡。YOLOv3 用于提取特征的骨干網絡為Darknet53,主要借鑒于YOLOv2 網絡中的Darknet19 結構。不同于Darknet19 的是,Darknet53結構中采用了大量的殘差結構,去掉了池化層,采用步長為2、卷積核大小為3×3 的卷積層代替池化層的下采樣工作,其網絡結構如表2 所示。
表2 Darknet53模型結構
續(xù)表
Darknet53 作為YOLOv3 的主干網絡表現(xiàn)出兩大特點,其一是Darknet53 中大量使用殘差結構,該殘差結構的主要工作步驟為:①采用卷積核大小為3×3,步長為2 的卷積對特征圖進行處理,該卷積可壓縮特征圖尺寸,將壓縮后的特征圖層命名為layer。②對layer進行1次1×1的卷積與1次3×3 的卷積,將卷積后的結果與layer 進行有效疊加,進而形成殘差結構。通過如此不斷疊加,即可加深網絡深度來提高準確率,殘差結構中使用skip connections 解決了加深網絡導致的梯度爆炸與梯度消失問題。其二是Darknet53 中每一個卷積都采用了DarknetConv2D 結構,并對每一個卷積進行L2 正則化,之后再進行Batch Normalization 與LeakyReLU。
2)YOLOv3 網絡結構。YOLOv3 通過結合目標檢測領域的高性能模塊,實現(xiàn)了速度與精度上的均衡。YOLOv3 目標檢測算法主要對遮擋物進行回歸處理。YOLOv3 算法網絡架構如圖3 所示,首先,將416×416的三通道圖像輸入進網絡,經過一系列的特征提取,可得到3 種不同特征大小的圖像,分別為13×13、26×26、52×52。然后網絡將預測特征圖劃分為S×S個單元格,當待檢測目標的中心點落入某單元格中時,該單元格則負責檢測該目標,每個單元格預測多個邊界框的位置信息與置信度。對于COCO 數據集,輸出的預測特征圖維度大小為255,最終輸出的特征圖大小為13×13×255、26×26×255、52×52×255。
如圖3 所示,該網絡的骨干網絡是基于Darknet53 結構的,網絡中主要使用1×1 與3×3 的卷積核,其中1×1 的卷積核用于增加非線性特征以及簡化網絡訓練的參數,3×3 的卷積核則是為提取圖像上的特征信息。DBL 模塊表示一個卷積塊,其后進行Batch Normalization 歸一化處理以減少過擬合導致的檢測效果不佳的問題,并在最后采用Leaky RELU 激活函數。res 模塊為殘差模塊,主要借鑒了殘差網絡,采用跳躍連接的方法解決深層網絡帶來的梯度爆炸與梯度消失問題。為增強網絡提取特征信息的能力,將網絡的輸入圖像大小調整為512×512。
圖3 YOLOv3 網絡結構
在傳統(tǒng)深度卷積神經網絡中,卷積層后一般跟著全連接層,全連接層的結構是固定的,其中特征數是預先設計好的,故網絡輸入尺寸也需固定。但在實際訓練過程中,輸入圖像的尺寸大小不一,通常需要進行圖像預處理,包括圖像裁剪與圖像拉伸等操作。但在對輸入圖像進行處理的過程中,圖像的原始尺寸大小與比例都會隨之改變,進而改變圖像中保存的原始信息。何凱明等[16]提出的SPP(Spatial Pyramid Pooling)能夠較好地解決該問題。
SPP 的主要工作原理是在卷積神經網絡中的卷積層后加入SPP層,SPP 層將特征圖處理成固定尺寸的特征矩陣,最后將特征矩陣輸入到全連接層中,完成網絡后續(xù)訓練。SPP 在網絡訓練過程中表現(xiàn)出的優(yōu)點在于,一方面解決了proposal regions 的尺寸問題,即將不同尺寸的輸入圖像進行尺寸統(tǒng)一化,進而產生固定長度的輸出。另一方面,SPP 中包含的池化結構為多層級而非單一層級的池化核,可對不同尺度的特征進行池化處理,并且處理后的結果可實現(xiàn)共享,節(jié)省了大量計算時間。SPP 模塊的結構如圖4 所示。
圖4 SPP 模塊
在對柑橘分級檢測過程中,圖像采集設備所采集到的圖像往往沒有很清晰,這使得圖像識別算法難以識別,按照原有的YOLOv3 網絡需要對輸入圖像進行裁剪和變形,此類操作容易丟失圖像原始的特征信息。在這種情況下,柑橘中存在的難以檢測的缺陷以及不明顯的顏色差異將影響柑橘的分級效果。針對這一問題,本研究中使用的網絡YOLOv3-SPP 在YOLOv3 網絡的基礎上進行了性能改進。YOLOv3-SPP網絡主要是在YOLOv3 網絡中加入SPP 模塊,使得網絡可接受不同尺寸的輸入圖像,并對不同尺度的特征進行提取,其網絡結構如圖5 所示。
圖5 YOLOv3-SPP 網絡結構
損失函數(Loss Function)本質上是用來計算模型訓練過程中預測值與真實值之間的差距的一類函數。本次試驗所采用的損失函數為交叉熵損失函數(Cross Entropy Error Function)。函數表達式為
式中:
yi——樣本的真實概率;
該函數表述了真實值與預測值之間的差距,差距越小,交叉熵則越小,即預測結果越準確。
本試驗采用Pytorch 作為柑橘分類模型搭建和試驗平臺,模型在GPU 環(huán)境下運行。具體配置如表3 所示。
表3 試驗具體配置
深度學習模型在學習任務過程中的性能表現(xiàn)需要定量的指標進行評估,才可對模型的整個性能進行橫向對比。評價指標主要是利用試驗數據進行對比分析得出一個評判標準,良好的評價指標能夠較好的判斷算法的有效性和合理性,還可根據評價結果分析出深度學習模型中存在的問題與不足,進而實現(xiàn)有目的性的改進。
深度學習中常用的評價指標包括:混淆矩陣(Confusion Matrix)、準確率(Accuracy)、精確率(Precision)、召回率(Recall)、平均精度(Average Precision)、mAP(mean Average Precision)、IoU 等。
1)混淆矩陣(Confusion Matrix)是評判模型結果的指標,主要用于判斷分類器的好壞,也可稱為誤差矩陣。混淆矩陣中包含的參數主要有:TP(正樣本被正確檢測為正樣本)、TN(負樣本被正確檢測為負樣本)、FP(負樣本被錯誤檢測為正樣本)、FN(正樣本被錯誤檢測為負樣本),混淆矩陣的主要結果如圖6 所示。
圖6 混淆矩陣示意圖
2)準確率(Accuracy)為正確分類的樣本數與總樣本數的比值,其計算方式為
3)精確率(Precision)為正確分類的樣本數與檢測出的樣本數的比值,其計算方式為
4)召回率(Recall)為正確分類的正樣本數與正樣本數的比值,其計算方式為
5)AP(Average Precision)是P-R曲線與兩坐標軸所圍成的面積,P-R 曲線是以Recall 為橫坐標,Precision 為縱坐標繪制成的曲線。mAP(mean Average Precision)為多個類別的AP 的平均值,其計算方式分別為
由于精確率與召回率呈反比關系,導致兩參數在模型訓練中不可同時調整,進而影響模型的查準率,P-R 曲線將精確率與召回率用曲線的方式進行分析,找到兩參數間的平衡點,實現(xiàn)高精度的同時降低錯誤目標的概率,因此采用P-R 曲線來用于評判目標檢測算法的檢測性能。
本文主要采用的模型性能評價標準為平均精確率(AP)以及平均召回率(AR)。
3.3.1 不同交并比對模型性能的影響
本文采用自制柑橘數據集對網絡進行性能測試,在訓練參數方面,默認模型多尺度訓練,batch size 設置為16,使用momentum 動量優(yōu)化,動量參數選擇為0.9,初始學習率設置為0.001,在訓練過程中對學習率進行衰減調整,初始學習率較大,模型收斂較快,訓練后期使用衰減后的學習率可使模型找到最優(yōu)權重,模型迭代次數為500 次。
交并比(Intersection-over-Union,IoU)為目標檢測技術中的一個重要參數,是生成的候選框與所標記的框的重合率,即兩者的交集與并集的比值,其計算方式為
式中:
C——候選框(candidate bound);
G——標記框(ground truth bound)。
本試驗將探討不同交并比對模型平均精度所造成的影響,分別測試交并比為0.50:0.95、0.50、0.75時對模型造成的影響,具體情況如圖7 所示。當IoU 為0.50:0.95,即交并比IoU 閾值設為0.50 到0.95,步長為0.05時,模型平均精度相對較低且變化幅度大;當IoU 為0.50(交并比閾值設為0.50)時,模型平均精度開始上升并趨于穩(wěn)定狀態(tài);當IoU 為0.75(交并比閾值設為0.75)時,模型平均精度在前者基礎上不再上升并處于穩(wěn)定狀態(tài)。
圖7 不同交并比的平均精度對比
為驗證該算法對于柑橘多分級工作的有效性,在相同數據集、相同試驗條件下的基礎上,對不同交并比的訓練結果進行對比分析,表4 列出了模型訓練完成后的平均精度對比。
表4 不同交并比結果對比
3.3.2 不同最大檢測目標數對模型性能的影響
本試驗在交并比固定的情況下,研究不同最大檢測目標數對模型平均召回率的影響,分別測試最大檢測目標數為1、10、100 時對模型性能造成的影響,具體情況如圖8 所示。當圖像中存在的最大檢測目標數為1 和10時,由于所設定的檢測目標數較小,導致模型訓練出的結果并不理想;當圖像中存在的最大檢測目標數為100時,模型表現(xiàn)出的性能較為優(yōu)越。
圖8 不同最大檢測目標數的平均召回率對比
不同的損失函數會對訓練模型的收斂情況造成直接的影響,本試驗使用交叉熵損失函數對模型進行訓練,分別分析了模型的損失、定位損失、類別損失以及置信度損失的收斂情況。訓練損失結果如圖9 所示:(a)為模型的損失值變化曲線,(b)為模型的定位損失值變化曲線,(c)為模型的類別損失值變化曲線,(d)為模型的置信度損失值變化曲線。
圖9 模型損失圖
在模型訓練過程中,模型的迭代次數與模型整體性能并不成正比,網絡模型在收斂過后若再進行訓練,模型將進入過擬合狀態(tài)。訓練過程中,模型損失處于穩(wěn)定狀態(tài)不再下降,表示模型已訓練完成。如圖9 所示為YOLOv3-SPP 柑橘分級算法的訓練損失圖,可以看出隨著迭代次數的增加,損失在不斷降低,模型開始走向收斂,迭代到350 次之后開始走向穩(wěn)定。
本文提出一種基于YOLOv3-SPP 的算法對食品工業(yè)環(huán)境下的柑橘進行分級檢測,通過構建柑橘數據集以及相應的數據處理操作,以提高深度卷積神經網絡的泛化能力。利用SPP 模塊特有的結構,使得網絡可接受不同尺度的輸入特征圖,并對不同尺度的特征進行提取,從而提升了模型對圖像中存在的特征信息的提取能力,進而提高模型的整體性能。通過運用基于空間金字塔池化的YOLOv3 網絡對柑橘的多分級檢測精確率達到95.08%。該模型基于其自身的快速精確的特點,在加入空間金字塔池化后對柑橘表面特征有了更好的提取能力,能夠提取到更多的柑橘表面特征信息。該網絡在對于柑橘多分級工作表現(xiàn)出的效果優(yōu)異,有助于提供食品工業(yè)下柑橘產業(yè)的產品生產率,解決柑橘分級量大,消耗勞動力大,工作效率低等問題。
本次試驗所構建的數據集只針對一個品種的柑橘,并不能實現(xiàn)多類別的柑橘分級,后續(xù)可根據實際需求增加數據集的類別與數量,完成更加多量的柑橘分級工作。