黃河清,胡嘉沛,李震,3,4*,魏志威,呂石磊,4
(1.華南農(nóng)業(yè)大學(xué)電子工程學(xué)院(人工智能學(xué)院),廣東 廣州 510642;2.國家柑橘產(chǎn)業(yè)技術(shù)體系機械化研究室,廣東 廣州 510642;3.廣東省農(nóng)情信息監(jiān)測工程技術(shù)研究中心,廣東 廣州 510642;4.人工智能與數(shù)字經(jīng)濟廣東省實驗室,廣東 廣州 510330)
隨著智慧農(nóng)業(yè)[1]以及計算機視覺技術(shù)[2]的不斷發(fā)展,通過目標檢測識別來定位果樹果實的位置、協(xié)助機器人進行精準采摘并估產(chǎn)、測產(chǎn)等技術(shù)已具有較高的可行性,但當前對柑橘果實進行識別時大多還需要在高性能服務(wù)器端運行,無法兼具實時性和便攜性,運用于實際場景中還比較困難。
目前對農(nóng)業(yè)視覺任務(wù)的處理多應(yīng)用深度學(xué)習(xí)技術(shù)[3–5]。王書志等[6]設(shè)計了顯著性目標檢測的葡萄葉片病害分割方法,通過多分辨率的網(wǎng)絡(luò)來融合提取特征,并用形態(tài)學(xué)方法進行后處理,取得了62.5%的馬修斯相關(guān)系數(shù),結(jié)果高于全卷積神經(jīng)網(wǎng)絡(luò),該方法具有較高的泛化性。李衡霞等[7]使用VGG16特征提取網(wǎng)絡(luò)生成油菜害蟲的初步位置候選框,進行分類和定位,對5 種油菜害蟲的識別平均準確率達到94.12%。SA 等[8]通過遷移學(xué)習(xí)對水果進行目標檢測,此方法兼顧了檢測的準確性和召回性。薛月菊等[9]使用改進的YOLOv2 目標檢測算法識別未成熟的芒果,在前景和背景顏色差別極小的情況下,檢測性能顯著提升,對果實的識別準確率達到97.02%,召回率達到了95.1%。TIAN 等[10]使用改進的YOLOv3 目標檢測算法在3000 像素×3000 像素的圖像分辨率下平均檢測時間為0.304 s,可以實現(xiàn)對水果的實時檢測。
將目標檢測技術(shù)應(yīng)用到柑橘作業(yè)任務(wù)中同樣具有較好的識別效果。胡友呈等[11]通過將柑橘彩色圖像的特征生成特征向量,降維后提取模型感興趣的區(qū)域,獲取得分最高的識別區(qū)域為最佳區(qū)域,對柑橘果實的識別準確率達到94%,具有較高的檢測精度。郭澤方等[12]通過改進SSD,將主干網(wǎng)絡(luò)更換為輕量級的Mobilenets,加快了對柑橘果實檢測的識別速度,模型的識別速度達到38.48 幀/s,較改進前提高了3.18 倍。畢松等[13]使用深度學(xué)習(xí)算法提取柑橘檢測網(wǎng)路中的高層語義信息,通過遷移學(xué)習(xí)、多重分割的方法增強了對柑橘果實檢測的效果,減少了遮擋、重疊帶來的影響,模型具有良好的魯棒性。上述對柑橘果實檢測的模型雖然獲得了較好的效果,但是模型占用的內(nèi)存和顯存較多,導(dǎo)致檢測速度的下降,若移植到嵌入式端,需進一步考慮柑橘檢測的實時性需求。
為了解決當前柑橘檢測模型不具備在真實場景中應(yīng)用的條件和檢測實時性不足的問題,筆者設(shè)計了基于邊緣計算的便攜式實時柑橘果實檢測系統(tǒng)。通過優(yōu)化YOLOv4–Tiny 網(wǎng)絡(luò)模型,將批量歸一化層(batch normalization 層)[14]合并到卷積層,使用K–means 聚類[15]方法得到適合柑橘數(shù)據(jù)集的先驗框,更換損失函數(shù)為GIOU 邊框度量函數(shù)[16],提高網(wǎng)絡(luò)對柑橘圖像密集區(qū)域的檢測效率;基于邊緣計算設(shè)備,將優(yōu)化的目標檢測算法移植到Jetson nano 嵌入式平臺,以期得到更精確和實時的柑橘果實識別效果。
2019 年10 月,在湖南省宜章縣柑橘果園拍攝果實圖像,其中,室外圖像1413 張,室內(nèi)圖像200張。從微軟開源的COCO 數(shù)據(jù)集中提取柑橘果實類別圖像400 張。將兩類圖像數(shù)據(jù)整合在一起之后,選取其中的900 張柑橘果實圖像,運用Matlab 軟件對柑橘果實圖像使用調(diào)整亮度、對比度、色彩飽和度等數(shù)據(jù)增強方法,統(tǒng)一裁剪為416 像素×416 像素,又得到900 張增強后的圖像。至此,數(shù)據(jù)集共包含2913 張柑橘果實類別圖像。
使用Labelme 圖像標注工具,對圖像中的柑橘果實目標進行標注。將數(shù)據(jù)集2913 張圖像按70%、20%、10%的比例拆分,訓(xùn)練集、驗證集、測試集圖像分別為2039、582、292 張。
柑橘果實識別系統(tǒng)中硬件設(shè)備主要由邊緣計算開發(fā)板、可視化所需要的顯示屏、外接攝像頭和供電模塊組成。選擇Jetson nano 嵌入式平臺作為外接USB 的主機接口,該平臺配置了四核ARM Cortex–A57 CPU 處理器、4GB LPDDR4 內(nèi)存和16GB 存儲空間;使用Maxwell 架構(gòu)GPU,浮點運算能力可達472 GFLOPS。平臺支持多個處理器處理,具有豐富的AI編程神經(jīng)元,加快設(shè)備運行深度學(xué)習(xí)算法速度;操作系統(tǒng)為Ubuntu18.04;平臺在顯示視頻檢測的工況下功率為5 W。系統(tǒng)平臺供電電源模塊為5000 mAh、12 V 的可均衡充電鋰電池。
柑橘果實檢測算法采用圖1 所示的網(wǎng)絡(luò)結(jié)構(gòu),模型輸入為416 像素×416 像素分辨率的柑橘果實圖像,經(jīng)過特征提取網(wǎng)絡(luò)提取特征后,通過2 個檢測分支分別輸出13 像素×13 像素、26 像素×26 像素分辨率的特征圖,以供模型推理使用。
圖1 改進的YOLOv4–Tiny 網(wǎng)絡(luò)模型框架Fig.1 Framework diagram of improved YOLOv4-Tiny network model
2.2.1 合并批量歸一化層到卷積層
在網(wǎng)絡(luò)的每一個卷積層之后,使用批量歸一化層(BN)對網(wǎng)絡(luò)超參數(shù)進行歸一化處理,再使用激活函數(shù)激活,送入網(wǎng)絡(luò)的下一層,使一個批量數(shù)據(jù)中的所有樣本都被關(guān)聯(lián)在一起,網(wǎng)絡(luò)的輸出不再局限于樣本自身,可有效解決梯度消失與梯度爆炸的問題,一定程度上解決參數(shù)難以控制的問題。其前向傳導(dǎo)公式如式(1)、式(2)所示。式(2)引入超參數(shù)γ、β,對整體作重構(gòu)變換。
當批量歸一化層單獨為一層時,會影響模型整體計算速度,且占用嵌入式設(shè)備大量的內(nèi)存和顯存空間。在識別成批量的柑橘圖像時,模型的前向推理速度直接影響識別效率,對嵌入式設(shè)備檢測柑橘圖像的實時性有較大的影響。將BN 層合并到卷積層,在不影響精度的情況下,加快了模型的推理速度。BN 層既可以避免網(wǎng)絡(luò)的過擬合問題,也可以控制超參數(shù)的變化,加快模型的收斂速度。從映射的角度來看,BN 層的映射公式如式(3)所示??紤]卷積層也是一個線性映射,將二者合并,得到新的映射如式(4)所示,用一個卷積層來代替兩層的運算。
式中:W為卷積核的權(quán)重值;b為偏移量;Fi,j表示卷積層的輸入。
2.2.2 使用K–means 聚類算法改變先驗框大小
K–means 聚類算法聚類原始數(shù)據(jù)時只有標注框的檢測數(shù)據(jù)集,使用YOLOv4–Tiny 中產(chǎn)生的標注位置和類別的txt 文件,包括目標的相對區(qū)域位于原圖的位置信息(x,y),以及目標框的寬和高(w,h),通過傳統(tǒng)的K–means 聚類算法聚類k個相應(yīng)高度和寬度的Anchor box 大??;引入IOU 值,最后得到的Anchor box 與每一個bounding box 計算IOU值,選取最大值,計算得出不同圖像尺度下Anchor box 的大小;在所有的標注框都分配完畢后,為每個區(qū)域重新計算聚類中心,計算方式如式(5)、式(6)所示,其中N為樣本總數(shù)。
在柑橘數(shù)據(jù)集中,由于柑橘果實相互之間的重疊、柑橘果實較小、與樹葉之間的密集遮擋等問題,對柑橘的檢測造成困難。通過使用K–means 聚類算法重新聚類原始的先驗框大小,進而最大化匹配柑橘小目標。
2.2.3 基于GIOU 的邊框損失函數(shù)
引入邊框度量函數(shù)GIOU 檢測邊界框的優(yōu)劣。在計算時,若A 框與B 框的相交區(qū)域為0 時,GIOU=IOU。GIOU 不僅關(guān)注重疊的區(qū)域,還高度關(guān)注非重合區(qū)域,當A 與B 的面積并集相對于最小外接矩形的面積很小時,GIOU 收斂于–1,更能反映兩者的重合度。在使用的柑橘數(shù)據(jù)集中,柑橘果實密集重疊且難以輕易被識別,使用GIOU 作為柑橘目標檢測網(wǎng)絡(luò)的損失函數(shù),使網(wǎng)絡(luò)對遮擋、重疊的柑橘果實識別效果更好。
將算法移植到Jetson nano 嵌入式平臺,主要參數(shù)設(shè)置為:每次迭代訓(xùn)練的樣本數(shù)為64,共16 批次,對這些樣本迭代12 000 次,每迭代1000 次,保存一次網(wǎng)絡(luò)模型權(quán)重,初始學(xué)習(xí)率為0.001,在2000、6000 次迭代時使用動量相加的方式改變學(xué)習(xí)率。YOLOv4–Tiny 原算法在訓(xùn)練集上迭代9000 次后趨于穩(wěn)定,改進的YOLOv4–Tiny 算法3000 次迭代之后穩(wěn)定,模型擬合能力更強,學(xué)習(xí)效果更優(yōu)。
使用YOLOv4–Tiny 在COCO 數(shù)據(jù)集上得到的預(yù)訓(xùn)練權(quán)重進行遷移學(xué)習(xí),通過反向傳播算法來更新參數(shù),不斷回傳參數(shù)來降低損失值。在訓(xùn)練過程中,運用多尺度訓(xùn)練策略,提高模型識別不同分辨率柑橘圖像的效果。參照文獻[17–18]的方法,選用平均準確率、對單張圖片的處理速度和對視頻幀的處理速度作為評價指標。
3.3.1 使用BN 層合并到卷積層的檢測結(jié)果
將BN 層合并到卷積層,以提升模型性能。表1 為各模型在Jetson nano 嵌入式平臺和2080Ti 顯卡上的推理時間對比。在不影響精度的情況下,對柑橘測試集500 張圖片的前向推理時間為110 s,比合并前減少了36 s。
表1 在不同處理器上對柑橘果實檢測的推理時間Table 1 Forward reasoning time of citrus fruit detection on different processors
3.3.2 使用改進的YOLOv4–Tiny 在Jetson nano應(yīng)用的模型效果
為了驗證改進后的YOLOv4–Tiny 在Jetson nano 嵌入式平臺上運行的效果,通過比對不同網(wǎng)絡(luò)框架與不同模型之間在Jetson nano 運行的差別來判斷模型效果。對比結(jié)果如表 2 所示,其中YOLOv4– Leaky 為YOLOv4 模型將Mish 激活函數(shù)改為LeakyReLU。改進的算法與原始的YOLOv4相比,模型對圖片的推理時間縮短2.25 s,視頻的推理速率提高了15.5 幀/s;與YOLOv4–Tiny 相比,在準確率提高0.94% 的情況下,平均每張圖片的推理時間快0.07 s,視頻推理速率提高4 幀/s。
表2 不同網(wǎng)絡(luò)模型對柑橘果實檢測的效果Table 2 Effects of different network models on citrus detection
圖2 為改進前后模型對同一張柑橘圖像的識別效果,可以清晰地看到部分受密集遮擋未被識別的柑橘果實在改進的算法中被標識出來,體現(xiàn)了改進的柑橘果實檢測模型的有效性。
圖2 模型改進前后對同一柑橘果實圖像的檢測結(jié)果Fig.2 The result of detection for the same citrus fruit image before and after the model improvement
使用改進的YOLOv4–Tiny 對拍攝的柑橘果實圖像進行檢測,效果如圖3 所示。
圖3 對拍攝的柑橘圖像的檢測效果Fig.3 Detection results of captured citrus images
在Jetson nano 中使用改進YOLOv4–Tiny 算法對柑橘果實視頻進行檢測,結(jié)果模型對柑橘視頻的處理速度為16 幀/s,可以快速有效地識別自然環(huán)境下的柑橘果實,在識別速度和便攜性方面具有優(yōu)勢,可滿足對柑橘果實識別的實時性要求。截取柑橘視頻中連續(xù)的4 幀圖像進行展示,如圖4 所示,在每個框所顯示的百分比數(shù)字為該類別的置信度,即模型認為檢測框中存在目標的確信度??梢钥闯?,模型對柑橘視頻幀的檢測效果較為理想,對被遮擋的柑橘果實也有較好的識別效果。
圖4 視頻中連續(xù)幀柑橘的檢測Fig.4 Detection results of continuous frames in video