寧政通,羅陸鋒,廖嘉欣,文漢錦,韋慧玲,盧清華
(佛山科學技術(shù)學院機電工程與自動化學院,佛山 528000)
葡萄果梗的精準識別及最優(yōu)采摘點定位是實現(xiàn)機器人無損采摘的重要環(huán)節(jié)。在葡萄采摘作業(yè)過程中,因果園環(huán)境復雜(光照不均、遮擋等),葡萄品種繁多且不同品種果梗外觀(顏色、紋理、形狀等)存在較大差異,這些非結(jié)構(gòu)、不確定因素使得葡萄果梗識別及最優(yōu)采摘定位成為難題。
多年來,國內(nèi)外學者圍繞采摘機器人視覺定位開展了一系列研究。在國外,Kondo等[1-2]利用光譜特性對葡萄進行識別;Reis等[3-4]利用顏色特性對自然環(huán)境下的葡萄進行識別與定位;Pérez-Zavala等[5]利用可見光譜相機技術(shù)對葡萄進行識別;Unay等[6]提出一種針對蘋果果梗和花萼缺陷識別、定位的多分類器系統(tǒng);Bac等[7]利用引導線作為視覺提示對甜椒果梗進行識別與定位;van Henten等[8]采用基于近紅外的計算機視覺系統(tǒng)對黃瓜果梗進行識別;Park等[9]利用最大相關(guān)最小冗余和深度神經(jīng)網(wǎng)絡對蘋果進行識別;Muresan等[10]利用卷積神經(jīng)網(wǎng)絡對蘋果、梨等水果進行識別。在中國,羅陸鋒等[11-13]利用幾何約束對自然懸掛和重疊簇葡萄的采摘點進行定位;梁喜鳳等[14]利用骨架角點對自然懸掛番茄的采摘點進行定位;郭艾俠等[15]采用基于探索性分析對荔枝的不同部位進行識別;彭紅星等[16]利用單次多框檢測器模型對皇帝柑、蘋果、荔枝、臍橙進行識別;畢松等[17]利用深度卷積神經(jīng)網(wǎng)絡對自然環(huán)境下的柑橘進行識別;閆建偉等[18]利用更快速區(qū)域卷積神經(jīng)網(wǎng)絡模型對自然環(huán)境中的刺梨果實進行識別;趙德安等[19]利用YOLO模型對全天候自然環(huán)境下的蘋果進行識別與定位。上述研究方法為采摘機器人視覺系統(tǒng)研發(fā)奠定了基礎(chǔ)[20-24]。然而,現(xiàn)有針對果實串(葡萄,番茄等)采摘方法主要從色彩、紋理、形狀等方面入手,使用幾何約束、骨架角點等方法定位果梗采摘點,這些方法在特定環(huán)境下實現(xiàn)了對果梗的識別與采摘點定位,但其在自然環(huán)境下的魯棒性較差,還難以實際應用。
為提高葡萄采摘機器人對葡萄果梗識別的精度和魯棒性,降低因采摘點定位不準導致的采摘失效,本研究提出一種基于深度學習的葡萄果梗識別與最優(yōu)采摘定位方法,通過改進掩膜區(qū)域卷積神經(jīng)網(wǎng)絡(Mask Region with Convolutional Neural Network,Mask R-CNN)模型,對葡萄果梗進行識別與粗分割,然后結(jié)合顏色閾值分割思想,通過分段式區(qū)域生長算法對葡萄果梗進行精細化分割,最后以臨質(zhì)心點最近的葡萄果梗水平兩側(cè)中心為采摘點,為果園環(huán)境下葡萄采摘機器人采摘點的定位提供了技術(shù)支持。
為與葡萄采摘機器人實際作業(yè)情況保持一致,本研究以果園自然生長的紅提、夏黑紫葡萄作為試驗對象,采用尼康 D5200相機(日本)進行多角度拍攝,成像距離范圍為0.8~1.5 m,圖像分辨率為2 592×1 944像素,分別采集晴天順光、晴天遮陰、陰天光照3種天氣光照條件下的葡萄圖像。本研究在廣州、天津、佛山等地葡萄果園共采集有效葡萄圖像樣本700幅,樣本集圖像均包含葡萄、葡萄果梗、枝干和復雜果園環(huán)境。
從700幅葡萄圖像中選取紅(紅提)、紫(夏黑紫)葡萄圖像共600幅(含693個紅葡萄果梗,564個紫葡萄果梗)作為訓練集,剩余100幅作為驗證集(含117個紅葡萄果梗,81個紫葡萄果梗)。為減少計算機運算負載,提升模型泛化能力,對樣本集進行預處理,通過Photoshop軟件將原圖裁剪至分辨率為1 024×1 024像素大小,并采取旋轉(zhuǎn)、鏡像、模糊、曝光等操作對訓練集進行數(shù)據(jù)增強,增強后的訓練集包含圖像3 000幅(含3 465個紅葡萄果梗,2 820個紫葡萄果梗)。使用數(shù)據(jù)標注軟件Labelme進行標簽制作,在標注時,只標注葡萄圖像中的主果梗,對于分叉結(jié)果的子果梗不標注,獲得標簽矩陣。
基于區(qū)域的卷積神經(jīng)網(wǎng)絡(Region-based Convolution Neural Networks,R-CNN)系列算法[25-26]是當前目標檢測領(lǐng)域中最具代表性的方法,Mask R-CNN作為該系列中較新成果,能對圖像中的目標進行分類、識別與分割。本研究對該網(wǎng)絡結(jié)構(gòu)參數(shù)、交互計算方式和分割結(jié)果等方面進行改進與優(yōu)化,使其能夠高效識別與分割葡萄果梗。
1.2.1 葡萄果梗識別的深度學習網(wǎng)絡架構(gòu)
Mask R-CNN網(wǎng)絡結(jié)構(gòu)可分為3個部分:主干網(wǎng)絡、區(qū)域建議網(wǎng)絡(Region Proposal Network,RPN)、三分支網(wǎng)絡?;贛ask R-CNN的葡萄果梗識別與分割網(wǎng)絡結(jié)構(gòu)如圖1所示。
1)主干網(wǎng)絡
本研究采用深度殘差網(wǎng)絡(Residual Neural Network 101,ResNet101)[27]和特征金字塔網(wǎng)絡(Feature Pyramid Networks,F(xiàn)PN)[28]相結(jié)合構(gòu)成主干網(wǎng)絡。圖像通過自下向上的ResNet101網(wǎng)絡得到等級由低到高的4級特征圖C2、C3、C4、C5,低、高層特征圖分別具有更多的細節(jié)信息與語義信息。ResNet101網(wǎng)絡卷積特征的映射如式(1)所示
式中l(wèi)為特征層數(shù);k為卷積層數(shù);為第l層特征經(jīng)過第k層卷積后的特征;為第k層卷積權(quán)重;el為第l層特征;為第k層卷積偏置。
為了提高葡萄果梗的識別精度,本研究采用卷積核大小為1×1的卷積層通過自頂向下和橫向連接的方法將這4級特征圖融合,融合后的每層特征圖P2、P3、P4、P5、P6都具有不同層次的特征。
2)區(qū)域建議網(wǎng)絡
區(qū)域建議網(wǎng)絡(RPN)的工作機理是采用卷積層滑動窗口掃描特征圖中的錨點框。RPN損失函數(shù)如式(2)~式(6)所示
式中i為錨點的序號;pi為每個錨點的預測概率;ti為預測目標邊界框的坐標;Ncls為分類類別個數(shù);Nbox為回歸個數(shù);Lcls為分類損失函數(shù);Lbox為回歸損失函數(shù);*ip為每個錨點包含葡萄果梗的概率,取值為0或者1,分別表示負、正樣本;λ為平滑參數(shù);為與錨點相關(guān)的真實邊界框坐標;xb、yb、wb、hb為原圖坐標偏移中心的左值、右值、寬值、高值;xa、ya、wa、ha為錨點邊界框中心坐標的左值、右值、寬值、高值;x*、y*、w*、h*為真實邊界框中心坐標的左值、右值、寬值、高值; smoothL1為魯棒范式損失函數(shù)。
Mask R-CNN設置的錨點框比例為0.5∶1∶2,但在實際檢測時,葡萄果梗的長寬比常為2.5∶1和5∶1,過小比例的錨點框無法完全覆蓋葡萄果梗,為此,本研究設置的錨點框比例為1∶2.5∶5,并使用1個3×3大小和2個并列1×1大小的卷積層進行掃描映射,以提高葡萄果梗的識別能力并縮短計算時間。
3)三分支網(wǎng)絡
三分支網(wǎng)絡用于獲取葡萄果梗的邊框、類別、掩碼。Mask R-CNN對MS COCO(Microsoft Common Objects in Context)中的80種物體進行分類、識別與分割,其掩膜分支通道數(shù)為z(z為類別數(shù),即z= 80)。為實現(xiàn)網(wǎng)絡多任務功能,Mask R-CNN在分類損失函數(shù)和回歸損失函數(shù)的基礎(chǔ)上添加了掩碼損失函數(shù),使用分類器來預測類別標簽并用于掩碼輸出,從而解耦了分類和掩碼預測。三分支網(wǎng)絡的損失函數(shù)如式(7)~式(10)所示
式中L為網(wǎng)絡總損失函數(shù);Lmask為掩碼損失函數(shù);Sm為像素數(shù)量;si為像素區(qū)域;為像素區(qū)域的類別標簽;p(si)為si預測類別的概率。
最終,類別分支計算出目標的類別,回歸分支計算出目標的位置邊界框,掩碼分支計算出目標的像素,從而準確地檢測出葡萄果梗。鑒于本研究的實際情況,設置類別數(shù)為3類(紅葡萄果梗類、紫葡萄果梗類、背景類),邊框和類別分支由全連接層輸出,掩碼分支由5個卷積層和2個反卷積層輸出,將葡萄果梗與背景分割。
1.2.2 并行交互計算策略
Mask R-CNN 在FPN、RPN、感興趣區(qū)域(Region of Interest,ROI)對齊耦合計算過程中,采用分流方式將FPN生成的特征圖分別輸出至 RPN、ROI對齊進行計算,其過程涉及多次圖形處理器(Graphics Processing Unit,GPU)與中央處理器(Central Processing Unit,CPU)之間的信息交互,造成時間和資源的消耗。為提高模型運算效率,本研究采用計算統(tǒng)一設備架構(gòu)(Compute Unified Device Architecture,CUDA)策略對其耦合計算過程進行并行化處理,根據(jù)ROI將特征圖均勻劃分為特征塊,每個特征塊作為一個 CUDA 線程,并行地完成耦合計算。如式(11)所示
式中bw和bh分別為候選框的寬度和高度,g為ROI對齊特征圖等級,g0為bw=224和bh=224時映射的等級。
1.2.3 基于區(qū)域生長的葡萄果梗圖像精細分割
葡萄果梗的精細分割是實現(xiàn)采摘點定位的重要前提。為精準獲取葡萄果梗區(qū)域,本研究在改進Mask R-CNN的葡萄果梗識別和粗分割基礎(chǔ)上,再運用分段式區(qū)域生長算法對葡萄果梗進行精細分割,其步驟如下:
步驟1:提取葡萄果梗的粗分割結(jié)果和位置信息。
步驟2:將分割出的葡萄果梗按高度值平均分成3段(A1、A2、A3),提取每段區(qū)域的色調(diào)(Hue,H)、飽和度(Saturation,S)、亮度(Value,V)色彩分量,并篩選出該區(qū)域的H、S、V分量平均值為其基準顏色閾值,H、S、V分量平均值分別對應為h、s、v。
步驟3:設每段葡萄果梗的輪廓點為種子點,遍歷種子點4鄰域(即上、下、左、右鄰域),生長準則如式(12)所示
式中h0、s0、v0為種子點 4 領(lǐng)域中任意一點的H、S、V分量值,d為向量[h,s,v]的1-范數(shù)。
步驟4:將步驟3中獲得的A1、A2、A3果梗輪廓區(qū)域進行形態(tài)學合并運算,最終得到果梗的精細分割結(jié)果。
葡萄果梗受重力作用常以懸掛、斜掛方式生長,且葡萄采摘機器人主要通過抓握葡萄并剪切果梗進行采摘。因此,本研究以臨質(zhì)心點最近的葡萄果梗水平兩側(cè)中心作為最終采摘點,其求解過程如下。
1.3.1 質(zhì)心點獲取
質(zhì)心是二維形狀的幾何中心。通過提取精細分割后的葡萄果梗形態(tài),根據(jù)圖像質(zhì)心矩的定義[29],葡萄果梗質(zhì)心點計算如式(13)所示
式中cn、cm為葡萄果梗質(zhì)心點坐標,n、m為像素坐標,c為質(zhì)心序號,f(n,m)為像素坐標(n,m)處的像素值。
1.3.2 采摘點確定
式中M為線段E1E2,為線段E1E2的左端點坐標,為線段E1E2的右端點坐標。
取線段E1E2為采摘區(qū)域,并以其中心點作為采摘點。
本研究模型訓練和采摘點定位算法試驗分別在2臺電腦上進行,模型訓練所用電腦的硬件環(huán)境:計算機內(nèi)存16 GB;中央處理器型號為Intel Core(TM)i5-8400,頻率為2.80 GHZ;圖形處理器型號為英偉達GeForce GTX 1070Ti,顯存為8 GB。采摘點定位測試所用電腦的主要硬件環(huán)境:計算機內(nèi)存 16 GB;中央處理器型號為 Intel Core(TM)i5-9400,頻率為2.90 GHZ;圖形處理器型號為英偉達GeForce GTX 1060,顯存為6 GB。試驗所用的軟件環(huán)境:Windows 64位系統(tǒng),Pycharm編程軟件,Tensorflow和Keras深度學習框架,Python編程語言(Python 3.6)。
1.4.1 模型訓練策略
為加快模型訓練收斂速度和提高模型訓練效果,本研究采用隨機梯度下降策略對模型進行交替訓練,訓練參數(shù)設置錨點尺寸為32、64、128、256和512,每幅圖像訓練的ROI個數(shù)為200,初始學習率為0.001,學習步長的動量參數(shù)為0.9,圖形處理器同時處理圖像數(shù)為1,每次迭代樣本量為200。其訓練過程分為3個階段:1)以初始學習率訓練主干網(wǎng)絡和三分支網(wǎng)絡各100次;2)以初始學習率訓練整體網(wǎng)絡200次;3)將初始學習率衰減10倍后訓練整體網(wǎng)絡150次。
本研究訓練使用3 000幅訓練集圖像,共進行了550次迭代,耗時108 h,其訓練損失曲線如圖2所示。結(jié)果表明,模型在前400次迭代中迅速收斂損失值,到500次迭代后損失值降至0.08附近震蕩并趨于穩(wěn)定,說明模型訓練結(jié)果較理想。
1.4.2 模型評價指標
為試驗本研究所提算法性能,對100幅葡萄測試集圖像進行果梗識別與采摘點定位試驗與評價。選用精確率(Precision,%)、召回率(Recall,%)、F1得分(F1-score,%)、交并比(Intersection Over Union,IOU,%)、平均交并比(mean Intersection Over Union,mIOU,%)作為評價模型有效性的指標,并統(tǒng)計正確檢測率(C,%)和最優(yōu)采摘點定位成功率(Y,%),其計算如式(15)~式(21)所示
式中TP為真陽性;FP為假陽性;FN為假陰性;Ap為預測值;Agt為真實值;IOUr為紅葡萄果梗的IOU值;IOUp為紫葡萄果梗的IOU值; 2N= ;AS為所有葡萄果梗數(shù);S為正確檢測(IOU > 0.75)的葡萄果梗數(shù);ST為最優(yōu)采摘點定位成功數(shù)。
葡萄果梗識別與精細分割模型的試驗結(jié)果如表1所示。其中,紫葡萄果梗的F1得分與IOU值均高于紅葡萄果梗,分析其原因主要有:一是極少數(shù)以懸掛方式生長的紅葡萄果梗,其特殊的長寬比遠高于模型錨點框比例;二是樣本集中存在部分出現(xiàn)病變的紅葡萄果梗,而紫葡萄果梗并未發(fā)生病變,特征相對單一;三是紅葡萄果梗所處的果園環(huán)境復雜度較高,較難識別。
檢測效果顯示病變和環(huán)境相似及遮擋是影響葡萄果梗識別的主要原因(圖3)。如圖3所示,箭頭1所指的葡萄果梗位置因發(fā)生病變導致其正常顏色、紋理、形態(tài)等外觀信息都被嚴重破壞,導致無法識別;箭頭2所指的葡萄葉柄因其外觀與葡萄果梗具有高度相似性,導致其被誤識別為葡萄果梗;箭頭3所指的葡萄果梗因部分被扎帶遮擋,影響了模型的判斷,扎帶上部果梗與葡萄葉片顏色相近,導致未被識別,但扎帶下部果梗因背景較單一,易于分辨,所以模型仍能對其準確檢測。如圖 3d和圖3e所示,在葡萄果梗重疊、懸掛、斜掛場景下,模型對其均有較好的檢測結(jié)果,表現(xiàn)出良好的檢測性能,但模型對重疊場景下的檢測精度略低于獨立懸掛、斜掛情形下的精度。
為提高模型的檢測速度,本研究未采用 Mask R-CNN模型在FPN、RPN、ROI對齊耦合計算過程中使用的GPU+CPU 信息交互方式,而是使用了CUDA并行交互計算策略。試驗結(jié)果發(fā)現(xiàn),2種交互方式所得F1得分和mIOU值相同,說明在檢測精度方面,使用CUDA不會對模型的檢測精度產(chǎn)生任何影響,但在檢測時間方面,CUDA比GPU + CPU耗時減少1.44 s,檢測速度提升24%,說明使用CUDA在提升模型檢測速度上有明顯優(yōu)勢。
為進一步驗證改進后模型在葡萄采摘機器人實際作業(yè)天氣光照條件下的檢測效果,本試驗選取晴天順光、晴天遮陰、陰天光照3種不同天氣光照條件下進行改進前后模型檢測效果的對比試驗,其具體效果如圖4所示。由圖4c和圖4d可知,在3種不同天氣光照條件下,改進前后的模型對于葡萄果梗的位置和類別均能準確檢測,沒有出現(xiàn)誤檢測現(xiàn)象,且改進后的模型檢測精度更高。在葡萄果梗分割方面,未改進的模型存在分割不完整、有毛刺等現(xiàn)象,分析其原因是由于葡萄果梗形態(tài)的不規(guī)則性,導致了該現(xiàn)象的出現(xiàn),改進后的模型對該現(xiàn)象有明顯改善,使其分割精準度進一步逼近真實區(qū)域。
不同天氣光照條件下模型改進前后檢測的統(tǒng)計結(jié)果如表2所示。由表2可知,在3種不同天氣光照條件下檢測精確率平均值達88%。其中,在晴天順光條件下,模型的精確率和召回率達96.72%,mIOU值達85.73%,說明在該條件下葡萄果梗較易被模型精準檢測出來;但在晴天遮陰和陰天光照條件下,模型的精確率、召回率和mIOU值均大幅降低。其原因為在晴天順光條件下,葡萄果梗表面顏色、紋理、輪廓清晰,模型檢測難度小,表現(xiàn)較好;在晴天遮陰條件下,因光照被遮擋,導致葡萄果梗與背景環(huán)境相似,其部分輪廓與葡萄葉片顏色產(chǎn)生混疊,在陰天光照條件下,葡萄果梗因表面光照的不足及分布不均,導致其一側(cè)顏色呈黑色,且與葡萄枝干的連接處較難分辨,所以模型在晴天遮陰和陰天光照條件下的檢測難度大,表現(xiàn)較差。同時,本研究提出的錨點框比例優(yōu)化和分段式精細分割方法在3種不同天氣光照條件下相較于未改進的模型,F(xiàn)1-得分提升了3.24%,mIOU值提升了1.1%,表示該方法能夠在不同天氣光照條件下做到自適應優(yōu)化調(diào)整,并且通過CUDA交互后,檢測時間減少了0.99 s,說明在其檢測性能上有顯著提升。
表2 不同天氣光照條件下模型改進前后檢測的統(tǒng)計結(jié)果 Table 2 Statistical results of detection before and after the model improvement under different weather and light conditions
為驗證采摘點位置確立的合理性,先通過人工設置每串葡萄果梗的最優(yōu)采摘區(qū)域(分辨率為35×20像素),然后與本方法進行對比,其在3種不同天氣光照條件下的具體定位效果如圖4d和圖4e所示。由圖4e可知,本方法對以懸掛、斜掛方式生長的葡萄串采摘點定位效果優(yōu)異,定位出的采摘點均在最優(yōu)采摘區(qū)域內(nèi);標號1處的采摘點不在最優(yōu)采摘區(qū)域內(nèi),其原因在于該葡萄串以躺臥姿勢生長在支撐架上,且子果梗在其頂部分叉,造成定位的采摘點附近仍存在3粒葡萄,從而導致最優(yōu)采摘定位失敗。不同天氣光照條件下采摘點定位統(tǒng)計結(jié)果如表3所示,其中采摘點定位正確檢測率為81.58%;在果梗成功識別后最優(yōu)采摘點定位準確率達99.43%;單次定位的平均計算時間為1.37×10-3s。這說明對果園中絕大多數(shù)以懸掛、斜掛方式生長的葡萄串,只要模型檢測出葡萄果梗,就能實時同步定位出最優(yōu)采摘點。
表3 不同天氣光照條件下采摘點定位統(tǒng)計結(jié)果 Table 3 Statistical results of picking point location under different weather and light conditions
為實現(xiàn)果園環(huán)境下葡萄采摘機器人自主作業(yè),提出了一種基于深度學習的葡萄果梗識別與最優(yōu)采摘定位方法。通過改進掩膜區(qū)域卷積神經(jīng)網(wǎng)絡(Mask Region with Convolutional Neural Network,Mask R-CNN)模型的網(wǎng)絡結(jié)構(gòu)及參數(shù),采用并行化計算策略提高模型運算,結(jié)合區(qū)域生長算法實現(xiàn)對葡萄果梗精細分割,最后計算出葡萄果梗區(qū)域最優(yōu)采摘點,為葡萄的高效自主機器人采摘提供了技術(shù)支持。具體結(jié)論如下:
1)將Mask R-CNN模型中的分流交互過程改為計算統(tǒng)一設備架構(gòu)并行化處理,檢測耗時減少1.44 s。采用區(qū)域生長算法對模型粗分割結(jié)果進行優(yōu)化,在 3 種不同天氣光照條件下果梗檢測精確率平均值為88%。
2)本研究提出的葡萄果梗最優(yōu)采摘定位方法,采摘點定位正確檢測率為81.58%;在果梗成功識別的情況下,定位的采摘點在最優(yōu)采摘范圍內(nèi)達99.43%。
雖然本研究為葡萄采摘機器人提供了一種果梗識別與最優(yōu)采摘定位方法,但在訓練深度學習網(wǎng)絡模型過程中,數(shù)據(jù)集的大小及標注精度均會影響定位結(jié)果。在今后的研究中,將探索先識別葡萄再向上搜索果梗的采摘點定位方法。