李惠鵬,李長(zhǎng)勇,李貴賓,陳立新
(1. 新疆大學(xué)機(jī)械工程學(xué)院,烏魯木齊市,830047; 2. 機(jī)械制造系統(tǒng)工程國家重點(diǎn)實(shí)驗(yàn)室,西安市,710054)
中國是一個(gè)農(nóng)業(yè)大國,在2020年我國葡萄產(chǎn)量高達(dá)14 314 kt[1]?,F(xiàn)在種植的葡萄主要分為釀酒葡萄和鮮食葡萄。對(duì)于釀酒葡萄,市面上已經(jīng)有了許多類型的葡萄收獲機(jī)。但鮮食葡萄由于其品種繁多、生長(zhǎng)環(huán)境復(fù)雜以及無損采摘的要求,目前仍依靠人工進(jìn)行采摘。在農(nóng)業(yè)勞動(dòng)力緊缺、采摘成本不斷增加的情況下,使用葡萄采摘機(jī)器人代替人工采摘具有重大的意義和廣闊的市場(chǎng)前景[2]。
葡萄采摘點(diǎn)的定位主要分為果實(shí)的分割和采摘點(diǎn)的確定。許多分割方法已經(jīng)被應(yīng)用到水果的采摘中。梁喜鳳等[3]采用了形態(tài)學(xué)的多尺度提取和番茄邊界提取相結(jié)合的方法實(shí)現(xiàn)了對(duì)番茄的分割。Xiong等[4]首先將RGB圖像轉(zhuǎn)化到Y(jié)IQ顏色模型中,并采用模糊聚類的方法實(shí)現(xiàn)了夜間荔枝的準(zhǔn)確分割。苗玉彬等[5]提出了一種基于Zernike矩邊緣檢測(cè)的分水嶺算法,用于葡萄輪廓的特征提取。同時(shí),很多算法也被應(yīng)用在水果采摘過程中以完成果實(shí)的圖像分割,主要包括Otsu[6]算法、蟻群算法[7]和k-means[8]聚類算法等。
在采摘點(diǎn)定位中,羅陸峰等[9]提出了點(diǎn)線最短距離法來確定葡萄采摘點(diǎn)。熊俊濤等[10]通過擾動(dòng)葡萄來計(jì)算葡萄單擺運(yùn)動(dòng)的周期和擺角進(jìn)而確定采摘點(diǎn)。張同勛等利用模板匹配的方法來識(shí)別葡萄并確定采摘點(diǎn)。Xiong等[4]對(duì)荔枝的果梗處使用Harris角點(diǎn)檢測(cè),通過分析角點(diǎn)之間的水平和垂直位置的變化率來確定采摘點(diǎn)。雷旺雄等[11]對(duì)葡萄果梗區(qū)域使用角點(diǎn)檢測(cè),然后對(duì)角點(diǎn)數(shù)據(jù)進(jìn)行分析,進(jìn)而確定采摘點(diǎn)。
傳統(tǒng)算法只對(duì)單一品種的葡萄有較好的分割效果,當(dāng)葡萄顏色與背景顏色相似時(shí),葡萄圖像分割精度下降,導(dǎo)致采摘點(diǎn)的定位誤差增大。為解決鮮食葡萄采摘過程中采摘點(diǎn)定位精度低、定位速度慢的問題,本文利用PSPNet語義分割模型對(duì)葡萄圖像進(jìn)行分割,同時(shí)利用果梗邊緣搜尋的采摘點(diǎn)定位方法,實(shí)現(xiàn)多品種鮮食葡萄采摘點(diǎn)的快速準(zhǔn)確定位。
1.1.1 圖像獲取
在本試驗(yàn)中,于2020年7—9月多次在新疆石河子葡萄田中使用松下G95相機(jī)(5 184 pixels×3 888 pixels)采集不同光照、不同角度的葡萄圖像。采集時(shí)距離目標(biāo)約60~150 cm之間,葡萄圖像的光照條件包括晴天順光、晴天逆光、晴天遮陰。采集完成后將圖像尺寸統(tǒng)一調(diào)整至720像素×960像素。采集樣本信息如表1所示。本文共采集克瑞森、陽光玫瑰、紅提、黑金手指4種葡萄,樣本中的葡萄包含不同的表皮顏色和不同的果實(shí)形狀。共采集葡萄圖像2 859幅,挑選出360幅葡萄圖像用于分割定位試驗(yàn),1 749幅制作訓(xùn)練集,375幅制作測(cè)試集,375幅制作驗(yàn)證集,訓(xùn)練集、測(cè)試集、驗(yàn)證集的比例約為7∶1.5∶1.5。利用Labelme對(duì)數(shù)據(jù)集進(jìn)行標(biāo)注,標(biāo)注文件與原始圖片以VOC2007數(shù)據(jù)集的格式進(jìn)行存放。
表1 葡萄圖像信息Tab. 1 Grape image information
1.1.2 采摘系統(tǒng)
采摘平臺(tái)主要由視覺系統(tǒng)和采摘系統(tǒng)組成。視覺系統(tǒng)由CCD相機(jī)和固定支架組成,CCD相機(jī)的型號(hào)為Basler aca1300-60gc,圖像分辨率為1 280 pixels×1 024 pixels。采摘系統(tǒng)由6軸機(jī)械手臂和氣動(dòng)夾持器組成,六軸機(jī)械臂采用ER3A-C60型6軸多關(guān)節(jié)型機(jī)器人。葡萄采摘模擬試驗(yàn)平臺(tái)如圖1所示。
圖1 葡萄采摘模擬平臺(tái)
葡萄采摘點(diǎn)的求解分為兩步:第一步對(duì)圖像中的葡萄進(jìn)行識(shí)別分割,第二步利用分割圖像的參數(shù)設(shè)置興趣區(qū)域,在興趣區(qū)域內(nèi)部確定采摘點(diǎn)的位置。常用的傳統(tǒng)分割算法有k-means、Otsu、分水嶺算法等。傳統(tǒng)的分割算法在光照不均的復(fù)雜環(huán)境下分割精度會(huì)明顯下降。常用語義分割的算法主要有SegNet[12]、PSPNet[13]、RefineNet[14]、DeepLabv1[15]、DeepLabv2、DeepLabv3、U-Net[16]等?;诰矸e神經(jīng)網(wǎng)絡(luò)的分割算法魯棒性好,能夠適應(yīng)不同的光照?qǐng)鼍啊1疚倪x用PSPNet(MobileNetv2)[17]語義分割網(wǎng)絡(luò)分割葡萄。
1.2.1 PSPNet語義分割
PSPNet語義分割模型主要分為主干特征提取網(wǎng)絡(luò)、金字塔池化網(wǎng)絡(luò)、預(yù)測(cè)網(wǎng)絡(luò)3個(gè)部分。模型結(jié)構(gòu)如圖2所示。本文使用MobileNetV2[18]作為PSPNet模型的主干特征提取網(wǎng)絡(luò),其網(wǎng)絡(luò)各層結(jié)構(gòu)如表2所示。
本文使用的PSPNet模型主干網(wǎng)絡(luò)共有8層,其中:conv2d為普通卷積,bottleneck為反向殘差結(jié)構(gòu)的深度可分離卷積,t表示中間卷積通道的擴(kuò)張系數(shù),c表示輸出通道個(gè)數(shù),m表示該層的重復(fù)次數(shù);s表示卷積的步長(zhǎng)。網(wǎng)絡(luò)在提取特征時(shí)大量地使用了深度可分離卷積,減少了模型的參數(shù)量,提高了檢測(cè)速度。在主干特征提取網(wǎng)絡(luò)的最后兩層使用了空洞卷積,增大了網(wǎng)絡(luò)的感受野,提高了模型的分割精度。
圖2 網(wǎng)絡(luò)結(jié)構(gòu)
表2 MobileNetV2網(wǎng)絡(luò)各層結(jié)構(gòu)Tab. 2 MobileNetV2 network layer structure
主干網(wǎng)絡(luò)提取到葡萄的特征層后,金字塔池化網(wǎng)絡(luò)將特征層劃分成1×1、2×2、3×3、6×6的網(wǎng)格,在每個(gè)網(wǎng)格內(nèi)進(jìn)行平均池化。該網(wǎng)絡(luò)能夠聚合不同區(qū)域的上下文信息,從而提高獲取全局信息的能力。將得到的特征進(jìn)行上采樣,使得輸出層與輸入層有相同的尺寸,最后利用Softmax函數(shù)對(duì)圖片中的每一個(gè)像素分類,獲得每一個(gè)像素屬于葡萄的概率。Softmax損失函數(shù)計(jì)算如式(1)所示。
(1)
式中:n——預(yù)測(cè)類別總數(shù);
fi——樣本i的預(yù)測(cè)輸出;
fj——樣本j的預(yù)測(cè)輸出。
1.2.2 模型評(píng)估
為了驗(yàn)證本文提出方法對(duì)葡萄圖像分割的有效性,本文采用Recall、MPA和MIoU對(duì)訓(xùn)練好的模型進(jìn)行評(píng)估。假設(shè)圖像分類類別為k+1,pij為本屬于i類但被預(yù)測(cè)為j的像素?cái)?shù)量,pji為本屬于j類但被預(yù)測(cè)為i的像素?cái)?shù)量,pii為真實(shí)像素?cái)?shù)量,評(píng)價(jià)語義分割指標(biāo)的計(jì)算公式如下。
1)Recall表示對(duì)每一類真實(shí)像素預(yù)測(cè)正確的概率,計(jì)算如式(2)所示。
(2)
2)MPA(Mean Pixel Aaccuracy)表示對(duì)每一類預(yù)測(cè)正確總像素的比例的平均值,計(jì)算如式(3)所示。
(3)
3)MIoU(Mean Intersection over Union)表示數(shù)據(jù)集中每一個(gè)類的交并比的平均值,計(jì)算如式(4)所示。
(4)
葡萄采摘機(jī)器人采摘過程中,獲取采摘點(diǎn)的精確位置是一個(gè)關(guān)鍵的步驟。利用語義分割尋找果梗的成功率較低,因此本文采用尋找果梗特征的方法來獲取采摘點(diǎn)。首先去除語義分割后的圖像上的小面積區(qū)域,然后利用分割區(qū)域的信息獲取葡萄的質(zhì)心坐標(biāo)、最高點(diǎn)坐標(biāo)、外接矩形,利用這些參數(shù)在葡萄上方設(shè)定一個(gè)矩形的興趣區(qū)域,在興趣區(qū)域內(nèi)部進(jìn)行自適應(yīng)閾值果梗方向Canny邊緣檢測(cè);對(duì)檢測(cè)到的果梗邊緣信息進(jìn)行累計(jì)概率霍夫變換檢測(cè)直線并進(jìn)行直線擬合;擬合直線與興趣區(qū)域水平對(duì)稱軸的交點(diǎn)作為采摘點(diǎn)。
1.3.1 設(shè)定興趣區(qū)域
葡萄在重力的作用下普遍呈現(xiàn)向下懸掛的姿態(tài),為了提高采摘點(diǎn)的定位速度,減少計(jì)算機(jī)的數(shù)據(jù)處理量,本文在葡萄上方設(shè)定興趣區(qū)域求解采摘點(diǎn)。選取葡萄圖像的最高點(diǎn)作為興趣區(qū)域的最低點(diǎn),設(shè)置興趣區(qū)域的高ROI_H=0.1Hmax,興趣區(qū)域以X=X0作為垂直對(duì)稱軸,Hmax為葡萄果實(shí)的最大高度,興趣區(qū)域的寬ROI_W=0.4Wmax,Wmax為葡萄外接矩形的最大寬度,興趣區(qū)域模型圖如圖3所示。
圖3 興趣區(qū)域模型
1.3.2 對(duì)興趣區(qū)域進(jìn)行自適應(yīng)閾值果梗方向Canny邊緣檢測(cè)
由于葡萄的生長(zhǎng)環(huán)境復(fù)雜,在興趣區(qū)域內(nèi)部中同時(shí)存在枝葉、枝干、葡萄果梗及其他背景,其中葡萄果梗具有規(guī)律的朝向,因此本文將35°~145°的區(qū)域定義為果梗方向(圖4),其余方向定義為非果梗方向。
圖4 果梗方向示意圖
本文利用自適應(yīng)閾值果梗方向Canny邊緣檢測(cè)提取果梗的邊緣,忽略非果梗方向的邊緣。該方法首先利用高斯濾波對(duì)興趣區(qū)域的圖像降噪。其次使用Sobel垂直算子對(duì)降噪后的興趣區(qū)域進(jìn)行卷積計(jì)算,進(jìn)一步得到圖像的梯度幅值。像素點(diǎn)的梯度方向與邊緣方向正交,對(duì)于邊緣方向?yàn)閇0°,35°]和[145°,180°]兩個(gè)區(qū)間內(nèi)的邊緣進(jìn)行抑制。然后將圖像分為A1,A2,A3三類,其中A1代表圖像中的非果梗邊緣點(diǎn),其包含的梯度幅值分別為{t1,t2,…,tk},A2代表圖像中需要判斷是否為果梗邊緣點(diǎn)的點(diǎn),其包含的梯度幅值分別為{tk+1,tk+2,…,tm},A3代表圖像中的果梗邊緣點(diǎn),其包含的梯度幅值分別為{tm+1,tm+2,tL}[19-20]。利用各個(gè)像素的梯度幅值求出圖像梯度分布概率
(5)
式中:N——葡萄圖像總的像素?cái)?shù);
nj——梯度幅值等于tj的像素?cái)?shù)。
根據(jù)圖像梯度分布概率計(jì)算整個(gè)區(qū)間的梯度期望
(6)
根據(jù)區(qū)間梯度期望可以求出A1、A2、A3類中的梯度幅值期望
(7)
最后計(jì)算類間方差的最大值,最大值對(duì)應(yīng)的tk、tm的值作為Canny邊緣檢測(cè)的高低閾值,即為A1、A2、A3的分界點(diǎn),σ2(k,m)的計(jì)算公式如式(8)所示。
(8)
利用自適應(yīng)閾值果梗方向Canny邊緣檢測(cè)之后,葡萄的枝干、枝葉等背景信息明顯被抑制,葡萄果梗邊緣信息得到了保留。自適應(yīng)閾值果梗方向Canny邊緣檢測(cè)處理過程如圖5所示。
(a) 原圖 (b) Canny邊緣檢測(cè)
(c) 自適應(yīng)閾值 (d) 最終結(jié)果
1.3.3 求解采摘點(diǎn)
在經(jīng)過自適應(yīng)閾值果梗方向Canny邊緣檢測(cè)后,利用累計(jì)概率霍夫變換對(duì)檢測(cè)到的線段進(jìn)行直線檢測(cè)。將累加平面閾值設(shè)置為4、最低線段長(zhǎng)度設(shè)置為k,可有效地將噪聲點(diǎn)線段去除,保留的線段大概率為果梗輪廓。k的計(jì)算公式為
(9)
最后對(duì)累計(jì)概率霍夫變換求到的直線進(jìn)行直線擬合,本文采用的距離函數(shù)
(10)
其中C=2.984 6。
將擬合直線與興趣區(qū)域水平對(duì)稱軸的交點(diǎn)確定為葡萄的采摘點(diǎn)。采摘點(diǎn)求解過程如圖6所示。
(a) 直線檢測(cè) (b) 直線擬合
(c) 確定采摘點(diǎn)
本文試驗(yàn)平臺(tái)硬件為CPU intel i5-8500,運(yùn)行頻率為3.00 GHz,核心數(shù)為6個(gè),內(nèi)存為12 G,硬盤為256 G固態(tài)硬盤,操作系統(tǒng)為Win 10操作系統(tǒng),GPU為GTX 1050Ti。軟件配置的環(huán)境是python3.7、tensorflow2.2.0、CUDA10.1。本文所有對(duì)比試驗(yàn)均在該平臺(tái)下運(yùn)行。
在訓(xùn)練過程中本文采用了遷移學(xué)習(xí)。首先利用PSPNet(MobileNetv2)對(duì)PASCAL-VOC2012訓(xùn)練200個(gè)epoch。用MAP最好的權(quán)重文件作為訓(xùn)練葡萄數(shù)據(jù)集的預(yù)訓(xùn)練權(quán)重。利用制作的葡萄數(shù)據(jù)集進(jìn)行訓(xùn)練,Batch Size大小設(shè)置為2,訓(xùn)練200個(gè)epoch。在葡萄圖像分割中,只需要設(shè)置兩個(gè)類,一個(gè)類是葡萄,一個(gè)類是背景。訓(xùn)練采用Adam優(yōu)化器,初始學(xué)習(xí)率設(shè)置為0.001,當(dāng)訓(xùn)練集損失函數(shù)在連續(xù)3個(gè)訓(xùn)練周期沒有衰減時(shí),學(xué)習(xí)率變?yōu)樵瓉淼?/2。在訓(xùn)練過程中利用Tensorboard將數(shù)據(jù)保存在日志文件中,每訓(xùn)練1個(gè)周期保存1次。根據(jù)生成的權(quán)重文件計(jì)算MAP、MIoU。本文葡萄分割系統(tǒng)中的優(yōu)先級(jí)為MAP>MIoU。在第168個(gè)epoch時(shí)生成權(quán)重文件的MAP最高。
利用U-Net、PSPNet(RseNet50)和PSPNet(MobileNetv2)模型在相同的訓(xùn)練參數(shù)下進(jìn)行200個(gè)epoch的訓(xùn)練,挑選出MAP最高的模型作為試驗(yàn)?zāi)P蛯?duì)375張測(cè)試集葡萄圖進(jìn)行分割試驗(yàn),試驗(yàn)對(duì)比結(jié)果如表3所示。
表3 3種網(wǎng)絡(luò)性能指標(biāo)Tab. 3 Three network performance indicators
由表3可知,PSPNet(MobileNetv2)模型的MAP和MIoU分別為97.73%和95.49%。其中MAP比U-Net模型高0.94%,比PSPNet(RseNet50)模型高2.05%。PSPNet(MobileNetv2)模型的檢測(cè)速度為23.12幀/s,是U-Net模型的5.05倍,是PSPNet(RseNet50)模型的2.66倍。本文采用的PSPNet(MobileNetv2)模型在分割葡萄方面具有更高的分割精度和分割速度。
為驗(yàn)證本文定位采摘點(diǎn)方法的準(zhǔn)確性,本文分別在晴天順光、晴天逆光、晴天遮陰3種光照條件下采集克瑞森、陽光玫瑰、紅提、黑金手指4個(gè)品種的葡萄圖像各30張,共計(jì)360張葡萄圖像進(jìn)行采摘點(diǎn)定位試驗(yàn)。
為分析采摘點(diǎn)定位精度,設(shè)置興趣區(qū)域內(nèi)的果梗區(qū)域?yàn)锳,本文引入像素定位誤差σ。
(11)
式中:x、y——計(jì)算的采摘點(diǎn)像素坐標(biāo);
xi、yi——果梗區(qū)域坐標(biāo);
σ——采摘點(diǎn)到果梗區(qū)域內(nèi)最短的歐氏距離。
當(dāng)采摘點(diǎn)位于果梗區(qū)域內(nèi)時(shí),σ=0,果梗直徑設(shè)為d,當(dāng)σ小于0.5 d時(shí),均算準(zhǔn)確定位。
本文利用Photoshop軟件測(cè)量計(jì)算出采摘點(diǎn)到果梗的像素定位誤差。圖7為克瑞森、紅提、黑金手指、陽光玫瑰4種葡萄的定位過程。表4為克瑞森、陽光玫瑰、紅提、黑金手指在3種光照條件下的采摘點(diǎn)定位誤差。
從表4可以看出,本文算法的平均定位誤差為0.129d,平均定位速度為237.3 ms。在晴天遮陰情況下采摘點(diǎn)的定位誤差為0.121d,比晴天逆光條件下低0.008d,比晴天順光條件下低0.16d。當(dāng)光照強(qiáng)度較大時(shí),容易產(chǎn)生曝光過度的現(xiàn)象,導(dǎo)致果梗與枝干、枝葉等干擾物體的對(duì)比度降低,導(dǎo)致定位誤差增大。當(dāng)葡萄果梗較直時(shí),有利于Hough變換檢測(cè)直線段,采摘點(diǎn)定位精度較高,采摘點(diǎn)會(huì)定位在果梗上(如圖7(d)、圖7(h)、圖7(p)所示)。當(dāng)果梗存在彎曲時(shí)定位精度會(huì)略微下降,這是由于非果梗方向的梯度幅值抑制使邊緣線段被打斷,從而導(dǎo)致累計(jì)概率霍夫變換檢測(cè)到的果梗上的直線變少、噪聲占比增加使得定位誤差增大。當(dāng)興趣區(qū)域內(nèi)存在多個(gè)豎直方向的果?;蛑Ω蓵r(shí),算法無法抑制非果梗的邊緣,檢測(cè)出的所有邊緣都成為直線擬合的點(diǎn)集,會(huì)增大定位誤差(如圖7(l)所示)。
在360張?jiān)囼?yàn)樣本中278個(gè)樣本定位在了葡萄果梗上,53個(gè)樣本的σ小于0.5d,331個(gè)樣本定位成功,29個(gè)樣本的σ大于0.5d,定位成功率為91.94%。在29個(gè)定位失敗的樣本中9個(gè)樣本是由于果梗處有枝葉遮擋導(dǎo)致,20個(gè)樣本是由于豎直方向上有枝條、枝干干擾導(dǎo)致。本文方法在晴天順光、晴天逆光、晴天遮陰3種光照條件下定位成功率為91.94%,運(yùn)行時(shí)間為187.47 ms。
(a) 原圖
(b) 求解質(zhì)心
(c) 定位結(jié)果
(e) 原圖
(f) 求解質(zhì)心
(g) 定位結(jié)果
(h) 局部放大圖
(i) 原圖
(j) 求解質(zhì)心
(k) 定位結(jié)果
(l) 局部放大圖
(m) 原圖
(n) 求解質(zhì)心
(o) 定位結(jié)果
(p) 局部放大圖
表4 不同光照下的采摘點(diǎn)定位誤差和定位時(shí)間Tab. 4 Positioning error and positioning time of picking points under different illumination
為了進(jìn)一步驗(yàn)證本文算法對(duì)葡萄采摘點(diǎn)定位的可行性,本文模擬搭建試驗(yàn)平臺(tái)進(jìn)行葡萄采摘試驗(yàn)。相機(jī)曝光時(shí)間參數(shù)設(shè)置為5 000,末端執(zhí)行器夾持器的開口設(shè)置為10 mm。采摘結(jié)果如表5所示。
表5 試驗(yàn)結(jié)果Tab. 5 Experiment results
在200次采摘試驗(yàn)中,171串葡萄采摘成功,29串葡萄采摘失敗,采摘成功率為85.5%。黑金手指葡萄采摘成功率最高是因?yàn)槠咸雅c背景差異大,有利于分割,葡萄果實(shí)重且果梗筆直,有利于采摘點(diǎn)的定位。陽光玫瑰葡萄與枝葉顏色相近,分割準(zhǔn)確率降低導(dǎo)致采摘點(diǎn)定位誤差大,采摘失敗率增加。在采摘失敗的樣本中,因?yàn)椴烧c(diǎn)定位失敗而導(dǎo)致采摘失敗的有18串,而因?yàn)樽笙鄼C(jī)和右相機(jī)特征點(diǎn)匹配失敗導(dǎo)致采摘點(diǎn)三維位置信息計(jì)算錯(cuò)誤的有11串。
1) 為了準(zhǔn)確地分割葡萄圖像,本文對(duì)PSPNet網(wǎng)絡(luò)進(jìn)行了改進(jìn)。通過對(duì)比U-Net、PSPNet(RseNet50)和PSPNet(MobileNetv2)三種模型,本文采用的PSPNet(MobileNetv2)模型對(duì)于不同品種的葡萄具有更好地分割效果,平均分割精度為97.73%,分割速度為23.12幀/s。
2) 為了快速準(zhǔn)確地定位葡萄采摘點(diǎn),本文提出了一種果梗搜尋的采摘點(diǎn)定位方法。通過對(duì)克瑞森、陽光玫瑰、紅提、黑金手指4種葡萄在晴天順光、晴天逆光、晴天遮陰3種光照條件下進(jìn)行采摘點(diǎn)定位試驗(yàn),證明了該方法的可行性,該方法的采摘點(diǎn)定位準(zhǔn)確率為91.94%,運(yùn)行時(shí)間為187.47 ms。在模擬試驗(yàn)中葡萄采摘成功率為85.5%。
3) 本文算法能夠滿足葡萄采摘機(jī)器人對(duì)多品種鮮食葡萄采摘點(diǎn)的定位需求,為葡萄采摘機(jī)器人高效地采摘多品種鮮食葡萄提供了新思路。
中國農(nóng)機(jī)化學(xué)報(bào)2022年12期