劉小剛 范 誠 李加念 高燕俐 章宇陽 楊啟良
(昆明理工大學農(nóng)業(yè)與食品學院, 昆明 650500)
智能圖像識別與目標檢測具有識別精度高、檢測速度快等優(yōu)點。將圖像識別系統(tǒng)與機器人結(jié)合起來,用于農(nóng)業(yè)生產(chǎn)中,將極大地提高工作效率與作業(yè)質(zhì)量??焖俜€(wěn)定的目標識別系統(tǒng)能夠使采摘機器人進行長時間有效的工作,大大提高了采摘效率。
草莓營養(yǎng)價值豐富,被譽為“水果皇后”。草莓的自動識別是機器人采摘的前提,目前國內(nèi)外草莓圖像識別已經(jīng)取得了一定的進展[1]。張鐵中等[2]采用LRCD的方法分割草莓圖像,從而確定草莓的位置。謝志勇等[3]通過圖像分割對其進行Hough變換,實現(xiàn)成熟草莓的識別。研究多采用基于圖像分割對草莓進行識別定位,但均未對動態(tài)機器視覺下研究的可行性進行驗證。張凱良等[4]應用軟硬件相結(jié)合的方式,以地壟栽培模式下的草莓為作業(yè)對象,采用鏡像匹配法和激光輔助對草莓進行自動定位,但是該方法平均計算效率較低。李長勇等[5]利用雙目定位技術(shù)識別完全成熟的草莓,但沒有分析復雜環(huán)境下該方法的識別正確率。ZHANG等[6]基于機器視覺的顏色模型對水果進行識別檢測。侯貴洋等[7]采用顏色識別和特征識別相結(jié)合的方法區(qū)分成熟草莓和未成熟草莓,但均未結(jié)合實際環(huán)境對草莓的識別效率進行分析。上述研究大都針對草莓在簡單環(huán)境下的識別定位,且研究方法的識別效率較低,對草莓在實際復雜環(huán)境中的識別效率鮮有研究。
深度卷積神經(jīng)網(wǎng)絡通過對輸入圖像進行卷積運算,直接從圖像中提取到特定目標的信息特征,并通過前向傳播與反向傳播調(diào)整卷積神經(jīng)網(wǎng)絡運算中的參數(shù)。卷積神經(jīng)網(wǎng)絡在對目標進行特征提取時,不要求原始圖像具有固定的尺寸,從而不需要對原始圖像進行剪裁或壓縮等操作,提取到的特征信息更加完整和準確[8-9]。目前深度卷積神經(jīng)網(wǎng)絡主要有兩大類,一類是RCNN[10]、Fast-RCNN[11]、Faster-RCNN[12]、Mask-RCNN[13]等基于候選區(qū)域的方法,另一類是SSD[14]、RetinaNet[15]、YOLO等基于無候選區(qū)域的方法。REDMON等[16-17]提出了基于一步檢測的YOLO算法,該算法不同于RCNN為代表的兩步檢測算法,使得網(wǎng)絡結(jié)構(gòu)更加簡單,同一條件下檢測速度比Faster-RCNN快10倍左右。YOLOv2[18]在YOLOv1[19]的基礎(chǔ)上加入了批量歸一化,僅通過輸入高分辨率的圖像,MAP提高了4%[20]。薛月菊等[21]采用YOLOv2方法在光照多樣性及復雜背景下識別未成熟芒果,具有較高的準確率及召回率,但未說明該方法在夜間識別的效率。趙德安等[22]基于YOLO算法在復雜背景下實現(xiàn)多種算法對蘋果的識別,驗證了在不同環(huán)境下YOLOv3算法的可行性,但未具體分析在動態(tài)檢測下目標的檢測效率是否變化。可見,基于深度卷積神經(jīng)網(wǎng)絡的YOLO識別方法在復雜環(huán)境下具有效率高、可靠性好的特點。
針對目前草莓識別存在的問題,基于卷積神經(jīng)網(wǎng)絡下改進的YOLOv3算法,本文對草莓靜態(tài)圖像和動態(tài)視頻進行識別分析,探究草莓在實際復雜環(huán)境下機器視覺的識別效率,為草莓采摘機器人識別系統(tǒng)提供理論基礎(chǔ)。
圖像采集于云南省昆明市呈貢區(qū)某草莓種植園,大棚地壟式種植。草莓的品種為章姬,成熟草莓為鮮艷的紅色,未成熟的草莓為綠色或是粉色。采集樣本的時間分為白晝、傍晚和夜晚。草莓同一莖上會生長形狀大小相似的成熟草莓和未成熟草莓,為降低采摘機器人誤采摘的概率,將識別對象分為成熟草莓和未成熟草莓兩類。
為滿足樣品環(huán)境的多樣性,采集白天、傍晚、夜晚、遮擋、重疊、密集環(huán)境下的草莓圖像,共620幅,其中500幅圖像用于模型訓練,120幅圖像用于模型測試。草莓圖像采用LabelImg進行人工手動標注,對原始圖像進行裁剪、旋轉(zhuǎn)及鏡像等操作從而擴充數(shù)據(jù)集,共標注1 320幅圖像,保存為PASCAL VOC格式。標注的矩形框用于草莓的分類和識別。
使用2 400萬像素的攝像頭采集動態(tài)視頻數(shù)據(jù),采用固定位置拍攝、橫向拍攝和縱向拍攝3種拍攝方式,拍攝環(huán)境包含果實重疊、密集、遮擋等復雜情況。視頻統(tǒng)一為10 s短視頻,識別后保存為avi格式,每3 s截取一幅圖像顯示對比效果。抽取每類視頻20個,重復3次進行識別分析。
YOLOv1算法采用一步檢測,網(wǎng)絡結(jié)構(gòu)淺且速度快,但對小目標識別準確度上存在不足[23]。YOLOv2在YOLOv1的基礎(chǔ)上移除了全連接層,采用卷積層和先驗框使得模型更容易學習,特征層由原來的7×7變?yōu)?3×13,對于一般的物體,能夠更好地預測邊界框。YOLOv3在YOLOv2基礎(chǔ)上,增加了多尺度預測,對小目標的檢測精度進一步提升,通過卷積層提取目標信息,采用池化層降低維度,從而加快模型運算速度。
圖1 YOLOv3訓練測試流程
YOLOv3算法的訓練測試流程如圖1所示。
1.2.1YOLOv3草莓檢測網(wǎng)絡與訓練
采用Darknet53作為預訓練模型,訓練時設(shè)置動量項(Momentum)為0.9,衰減參數(shù)(Decay)為0.000 5,初始學習率(Learning rate)為0.001。試驗平臺CPU為Intel core i7-8750H,主頻2.20 GHz,6核12線程處理器,GPU為GeForce GTX 1060,6 GB顯存,8 GB運行內(nèi)存,Windows 10專業(yè)版。本文所有模型訓練及測試都在同一硬件環(huán)境下運行。
由表1[24]可知,交并比(Intersection over union,IOU)為0.5時,YOLOv3算法有3種像素訓練模式,分別為320像素×320像素、416像素×416像素、608像素×608像素。相對于320、416像素,608像素的平均識別精度最高,相對于608像素,416像素檢測時間更短,采用416像素×416像素模式。為了對不同模型的性能進行評價,采用準確率Pi、召回率Rn、調(diào)和平均值Fj[25]、平均精度(MAP)作為評價指標,計算公式為
(1)
(2)
(3)
(4)
圖2 YOLOv3網(wǎng)絡訓練結(jié)構(gòu)
式中RS——圖像中正確檢測出的目標草莓數(shù)量
FS——圖像中未被檢測到的草莓數(shù)量
FN——非草莓物體數(shù)量
S——草莓的類別數(shù)
k——閾值
N——引用閾值的數(shù)量
MAP——成熟草莓和未成熟草莓的平均精度
其中,i、j=1表示成熟草莓的相關(guān)參數(shù),i、j=2表示未成熟草莓的相關(guān)參數(shù)。
表1 不同方法的性能比較
YOLOv3算法共有53層卷積層,考慮到本文只識別草莓,過多的卷積層會增加計算量,因此對YOLOv3神經(jīng)網(wǎng)絡結(jié)構(gòu)進行改進,參照VGG-16搭建如圖2所示的14層網(wǎng)絡結(jié)構(gòu),當輸出矩陣分別為52×52×64、26×26×128時,神經(jīng)網(wǎng)絡并行輸出52×52×192和26×26×384的兩條網(wǎng)絡特征層,最后將3種特征層的輸出張量合并處理對草莓進行檢測。改進后的神經(jīng)網(wǎng)絡減少了卷積層數(shù)量及過多的運算,而且對小目標的檢測有顯著效果。改進網(wǎng)絡結(jié)構(gòu)如圖2所示。圖3為YOLOv3邊界框(Bounding boxes)原理圖[26],cx、cy為預測框中心點所在的單元格相對左上角單元格偏移的單元格數(shù)量;σ(t)為邏輯函數(shù),將坐標進行歸一化,使其在0~1之間變化。Pw、Ph為該單元格對應的先驗框(Anchor box)的寬和高。bw、bh為預測邊界框的寬和高。
圖3 YOLOv3 邊界框原理圖
1.2.2訓練權(quán)值模型
模型共訓練8 000次,前1 000次迭代后模型損失值迅速收斂到1以下,訓練至約4 000次后損失值逐漸平穩(wěn)。每1 000次輸出一個權(quán)重模型,得到8個模型,本文通過評價指標選取最優(yōu)模型,8個模型的評價指標如表2所示。
表2 權(quán)值模型的性能比較
圖4 不同圖像增強算法的YOLOv3檢測效果
從表2可以看出,模型1綜合性能最差,模型2~6性能較好且逐漸升高,模型7、8性能逐漸穩(wěn)定。模型6的調(diào)和平均值F1、F2最大,說明模型的準確率和召回率綜合表現(xiàn)最好,成熟草莓的準確率為97.14%,召回率為94.46%,未成熟草莓的準確率為96.51%,召回率為93.61%,平均精度87.51%最高,綜合來看,模型6可以作為后期草莓的測試檢驗模型。
考慮夜晚在只有一個LED燈照明的情況下,采集的草莓圖像背景過暗,模型很難將檢測目標與背景區(qū)分,置信度過低導致無法達到檢測目的。因此對夜晚的草莓圖像進行圖像增強。本文采用基于直方圖均衡化[27]、拉普拉斯(Laplus)算子、對數(shù)變換、伽馬(Gamma)變換[28-29]的4種圖像增強方法對圖像進行處理。由OpenCV圖像增強算法處理后的圖像相較原圖在亮度、灰度、對比度、銳度等方面都有顯著的改善,草莓特征與背景明顯區(qū)分開。為了選擇較好的圖像增強方法,隨機抽取夜晚草莓圖像30幅,重復抽取3次共90幅,采用YOLOv3算法對增強后的圖像進行實際效果檢測,如圖4所示。其中,cms表示成熟草莓,cmws表示未成熟草莓。由圖4可以看出,原圖背景過暗,識別效果差,甚至無法識別。不同圖像增強算法效果對比如表3所示,增強后的圖像可以明顯看出草莓特征,并且識別精度提高,漏識別和一果多框的現(xiàn)象顯著減少。
從表3中可以發(fā)現(xiàn),4種圖像增強算法對草莓的正確識別率都有提高,伽馬變換圖像增強算法比成熟草莓原圖的正確識別率高20.15個百分點,比未成熟草莓的正確識別率比原圖高35.03個百分點。由此可見,后期模型測試階段采用伽馬變換對夜晚草莓圖像進行增強處理,有利于提高夜晚草莓圖像識別精度。
2.2.1不同草莓數(shù)量的試驗對比
試驗以草莓數(shù)量作為變量,測試集包括150幅圖像,其中含1~3個草莓的圖像共64幅,包含4~6個草莓的圖像共51幅,包含7個及以上草莓的圖像共35幅。每一類抽取25幅作為檢測對象,檢測出樣本總量、正確識別的草莓數(shù)量、未識別出的草莓數(shù)量、誤識別的草莓數(shù)量,計算準確率和召回率,采用F1及F2作為綜合評價值,3次重復取平均F值。圖像邊緣殘缺草莓及過小的未成熟草莓忽略不計。從圖5中可以看出,在草莓果實數(shù)量較少的情況下,3種方法都能正確識別出成熟草莓和未成熟草莓,但草莓數(shù)量增加到7個以上時,存在一果多框和漏識別的現(xiàn)象,這是由于草莓的尺寸減小、果實重疊與粘連增加了模型識別的難度。表4為3種算法對不同數(shù)量草莓的檢測結(jié)果。
表3 不同圖像增強方法效果對比
圖5 3種算法對含不同草莓數(shù)量圖像的檢測效果
表4 3種算法對不同草莓數(shù)量檢測試驗結(jié)果
從表4中可看出,隨著草莓數(shù)量的增多,成熟草莓和未成熟草莓的F值均減小,當草莓數(shù)量大于7時,F(xiàn)值下降了7~10個百分點。隨著草莓數(shù)量的增多,RetinaNet算法容易導致一果多框及漏識別的現(xiàn)象,對小物體的檢測精度明顯下降。而YOLOv3采用多層神經(jīng)特征網(wǎng)絡,能夠預測更小的柵格,在小物體的檢測上取得了較好的檢測效果,YOLOv3算法F值最高。YOLOv3算法選取的閾值為0.5,YOLOv3的每幀圖像檢測時間是RetinaNet的39.92%,是YOLOv2的40.27%。
2.2.2不同時間段下草莓的識別效果對比
為了滿足采摘機器人連續(xù)作業(yè)的要求,本文從白晝、傍晚和夜晚3個時間段來驗證模型。采用白晝圖像80幅,含有414個草莓,傍晚圖像65幅,含有358個草莓,夜晚圖像46幅,含有255個草莓。處理方式同2.2.1節(jié)。由圖6可知,在同一塊草莓區(qū),不同時間段下,白晝下的草莓顏色、形狀、表面特征清晰。傍晚時草莓的表面特征明顯變模糊,并且背景變暗。而夜晚環(huán)境過于黑暗,草莓特征難以與背景明顯區(qū)分開,極大地增加了識別難度。因此,為了達到較好的識別效果,采用伽馬變換對夜晚的草莓圖像進行增強。
圖6 3種算法對不同時間段的草莓識別效果
表5為3種算法在不同時間段對草莓識別結(jié)果的比較。在不同時間段下,總體上白晝時識別的調(diào)和平均值F1、F2最大,比夜晚高近5個百分點,說明亮度對識別的效果影響很大,過暗的環(huán)境下草莓特征極不明顯,增加識別難度。從表5中可以看出,YOLOv3算法F值比YOLOv2算法平均高2.79個百分點,YOLOv2算法與RetinaNet算法在白晝時的F值相似,傍晚和夜晚環(huán)境下YOLOv2算法比RetinaNet算法的F值略高。同一方法檢測下,成熟草莓和未成熟草莓在白晝的F值相似,傍晚和夜晚環(huán)境下成熟草莓的F值比未成熟草莓略高。總體上YOLOv3算法每幀圖像檢測時間是YOLOv2算法的41.13%,是RetinaNet算法的38.57%。
表5 3種算法對不同時間段的草莓檢測試驗結(jié)果比較
圖7為3種算法在不同拍攝方式下的檢測效果。由于固定拍攝方式在同一位置停留較長時間,該方式對檢測目標的識別精度較其他方式更加準確。而橫向拍攝時果實數(shù)量相對密集,果實重疊、粘連現(xiàn)象出現(xiàn)頻率高,攝像停留時間較短,識別難度相對增加,易出現(xiàn)漏識別、誤識別以及一果多框的現(xiàn)象。采用縱向拍攝模式時,草莓數(shù)量由少變多,果實遮擋頻率高,識別難度先易后難。相對于RetinaNet和YOLOv2識別算法,YOLOv3算法在視頻識別的精度上有顯著優(yōu)勢。因此,YOLOv3算法不僅在識別精度上保持著較好的準確性,而且在復雜環(huán)境下具有良好的魯棒性。
圖7 3種算法在不同拍攝方式下的檢測效果
對于不同的視頻拍攝方式,采取固定拍攝時的F1和F2最高(表6),算法的準確率和召回率綜合表現(xiàn)最好,草莓的識別效果最佳??v向拍攝的效果略優(yōu)于橫向拍攝,是由于橫向拍攝時草莓分布密集,增加了模型識別的時長和運算量。對于不同的識別算法,YOLOv3算法平均檢測速率是YOLOv2算法的2.38倍,是RetinaNet算法的2.44倍。在識別效果上,YOLOv3算法平均F值最高,YOLOv2算法與RetinaNet算法相似。綜上,YOLOv3算法在識別精度與檢測速率上均滿足實時檢測的要求,視頻平均識別速率達58.1 f/s。
(1)針對夜晚環(huán)境下草莓圖像模糊的問題,使用伽馬變換的圖像增強算法處理圖像后比原圖成熟草莓識別正確率提高了20.15個百分點,比原圖中未成熟草莓識別正確率提高了35.03個百分點,平均每幅圖像檢測時間比原圖減少1.77 ms。
表6 3種算法在不同拍攝方式下的檢測結(jié)果比較
(2)對比不同算法在不同草莓數(shù)量、不同時間段下的檢測效果, YOLOv3算法的F值最大,綜合識別效果最好,每幀圖像的平均檢測時間為34.99 ms,是YOLOv2算法的41.13%,是RetinaNet算法的38.57%, YOLOv3算法在識別精度及速率上優(yōu)勢顯著。
(3)采用固定拍攝方式時F值最高,識別效果最好,YOLOv3算法平均檢測速率為58.1 f/s,視頻檢測流暢,滿足實時性要求,在果實遮擋、重疊、密集等復雜情況下具有良好的魯棒性。