周逸博,馬毓濤,趙艷茹,
(1.西北農林科技大學機械與電子工程學院,陜西 楊凌 712100;2.農業農村部農業物聯網重點實驗室/陜西省農業信息感知與智能服務重點實驗室,陜西 楊凌 712100)
【研究意義】蘋果產業在我國國民經濟中占重要地位,生產高品質蘋果是發展蘋果產業的關鍵。蘋果樹皮病害是造成我國蘋果單產水平不良的制約因素之一[1]。及時、精準地進行蘋果樹皮病害診斷,有助于病害的早期對癥治療以及果園的精準管理。因此,開發隨時可以進行樹皮病害識別的手機APP 系統,有助于果農快速識別果樹病害,進而采取有效防治措施,對蘋果產業保質增產具有重要意義。
【前人研究進展】目前果樹的病害檢測主要依賴人工感官判定和生物測定[2]。人工感官判定多通過目測判斷果樹病害情況,費時費力,且需在病害癥狀明顯時進行判斷,易造成誤判[3]。生物測定法如聚合酶鏈式反應(PCR)、酶聯免疫吸附試驗技術(ELISA)等,可以直接檢測出病原物種類,準確度高,但操作復雜、成本高,還具有破壞性,難以大范圍推廣[4-8]。因此,尋找一種快速、準確、無損且推廣性強的果樹病害檢測方法很有必要。機器視覺在農業病害識別領域應用非常廣泛,主要依賴于圖像處理方法得到相應結果[9]。但傳統圖像處理方法相對較為明顯,例如,對動態目標識別能力差,智能化程度仍不夠高,需要人工輔助等[10]。通過機器學習算法進行病害識別需按照單一病害特征進行人為數值設定后做相應識別,無法進行多種病害同時檢測[11],且對移動端配置要求高,占用資源多。與機器學習相比,深度學習網絡算法精確度更高,在數據集訓練過程中準確率不斷提升且趨于飽和,方便客戶使用。Krizhevsky等[12]在2012年首次將深層卷積神經網絡Alex Net[13]應用于大規模圖像分類中。近年來深度學習網絡模型在植物病害研究中逐漸深入,它能夠對植物病害的淺層圖像特征進行更深層的挖掘,提取出“高層”特征,并進行模型構建實現植物病害的檢測分類[14]。王宏樂等[15]使用RestNeSt-50、VGG-16 和RestNet-50 3 種網絡結構進行測試,通過調節訓練集中實驗室場景圖片與田間場景圖片的分布,使深度學習模型對柑橘黃龍病、蘋果黑星病、芒果細菌性斑點病識別準確率均達到90%以上。Redmon等[16]于2016 年提出的YOLO 系列算法已經在目標檢測領域得到了較為廣泛的應用,YOLO 算法系列經歷了從v1 到v5 的發展,其中YOLO v5 深度學習網絡模型具有體積小、速度快、精度高等優點,可以在生態成熟的PyTorch 中實現,網絡訓練及部署較該系列之前的模型更為簡單,方便用戶對自己需要的網絡模型自行訓練。YOLO v5 借鑒了Cut Mix 方法[17],采用Mosaic數據增強方式有效解決了模型訓練中最頭疼的“小對象問題”。而YOLOv5s 是YOLO v5 模型中體積最小的網絡模型,其權重僅27 MB,可以實現實時識別的功能,體積較小可以完成Android端的相應部署。
【本研究切入點】以往研究只能對某種特定蘋果樹皮病害進行單一識別,且由于深度學習網絡模型較大而很難實現移動端的部署。本文使用的YOLOv5s 模型是輕量級深度學習網絡模型,可以有效實現Android 端的部署,嵌入Android 端的同時不會影響蘋果樹皮病害識別模型的正常運行,且可以同時對3種蘋果樹皮病害進行識別。【擬解決的關鍵問題】本設計選擇YOLOv5s 作為蘋果樹皮病害的識別網絡模型,并在Android 端進行部署,實現對蘋果樹皮主要病害:輪紋病、干腐病和腐爛病的準確快速識別。
YOLOv5s 網絡結構由輸入端、Backbone(主干網絡)、Neck 網絡和Prediction(輸出端)四部分組成。各部分的主要功能和網絡結構如下[18]:
(1)輸入端:Mosaic 數據增強模塊、自適應錨框計算模塊,自適應圖片縮放。
(2)主干網絡:Focus 結構和CSP 結構。
(3)Neck 網絡:FPN+PAN 結構。
(4)輸出端:GIOU_Loss。
整體網絡結構如圖1[19]所示:

圖1 YOLOv5s 網絡結構Fig.1 YOLOv5s network structure
1.1.1 Mosaic 數據增強 輸入端使用Mosaic 數據增強方式對整體數據集合進行隨機縮放、隨機剪裁以及隨機排布,得到輸入端相應數據[20]。
1.1.2 自適應錨框計算 在YOLO 系列檢測算法中,系統會在初始階段設定好默認的錨框尺寸,并在輸入不同圖像進行訓練時,輸出與默認錨框尺寸相應的預測框,將人為標注得到的真實框和訓練過程得到的預測框進行對比,計算兩者的偏差,之后再進行反向更新,迭代網絡結構中的參數。YOLOv3、YOLOv4 需要通過單獨運行特定程序計算初始錨框值,而YOLOv5s 將該功能嵌入到相應的算法結構中,實現了對于不同訓練集進行錨框計算的自適應性。
1.1.3 自適應圖片縮放 YOLOv5s 算法對原始圖像進行縮放操作時,可以根據輸入圖片的不同尺寸,自適應添加最少黑邊,使計算量得到一定程度的減少,從而進一步提高該網絡的目標檢測速度[21]。
1.2.1 Focus 結構 Focus 結構可進行切片操作[22],YOLOv5s 網絡中的Focus 結構使用了較少的32 個卷積核,能夠將尺寸為640×640×3像素的三通道圖像經相應的切片操作變成320×320×12 像素的特征圖,并通過32 個卷積核的卷積操作,最終變成320×320×32 像素的特征圖。
1.2.2 CSP 結構 YOLOv5s 中的CSP 有兩種結構,一種為主干網絡中的CSP1_X 結構,另一種為位于Neck 中的CSP2_X 結構。CSP 模塊中所含有的卷積核大小均為3×3,步進值為2,若輸入的圖像尺寸為640×640 像素,那么它的特征圖尺寸變化規律是:640×640 -> 320×320 -> 160×160-> 80×80 -> 40×40 -> 20×20,最終得到一個20×20 像素大小的特征圖。
FPN 是自上而下通過上采樣操作,將高層的特征信息和低層的特征信息進行融合,進而計算出預測的特征圖[23-24]。YOLOv5s 網絡結構中在FPN 層后面還添加1 個特征金字塔,該金字塔結構自下向上,其中有2 個PAN 結構,通過下采樣操作,將低層的特征信息與高層特征進行融合,輸出預測的特征圖。
目標檢測算法的損失函數一般由Classificition Loss(分類損失函數)和Bounding Box Regeression Loss(回歸損失函數)兩大部分組成。其中回歸損失函數近幾年的發展過程為:Smooth L1 Loss ->IOU_Loss(2016)-> GIOU_Loss(2019)->DIOU_Loss(2020)-> CIOU_Loss(2020)。GIOU_Loss損失函數為:

式中,Δ為最小外接矩形與預設框差值;C為最小外接矩形。
GIOU_Loss函數增加了相交尺度的衡量方式,有利于解決邊界框有時不重合的問題。
輸入端將輸入圖片進行縮放裁剪得到相應預測框,并自適應添加最少黑邊。主干網絡將輸入端的圖片進行切片處理完成卷積操作,得到特征圖。Neck 網絡通過上采樣下采樣操作,將低層和高層特征進行融合得到預測特征圖。最后通過輸出端的損失函數完成所訓練的網絡模型評估。
蘋果樹皮原始數據集部分采集于西北農林科技大學南校區,部分為網絡已有蘋果樹皮病害照片,共獲得蘋果樹表皮圖片470 張,其中包含干腐病151 張、腐爛病160 張、輪紋病159 張。3種待測病害如圖2 所示。

圖2 所需識別的3 種蘋果樹皮病害Fig.2 Three apple bark diseases to be recognized
本設計使用LabelImg 軟件對所采集的蘋果樹皮患病部位進行人為標注,其中使用的三類標簽名分別為canker(腐爛病)、ring rot(輪紋病)、dry rot(干腐病),如圖3 所示。標注完圖片后得到相應的xml 文件,構成所需數據集。

圖3 使用LabelImg 標注樹皮患病部位Fig.3 Using LabelImg to mark the diseased part of bark
為滿足深度學習要求,盡可能豐富數據集,將采集的病害圖片進行左右翻轉以及飽和度、對比度、明暗度調整,完成數據集的擴增。總體擴增8倍后的數據集共有圖片3 697 張,該組圖片即為本設計的使用數據集。為保證訓練的數據盡可能的多以及測試集的普遍性,將訓練集與測試集按照8 ∶2 比例進行劃分。
使用的網絡訓練環境配置為:Geforce GTX 1650 GPU;Intel(R) Core(TM) i7-9750H CPU;內存8G;CUDA 11.6。Android 端調試機型為:OPPO R15 機型,運行內存6G,CPU 型號為聯發科Helio P60。
采用的模型評估指標主要包括:準確率、召回率、調和均值以及平均精度均值。準確率和召回率越高,樹皮病害識別效果越好,準確率與召回率為負相關關系。調和均值和平均精度均值是需要同時考慮準確率和召回率的量化指標,調和均值和平均精度均值越大,則代表樹皮病害識別效果好。
使用PyTorch 將制作好的數據集放入YOLOv5s 模型中,劃分測試集和訓練集,開始相應模型訓練,隨機選擇測試圖片帶入訓練好的模型中進行測試,結果如圖4、圖5、圖6 所示。左側圖片為未進行識別的測試圖片,右側圖片為測試結果。

圖4 干腐病模型識別測試Fig.4 Recognitiion test of dry rot disease model

圖5 輪紋病模型識別測試Fig.5 Recognitiion test of ring rot disease model

圖6 腐爛病模型識別測試Fig.6 Recognitiion test of canker disease model
將深度學習網絡模型部署到Android 端需要借助第三方框架。騰訊公司推出的ncnn 是針對移動平臺優化的高性能神經網絡推理計算框架。ncnn 沒有第三方依賴項,是跨平臺的,在手機CPU 上運行速度比所有已知的開源框架都快,開發者可以通過高效的ncnn 實現,輕松將深度學習算法模型部署到移動平臺,打造智能APP。使用ncnn 框架在Android 端部署模型需要將.pth 文件格式的模型轉換為ncnn 框架所特有的ncnn 格式模型(.bin 和.param)。首先將.pth 格式模型去掉后處理導出為.onnx 格式模型,修改工程目錄下的train.py 文件中的evalimage 函數。修改.py 文件的布爾型變量use_jit 為False,禁用JIT,保證能導出onnx。用onnx-simplifier 對模型進行簡化。在YOLO 環境下安裝onnx、onnxruntime 和onnxsim 庫,在控制臺使用命令對onnx 模型進行簡化。
使用daquexian 開發的一鍵轉換工具,在瀏覽器本地上傳簡化后的onnx 模型,使用onnx optimizer 和ncnnoptimize 優化模型,輸出目標格式的ncnn 模型(.bin 和.param)。
將簡化完成的.param 文件進行參數修改,將框架中默認的YOLOv5s 網絡模型替換為可識別蘋果樹皮病害的網絡模型,完成Android 端部署。
點擊設置完成的APP 圖標打開APP。進入APP 主頁面,點擊“選擇圖片”進入本地圖片選擇(圖7),待測圖片可以選擇進行CPU 識別或GPU 識別,選擇圖片并完成識別(圖8、圖9)。

圖7 待測圖片選擇頁面Fig.7 Image selection page to be tested

圖8 選擇待測圖片Fig.8 Select the picture to be detected

圖9 待測圖片患病情況識別結果Fig.9 Disease recognition results of picture to be tested
用于蘋果樹皮病害識別的YOLOv5s 網絡訓練400 個epoch 后,按照2.3 所述指標對訓練好的模型進行相應評估,結果見圖10。由圖10 可知,訓練后得到的深度學習網絡模型測試結果良好,經過400 輪訓練后模型達到收斂狀態。在訓練過程中準確率和召回率的提升過程較為穩定,準確率穩定在88.7%,召回率穩定在85.8%,平均精度值也處于較高水平狀態,穩定在87.2%附近。其中識別效果最好的腐爛病準確率為93.5%,識別效果最差的輪紋病準確率為84.3%。

圖10 YOLOv5s 網絡訓練結果Fig.10 YOLOv5s network training results
對手機APP 進行功能測試,輸入50 張不同類型的蘋果樹皮病害圖片進行檢測,每張病害圖片處理時間均小于1 s,檢測置信度為87.954%。檢測時間較快,可以在移動端正常使用,測試效果如圖11 所示。

圖11 手機APP 病害識別測試效果Fig.11 Effect of mobile APP disease recognition test
為快速且同時檢測腐爛病、輪紋病、干腐病3 種蘋果樹皮病害的問題,本研究使用YOLOv5s深度學習網絡模型,設計了基于Android 的蘋果樹皮病害識別系統。在深度學習網絡發展成為圖像檢測主流前,病害圖像主要采用機器學習進行識別。機器學習視覺信息的處理技術主要依賴于圖像處理方法,對圖像進行復原、分割、增強、特征提取等一系列操作,從而進行圖像處理識別,得到相應結果。機器學習通過人工分析圖片特征,經過圖像算法提取特征,并通過特征的數值進行圖像分類,在分析圖片過程中不需要大量圖片,只需要較為典型的圖片和兩種類別臨界點的圖片進行人工分析。與本文所使用的深度學習網絡檢測方式相比較,機器學習進行病害識別需按照單一病害特征進行人為數值設定后做相應識別,從而無法進行3 種病害同時檢測,而本文使用深度學習網絡則可以完成3 種病害數據集的同時訓練,其最終對3 種病害的識別準確率穩定在88.7%,召回率穩定在85.8%,平均精度值穩定在87.2%,且可以在訓練中獨立學習相關屬性,得到更好的效果。
深度學習網絡模型由于參 數多、體量大,較難在小型移動設備上部署,本文使用的YOLO v5深度學習網絡模型,由Ultralytics 公司在2020 年推出,包括YOLOv5s、YOLO v5m、YOLO v5l、YOLO v5x 4 個模型,其中YOLOv5s 是4 種模型中體積最小的網絡模型,其權重僅僅27MB,能夠降低對移動端配置的需求,本文將其在Android端部署后。經測試每張病害圖片處理時間均小于1 s,檢測致信度為87.954%,檢測時間較快,可以在移動端正常使用。
測試結果反映出訓練完成的網絡模型準確率、召回率、平均精度仍有待提高。果園環境的復雜性在一定程度上影響手機 APP 的圖像識別。移動終端使用測試方面,通過 Android 端的測試,該 APP 使用輕量級的深度學習網絡YOLOv5s 可以適應當前市場中的大部分機,降低了硬件需求,可以滿足果農需要。針對上述問題,可以考慮以下改進措施:(1)圖像拍攝時盡可能直接拍攝待檢測枝干部位,減少非必要影響因素的出現;(2)繼續收集不同環境和不同病發階段的 3 種類型病害圖片,增強數據集后繼續訓練,不斷提升網絡模型的識別效果;(3)針對病害的早期階段圖像進行訓練,以期實現蘋果樹皮病害的早期快速診斷。
針對果農需要對蘋果樹皮病害進行實時拍照檢測的問題,本研究設計了一種基于Android 系統以及YOLOv5s 深度學習網絡模型的手機APP蘋果樹皮病害識別系統。本設計以輪紋病、腐爛病、干腐病3 種蘋果樹皮病害為研究對象,使用YOLOv5s 深度學習網絡模型對目標圖片進行圖像識別,得出相應結果。實驗結果表明:該手機APP 對手機配置要求較低,可滿足絕大多數果農的手機配置;使用輕量級深度學習網絡YOLOv5s,網絡模型小,所占資源少,可以良好地在Android 端進行部署。本設計可以在一定程度上幫助果農完成蘋果樹皮病害的識別,進而進行果園的精準管理,對蘋果產業的發展具有推動作用。