(北京航空航天大學(xué) 儀器科學(xué)與光電工程學(xué)院,北京 100191)
目前工廠車間對于機(jī)械臂的使用越來越廣泛,機(jī)械臂的自主抓取大多是基于視覺的控制,如視覺定位、視覺伺服[1],但是,當(dāng)環(huán)境較復(fù)雜時,就會導(dǎo)致識別定位精度大大下降。所以,精確的確定目標(biāo)物體的位置是急需要解決的問題。微軟公司研發(fā)的Kinect深度傳感器能同時獲取周圍空間的彩色二維圖像及深度信息,通過深度傳感器自身的參數(shù)可以求出空間三維點云[2],且價格便宜,因此廣泛應(yīng)用于機(jī)器人系統(tǒng)的研究中。蔣煥煜[3]等使用雙目視覺傳感器對成熟番茄進(jìn)行定位,采用自適用閾值法對RGB圖像進(jìn)行分割,并將形心匹配與區(qū)域匹配相結(jié)合來計算目標(biāo)番茄的位置信息。該方法精度較高,對指導(dǎo)機(jī)械臂采摘成熟番茄具有重要的作用,但是雙目視覺傳感器標(biāo)定較為繁瑣,計算復(fù)雜,而且只能可見光的環(huán)境下進(jìn)行識別。鐘澤宇[4]等使用Kinect深度傳感器同時采集RGB圖和深度圖,在RGB圖上通過融合HSI色彩空間和Lab色彩空間的分割結(jié)果,分割出包含西紅柿的區(qū)域,并將該區(qū)域轉(zhuǎn)換成三維空間點云,計算點云的重心達(dá)到對成熟番茄定位的目的。該方法對西紅柿的定位效果較好,但只適用于像西紅柿等顏色特征較為明顯的簡單目標(biāo)物體,很難擴(kuò)展到實際工廠使用場景中。吳帥[5]等根據(jù)深度傳感器模型,將Kinect采集的深度圖轉(zhuǎn)換成空間點云,然后通過限制深度閾值和顏色信息將人體的點云數(shù)據(jù)分割出來,達(dá)到對人體的重構(gòu)和定位。該方法使用簡單,計算量小,不需要對相機(jī)進(jìn)行標(biāo)定,但在使用過程中需要限制人體與深度傳感器之間的距離,使用的局限性較大。
直接在三維點云中分割出目標(biāo)物體,誤差大,處理速度慢,不能夠滿足實時的要求,本文仍然先從二維圖像出發(fā),先在二維彩色將目標(biāo)物體識別出來,再進(jìn)行空間定位。相較于傳統(tǒng)的手工提取特征的算法,深度學(xué)習(xí)算法的優(yōu)勢在于特征提取環(huán)節(jié)不需要使用者預(yù)先選定提取何種特征,而是采用一種通用的學(xué)習(xí)過程,使模型從大規(guī)模數(shù)據(jù)中學(xué)習(xí)進(jìn)而學(xué)得目標(biāo)具備的特征。王鵬[6]等利用深度學(xué)習(xí)算法進(jìn)行了人體圖像的識別與分割,識別精度達(dá)到88.77%,單張圖片分割耗時約為60.7 ms,基本上滿足實時性的要求。伍錫如[7]等通過12層的深度學(xué)習(xí)算法,從眾多物體中識別出了中國象棋,識別精度高達(dá)99.6%。本文先使用改進(jìn)的Mask RCNN深度學(xué)習(xí)算法從RGB圖像中識別并分割出目標(biāo)物體的區(qū)域,然后結(jié)合深度傳感器的數(shù)學(xué)模型,將分割得到的區(qū)域像素坐標(biāo)轉(zhuǎn)換成三維空間坐標(biāo),達(dá)到分割點云的目的,完成對物體空間定位的任務(wù)。通過實驗結(jié)果分析,本文提出的方法可以同時識別出特征差異很大的目標(biāo)物體,且滿足實時性的需求,為機(jī)械臂的自主識別抓取提供了很好的理論基礎(chǔ)。
本文使用的實驗設(shè)備是由微軟生產(chǎn)的3D視覺傳感器Kinect,該設(shè)備同時含有RGB彩色傳感器和紅外傳感器,有效的探測距離大約為0.8~3.5 m。Kinect可以同時獲取場景內(nèi)的深度圖及彩色圖,并且可以根據(jù)彩色信息和深度信息完成具有顏色信息的點云數(shù)據(jù)的生成。
深度傳感器是利用光編碼技術(shù)對目標(biāo)空間的深度信息進(jìn)行計算。該技術(shù)通過紅外傳感器結(jié)合紅外光源獲取深度信息,在傳感器有效距離之內(nèi),每隔一段距離取參考平面,記錄下參考平面上的紅外光源產(chǎn)生的衍射散斑圖案,當(dāng)光源在待測物體上產(chǎn)生衍射圖樣后,將該圖像與幾百張參考圖像做運(yùn)算得到一系列相關(guān)度圖像。依據(jù)相關(guān)圖像中的峰值從而得到測量圖像的深度信息[8]。
空間定位主要是通過獲取的點云數(shù)據(jù)來進(jìn)行計算的,和普通相機(jī)一樣,對于獲取的深度圖上的每個像素坐標(biāo)都可以通過針孔攝像機(jī)模型計算得到其對應(yīng)的三維坐標(biāo)值。針孔相機(jī)模型[5]如式(1)所示:
(1)
其中:u,v是深度圖像坐標(biāo),u0,v0是圖像坐標(biāo)系的原點,fx,fy為相機(jī)鏡頭x,y方向上的焦距,dx,dy是x,y方向上單位像素的長度,R,t為攝像機(jī)坐標(biāo)系到世界坐標(biāo)系的旋轉(zhuǎn)矩陣與平移矢量,而深度傳感器的攝像機(jī)坐標(biāo)系與世界坐標(biāo)系重合,因此R為單位陣,t為零矢量;深度值zc與世界坐標(biāo)系中的Z坐標(biāo)相同。因此式(1)可化為:
(2)
由式(2)可計算出物體三維坐標(biāo)為:
(3)
因此,利用攝像機(jī)模型就可以將深度圖上的二維點坐標(biāo)轉(zhuǎn)換成三維空間點,通過對空間點云的處理即可完成空間定位的目的。
本文主要是通過在RGB圖中識別并分割出目標(biāo)物體,間接達(dá)到分割點云的目的。因此,在RGB圖像中對目標(biāo)物體識別分割的精度直接影響著后續(xù)點云的分割。傳統(tǒng)的圖形分割方法大都是基于圖像圖形學(xué)方法的,如Chuang[9]等利用顏色直方圖,通過雙局部閾值變換實現(xiàn)了圖像的語義分割,這種分割方法對顏色特征有較高的要求,顏色不明顯時很難做到精確的分割。后來,淺層機(jī)器學(xué)習(xí)算法得到了發(fā)展,算法可以學(xué)習(xí)到一些淺層的特征,分割效果較圖像圖形學(xué)的分割方法得到了提升。如毛凌[10]等提出一種改進(jìn)的條件隨機(jī)場模型,完成了目標(biāo)檢測、與圖像分割的任務(wù)。淺層的機(jī)器學(xué)習(xí)需要借助人工設(shè)計的部分特征才能完成識別的任務(wù),很難學(xué)習(xí)到物體深層的特征,且受人的經(jīng)驗影響。
隨著卷積神經(jīng)網(wǎng)絡(luò)[11]的提出,深度學(xué)習(xí)算法得到了迅速的發(fā)展,它能通過大量的數(shù)據(jù)學(xué)習(xí)到物體的深層特征,而不需要人為的指定特征。本文采用的深度學(xué)習(xí)分割算法是由Facebook提出Mask RCNN[12]分割算法,算法的結(jié)構(gòu)和流程圖如圖1所示,輸出包含三個分支,分別是目標(biāo)的分類、目標(biāo)包圍框的坐標(biāo)及目標(biāo)物體的二值掩碼。其中分類和回歸部分都是由基于區(qū)域的目標(biāo)檢測網(wǎng)絡(luò)Faster RCNN[13]完成,目標(biāo)物體的像素級分割由全卷積神經(jīng)網(wǎng)絡(luò)FCN[14]完成。從圖1可以看出,對于輸入的圖片,首先進(jìn)行的是將圖片輸入到卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行特征提取,對于得到特征圖(Feature Map)通過目標(biāo)估計網(wǎng)絡(luò)(RPN)網(wǎng)絡(luò)提取可能存在的目標(biāo)區(qū)域(region of interest,ROI)。這些ROI經(jīng)過ROI Align層被映射成固定維數(shù)的特征向量,其中兩個分支經(jīng)過全連接層進(jìn)行分類和包圍框的回歸,另一分支經(jīng)過全卷積進(jìn)行上采樣得到分割圖。訓(xùn)練采用的多任務(wù)損失函數(shù),通過學(xué)習(xí)不斷的減小損失函數(shù)的值,直到獲得全局最優(yōu)解。損失函數(shù)的公式如式(4),式中的三項分別為分類誤差、包圍框誤差和分割誤差。
L=Lcls+Lbox+Lmask
(4)
圖1 Mask R-CNN網(wǎng)絡(luò)結(jié)構(gòu)圖
Mask RCNN算法在提取ROI時采用的是RPN網(wǎng)絡(luò),RPN網(wǎng)絡(luò)可以接受任意大小的輸入圖片,輸出為可能存在目標(biāo)的區(qū)域。Mask RCNN為了減少計算量,采用共享卷積的形式進(jìn)行ROI的提取,即輸入RPN網(wǎng)絡(luò)的圖片為經(jīng)過卷積網(wǎng)絡(luò)的最后一層輸出的特征圖,RPN的運(yùn)行機(jī)制如圖2所示,運(yùn)行3*3的滑動窗口在特征圖上進(jìn)行遍歷,為了估算原始目標(biāo)在每個滑動窗口上位置上的大小,定義了k種不同形狀的包圍框,根據(jù)目標(biāo)物體大小的不同選擇不同尺寸的包圍框,本文采用的是128*128、256*256、512*512三種包圍框大小,長寬比設(shè)置為1:1、1:2、2:1三種比例,共九種包圍框。通過非極大值抑制的方法,挑選出最有可能存在目標(biāo)的區(qū)域,隨后對該區(qū)域進(jìn)行檢測與分割。
圖2 RPN運(yùn)行機(jī)制
RPN網(wǎng)絡(luò)采用的是固定大小的滑動窗口的方式在特征圖上進(jìn)行遍歷,固定的滑動窗口在實際使用中可能存在一定的限制,因為目標(biāo)可能大也可能小,同時窗口的滑動會到來很多重復(fù)的估計目標(biāo)。基于以上問題提出了一種改進(jìn)的RPN網(wǎng)絡(luò),其結(jié)構(gòu)如圖3所示,將固定滑動窗口操作改成固定尺寸分割策略,分割后的每一個分割窗口同樣經(jīng)過不同尺寸的錨框進(jìn)行ROI提取,之后的操作和RPN一樣。由于采用非滑動窗口的分割方法,改進(jìn)的RPN產(chǎn)生了更少的估計目標(biāo)區(qū)域,如按圖3的方式進(jìn)行,產(chǎn)生的估計目標(biāo)區(qū)域個數(shù)為k*(2*2+3*3+5*5),多種分割方法相當(dāng)于構(gòu)建了多種尺度的RPN,效率更高,更節(jié)省時間。
圖3 改進(jìn)的RPN運(yùn)行機(jī)制
在使用改進(jìn)Mask R-CNN網(wǎng)絡(luò)前,需要先對該網(wǎng)絡(luò)進(jìn)行訓(xùn)練。由于人工采集的數(shù)據(jù)集較少,為了防止算法在訓(xùn)練過程過擬合,先是基于MS COCO公用數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練,樣本數(shù)量約8萬多張,并且每張圖片中的物體類別都進(jìn)行了語義標(biāo)注,很適合用于圖像分類與語義分割。使用Kinect分別采集了圓柱形物體、球形物體、錐形物體和工廠常見的其他目標(biāo)物體,并用LableMe進(jìn)行人工標(biāo)記得到標(biāo)簽圖。本文首先采用的數(shù)據(jù)增廣的方法是對原數(shù)據(jù)進(jìn)行隨機(jī)旋轉(zhuǎn)一定的角度形成新的圖像,通過對原圖進(jìn)行隨機(jī)旋轉(zhuǎn)可以部分消除樣本多樣性不足的問題。采用的另一種數(shù)據(jù)增廣的方法是改變圖像RGB通道的強(qiáng)度,目的是為了消除光照強(qiáng)度和顏色變化對實驗結(jié)果帶來的影響,具體的做法是對RGB圖像的像素值做主成分分析,然后對圖像中的每一個像素添加一個隨機(jī)倍數(shù)的主成分[15]。
[p1,p2,p3][α1λ1,α2λ2,α3λ3]T
(4)
式中,p和λ分別為圖像RGB的像素值的3*3協(xié)方差矩陣的特征向量和特征值,α是隨機(jī)變量,且隨機(jī)性符合平均值為0,標(biāo)準(zhǔn)偏差為0.1的高斯隨機(jī)分布。
由于采集設(shè)備的原因,采集到的設(shè)備會存在一定的圖像噪聲,所以在將圖像輸入到訓(xùn)練模型之前,進(jìn)行簡單的中值濾波操作。訓(xùn)練過程分為三個階段,第一階段采用學(xué)習(xí)率為0.001訓(xùn)練頭部輸出網(wǎng)絡(luò)層,第二階段訓(xùn)練以學(xué)習(xí)率為0.001訓(xùn)練四層以后的網(wǎng)絡(luò)層,第三階段將學(xué)習(xí)率降低10倍訓(xùn)練整個網(wǎng)絡(luò)層,直到訓(xùn)練的誤差不再變化。其過程如圖4所示。
圖4 圖像分割實驗流程圖
為了準(zhǔn)確客觀地評價所得分類器的性能,用重疊率來度量圖像最終識別和分割的精度,重疊率的計算如式(5)。其中,Ap為Mask R-CNN網(wǎng)絡(luò)預(yù)測分割的區(qū)域,AGT為目標(biāo)的實際區(qū)域。
(5)
為了驗證改進(jìn)Mask R-CNN對于目標(biāo)分割的可靠性、準(zhǔn)確性與實時性,本實驗分別在正常光照、黑暗光照、強(qiáng)光照、多色彩組成的物體(為了驗證不受顏色的干擾)及不同拍攝距離、不同程度的遮擋、不同背景情況下,分別用深度傳感器采集多幅圖片進(jìn)行識別與分割,正常光照下得到的實驗結(jié)果如圖5所示,以及在GTX 1080顯卡下的平均準(zhǔn)確率及消耗時間如表1所示。
圖5 目標(biāo)識別結(jié)果。
實驗環(huán)境目標(biāo)數(shù)量消耗時間/s準(zhǔn)確率/%正常光照30.43298.2暗光30.47892.4強(qiáng)光30.53188.1多色彩物體30.47388.4不同的距離拍攝30.49293.2復(fù)雜的背景30.53891.2
通過表1數(shù)據(jù)可以看出,改進(jìn)的Mask RCNN網(wǎng)絡(luò)在不同條件下,對目標(biāo)的識別精度相對較高,受環(huán)境影響較小,不會因為光線變暗等環(huán)境因素導(dǎo)致識別精度變得很低。經(jīng)分析可知,Mask RCNN模型是通過大量數(shù)據(jù)學(xué)習(xí)到目標(biāo)物體的特征,而不是人為設(shè)定的,這樣學(xué)來的特征更能適應(yīng)環(huán)境的變化,確定就是需要準(zhǔn)備大量的數(shù)據(jù),在數(shù)據(jù)量不足的情況下,準(zhǔn)確率可能就會下降。
經(jīng)過改進(jìn)的Mask RCNN算法之后會得到三個輸出,分別是目標(biāo)的類別、包圍框的位置及物體的掩碼。為了得到目標(biāo)物體所對應(yīng)的深度圖上的區(qū)域,需要對分割算法的效果圖進(jìn)行進(jìn)一步的處理。通過提取被識別到的物體的掩碼,并將背景的像素值設(shè)為0,得到的效果如圖6所示。
圖6 目標(biāo)分割結(jié)果
Kinect可以同時采集同一場景下的深度圖和RGB圖,并且像素坐標(biāo)是對應(yīng)的。通過圖6,可以得到目標(biāo)物體在深度圖對應(yīng)的區(qū)域。利用式(3)可以將深度圖中的點映射到三維空間中,將每個二維點轉(zhuǎn)換成基于Kinect坐標(biāo)系的三維空間點,得到的空間點云數(shù)據(jù)可視化如圖7所示。
圖7 目標(biāo)2點云分割的結(jié)果
本實驗通過計算分割獲得的點云的重心對目標(biāo)物體進(jìn)行定位,定位的誤差定義為:
Δ=(xi-x)2+(yi-y+)2+(zi-z)2
(6)
手動測量的精度為1 mm,深度傳感器的測量單位為mm,測量結(jié)果保留一位小數(shù),實驗測量與手動測量的平均相對誤差σ為:
(7)
通過多次實驗,得到的數(shù)據(jù)如表2所示。
表2 自然光下手動測量與深度傳感器測量的結(jié)果
如表3所示,使用了幾種傳統(tǒng)方法和基于卷積神經(jīng)網(wǎng)絡(luò)的Mask RCNN算法、改進(jìn)的Mask RCNN算法,在正常光照下,對形狀不一的工件進(jìn)行了50次對比試驗,統(tǒng)計了平均識別率,定位的精度和消耗的時間。
表3 不同的方法性能對比
通過表3可以發(fā)現(xiàn),文獻(xiàn)[3]提出的基于HSI和Lab色彩空間的定位方法與原文相比識別率有所下降,主要原因是HSI和Lab只能對顏色特征比較明顯的物體識別率比較好,不具有廣泛的實用性。傳統(tǒng)使用的比較多的雙目視覺方法比較復(fù)雜,用起來繁瑣,而且基于Hausdorff距離的相似度匹配需要提前制作模板庫,通過計算大量的距離匹配到目標(biāo),比較消耗時間。本文所使用的Mask RCNN深度學(xué)習(xí)算法能從大量數(shù)據(jù)中學(xué)習(xí)大目標(biāo)的深層次特診,相比較于人工設(shè)計的特征更能表達(dá)物體之間的差別,因此受外界因素影響較小,而且經(jīng)改進(jìn)的Mask RCNN算法識別時間在0.25 s左右,基本滿足實時性,具有很好的使用價值。
本課題使用了深度傳感器與深度學(xué)習(xí)算法相結(jié)合,對目標(biāo)物體進(jìn)行識別、分割與定位,為機(jī)械臂實現(xiàn)自主識別抓取提供了較好的技術(shù)指導(dǎo)。根據(jù)機(jī)械臂實際可能抓取物體種類的需求,提前訓(xùn)練深度學(xué)習(xí)算法,使其學(xué)習(xí)目標(biāo)物體深層次的特征,然后結(jié)合深度傳感器重建出目標(biāo)物體的點云,達(dá)到對目標(biāo)物體空間定位的目的,相比于傳統(tǒng)的基于人為指定特征進(jìn)行分割具有較好的實用性。實驗證明定位誤差在2%以內(nèi),可行性較好,對機(jī)械臂抓取系統(tǒng)的研究具有很重要的作用。