陳 偉,張春雨*,朱超冉
(1.安徽科技學院 機械工程學院,安徽 鳳陽 233100;2.安徽工程大學 機械工程學院,安徽 蕪湖 241000)
番茄是我國設(shè)施栽培面積最大的蔬菜作物,如此大體量的蔬菜,采摘尤為關(guān)鍵。番茄采摘機器人對減少生產(chǎn)成本、降低勞動強度、提高作業(yè)效率具有重要意義。設(shè)計采摘機器人的難點在于定位和識別,這兩點關(guān)系到采摘機器人的工作效率。自然環(huán)境下番茄果實的生長狀態(tài)各不相同,果實之間重疊,枝葉、枝干等對果實遮擋嚴重,光照環(huán)境復(fù)雜,這些因素都會影響到采摘機器人的識別結(jié)果。因此,實現(xiàn)對復(fù)雜自然環(huán)境下的番茄果實快速、精確識別是研發(fā)番茄采摘機器人的關(guān)鍵[1]。
近年來,番茄成熟度識別算法受到了廣泛關(guān)注,張亞麗等[2]將極端學習機引入番茄成熟度識別,番茄成熟度判斷正確率達到92.7%。王紅珠等[3]將HSI模型引入番茄成熟度識別,總的判斷正確率為65%。伍鎣芮等[4]將RGB三分量閾值分割引入番茄成熟度識別中,整體判斷正確率為85%。綜上,已應(yīng)用的識別算法在番茄成熟度識別中無法得到較高的精度和正確率,并且現(xiàn)有的研究大多沒有考慮復(fù)雜環(huán)境下的影響因素,適應(yīng)性較差,無法滿足番茄采摘時的復(fù)雜環(huán)境條件。YOLO系列算法是一類典型的one-stage目標檢測算法,利用anchor box將分類與目標定位的回歸問題結(jié)合起來,從而做到了高效、靈活和泛化性能好。YOLOv5算法是2020年提出的最新一代目標檢測算法,其精度和檢測速度與上一代相比得到大大提升。
為了進一步提高復(fù)雜環(huán)境下番茄成熟度識別的正確率,本研究提出將YOLOv5s算法應(yīng)用到番茄采摘機器人系統(tǒng)對番茄成熟度的識別中。針對番茄成熟度等級劃分進行研究。將番茄果實分3個階段:“成熟”“半成熟”和“未成熟”。這樣可以按照市場實際需求進行分期采摘,減少番茄腐爛的損失,從而降低成本,提高生產(chǎn)效率[5-6]。
運用深度學習框架進行番茄成熟度的檢測,自然環(huán)境下番茄果實的成熟度分為3類,即成熟、半成熟、未成熟果實。
番茄圖像采集于銅陵星火家庭農(nóng)場,拍攝當天為晴天,共采集原始圖片169張,圖片以.jpg格式保存。
運用labelImg將采集到的番茄圖片進行Voc格式的相應(yīng)標注,得到.xml文件。過少的圖片數(shù)據(jù)會使最后的試驗結(jié)果準確率大大降低,所以需要將采集到的圖片運用旋轉(zhuǎn)、平移、縮放、鏡像等方式進行數(shù)據(jù)增強,并對增強后的圖片進行標注。數(shù)據(jù)增強后的照片總量為1 200張(圖1),按照8∶2的比例隨機分為訓練集(960張)、測試集(240張)[7]。
圖1 3種成熟度的番茄果實Fig.1 3 tomato fruits with different ripeness
YOLOv5算法是現(xiàn)階段工業(yè)上常用的一種目標檢測算法,包括4個版本,分別是YOLOv5x、YOLOv5l、YOLOv5m、YOLOv5s。為滿足輕量化要求,本研究使用復(fù)雜度較低的 YOLOv5s 檢測模型,以減小模型存儲占用,提高識別速度。YOLOv5s網(wǎng)絡(luò)結(jié)構(gòu)一般分為4個部分:輸入端、主干網(wǎng)絡(luò)、頸部、輸出端[8]。
輸入端:一是采用Mosaic數(shù)據(jù)增強采用4張圖片,隨機縮放、隨機裁剪、隨機排布的方式進行拼接,合成一副圖像進行后續(xù)訓練,目的是豐富數(shù)據(jù)集并縮短訓練時長。二是自適應(yīng)錨框計算,在訓練中,網(wǎng)絡(luò)在初始錨框的基礎(chǔ)上輸出預(yù)測框,進而和真實框進行比對,計算二者差距,再反向更新,迭代網(wǎng)絡(luò)參數(shù)。三是自適圖像縮放,輸入圖像的尺寸是不一樣的,在YOLOv5中常用的尺寸有416×416、608×608、640×640等,通過等比縮放并用黑邊填充,得到尺寸統(tǒng)一的輸入圖像。
主干網(wǎng)絡(luò):在骨干段網(wǎng)絡(luò)采取Focus結(jié)構(gòu),將數(shù)據(jù)切分為4份,每份數(shù)據(jù)都相當于在2倍下采樣得到,在縱向通道進行拼接,再進行卷積運算。以YOLOv5s為例,原始的640×640×3的圖像經(jīng)過切片操作后,變成320×320×12的特征圖,再經(jīng)過32個卷積核的卷積運算,得到320×320×32的特征圖。
頸部:采用FPN+PAN的結(jié)構(gòu),在FPN的基礎(chǔ)上增加一條自底向上的信息流通路,縮短了信息傳輸路徑,旨在使準確的底層定位信息能夠增強到整個特征提取網(wǎng)絡(luò)。
輸出端:損失函數(shù)的選取對評判結(jié)果準確性非常重要,早期交并比損失函數(shù)(IoU Loss)比較簡單,不能反映真實情況,加入中心點距離和長寬比之后得到完全CIOU_Loss[9]。
本試驗在Pycharm 2021,Python3.8軟件環(huán)境下完成。硬件環(huán)境CPU采用Intel(R) Xeon(R) W-2255,主頻3.70 GHz;GPU采用Nvidia GeForce GTX A4000,64 GB顯存。
每批樣本數(shù)為16,將全部采集的圖片進行1次訓練稱為1次迭代,1次訓練的樣本數(shù)為100,采用YOLOv5s算法模型,初始學習率設(shè)置為0.01,動量因子為0.937。
對于番茄果實成熟度的識別,采用平均精度、精確率、召回率等性能指標進行評測。
圖2所示是試驗得出的整體精確率、召回率、平均精度、IoU閾值(0.5~0.95)平均精度的數(shù)據(jù)圖。隨著迭代次數(shù)的增加,每項的數(shù)值都逐步提高并趨近于平穩(wěn),精確率、召回率、平均精度最后都達到95%,IoU閾值(0.5~0.95)平均精度也是達到70%以上,從第2張圖片可以看出IoU閾值(0.5~0.95)平均精度仍然有上升的趨勢,數(shù)據(jù)整理后得到表1。
圖2 YOLOv5s檢測結(jié)果圖Fig.2 YOLOv5s test results
表1 YOLOv5s檢測算法結(jié)果Table 1 YOLOv5s detection algorithm results
圖3為測試結(jié)果圖,可以看出,大多數(shù)成熟果實的識別精確率為70%,有的達到了100%識別,少部分成熟果實識別精確率低于70%,不成熟果實的識別準確率高于80%,半成熟果實的識別精確率為70%。由此得出,本試驗YOLOv5s算法的識別精確率達到較高水平。
圖3 測試結(jié)果Fig.3 Test results
本研究用YOLOv5s算法得出的試驗結(jié)果與現(xiàn)有的檢測算法結(jié)果[2-4]進行對比,如表2所示,YOLOv5s算法識別精確率高于其他檢測算法,識別精確率最高,識別效果最好。
表2 4種檢測算法識別精確率Table 2 Recognition accuracy of four detection algorithms
對番茄圖像進行預(yù)處理,運用YOLOv5s檢測算法對番茄圖像進行識別,得出整體識別精確率為95%,與極端學習機、RGB模型、HIS模型得出的結(jié)果相比,YOLOv5s算法識別效果最好,此算法用于番茄果實機械化采摘,以提升采摘機器人識別番茄成熟果實的準確率,從而降低勞動強度,提高作業(yè)效率。