王憲倫,張海洲,安立雄
(青島科技大學 機電工程學院,山東 青島 266042)
隨著機器人技術、計算機視覺與人工智能技術的發展,復雜場景下的物體識別與姿態估計問題逐漸成為機器視覺領域研究的重點。對于三維物體的識別最早出現在20世紀50年代。開始的研究者主要探索單一背景的物體識別,并將此問題叫做“積木世界”問題。ROBERTS提出了一套針對此問題的識別方案,將多面體分為多個部件進行識別[1]。但是此模型對于真實世界做了過分的簡化,因此對于曲面較多的物體難以適用。BOLLES開發出一種面向三維工件的識別方案,根據工件的CAD模型,在工件的頂點、邊、面、體之間建立拓撲關系,通過圖匹配的方法實現工件的識別[2]。CHEN開發了一種以不同視角的圖像建立物體立體模型的方法,在圖像匹配的過程中使用方向、輪廓等信息,進行識別定位[3]。近年來,針對此問題的解決方案大多是以點云數據為基礎。首先是離線采集點云數據,通過分割算法進行點云聚類[4],計算點云的特征描述子,獲得物體的最小包圍盒[5],實現對目標物體的識別與定位。國內外許多科研機構在這方面都取得了較好的成果,例如:Willow Garage公司PR2機器人、中國科技大學的“可佳”機器人等。但是隨著深度學習的普及,尤其是卷積神經網絡[6]在圖像分類取得突破之后,深度學習也開始應用于圖像語義分割,所以對比之前的解決方案使用的3D點云數據,現在只需要通過對2D圖像進行語義分割便可以實現對圖像分割與分類,大大加速了物體的識別過程。
本研究設計的基于圖像語義分割技術的物體姿態估計算法,它的最終目標是實現復雜場景下目標物體的識別與定位,依靠Kinect視覺傳感器拍攝場景RGB圖像與深度圖,利用全卷神經網絡[7]實現RGB圖像語義分割,將分割后的目標圖像與深度圖配準得到點云圖,最后利用迭代最近點[8]算法將目標點云圖與模型庫中已有的目標模型進行配準,最終實現物體的識別與位姿估計。
物體識別與位姿估計算法主要包括基于圖像語義分割技術的物體識別與位姿估計兩部分。
圖像語義分割屬于圖像理解的范疇。語義分割要求將圖中的每一個像素點分割并標注為某個物體類別(圖1)。


圖1 場景原圖與分割圖
本文采用的語義分割網絡是FCN(全卷積神經網絡),通過改進主流的深度卷積神經網絡在數據集上訓練,以RGB圖像為輸入,然后輸出圖像的像素語義分割圖,實現像素級別端對端的分割。在語義分割網絡的設計中輸出的語義分割圖像需要與輸入的圖像有相同的尺寸,但是在做圖像分類的網絡模型中使用了多個卷積層與池化層,在經過多次的卷積與池化操作之后會讓原始輸入的圖像尺寸越來越小,所以為了得到與輸入圖像尺寸一致的輸出,必須進行反卷積[9]操作。
整個語義分割網絡的設計架構以分類效果較好的ResNet[10](深度殘差網絡)為基礎。ResNet的產生是為了解決隨著網絡深度不斷增加而出現梯度消失或者梯度爆炸的問題。形式上,輸入的數據表示為x,將期望的底層映射表示為H(x),將堆疊的非線性層擬合后的映射為F(x)。傳統的卷積網絡直接以F(x)作為下一層的輸入,但是隨著網絡深度不斷增加會使梯度變得越來越小,丟失更多的原始信息。所以ResNet以H(x)=F(x)+x作為下一層的輸入,使網絡深度可以達到較深的層數,從而使訓練模型對于輸出與輸入的微小波動更加敏感,最終的分類效果更好。
語義分割網絡為了獲得更好的分割效果,選擇以ResNet為基礎,去掉原網絡的全局池化層,因為全局池化層會丟失圖像的空間信息,然后將全連接層替換為核尺寸為1的卷積層,最后一層接入一個卷積轉置層,使網絡的輸出等于輸入尺寸。輸出的圖像中可以將不同類別的物體以不同顏色表示出來,并且將實現不同物體之間的分割。整體網絡設計架構示意圖見圖2。

圖2 語義分割網絡設計圖
位姿估計部分主要分為兩部分,第一部分是目標點云的獲得,第二部分是將目標點云模型庫中目標的點云配準,求取物體位姿。
目標點云的獲得主要依賴于RGBD傳感器的成像模型。在不考慮鏡頭畸變的情況下,攝像機的成像模型為小孔成像,如圖3所示。空間中的點坐標為P=[x,y,z]與其在圖像成像平面上坐標p=[u,v]滿足如下關系:u=(x·f)/z,v=(y·f)/z,其中f為Kinect視覺傳感器的焦距。深度圖中的每一個像素的值d(u,v)保存了場景中的點到鏡頭中心的距離。通過標定[11],可以將彩色圖與深度圖的各個像素一一對應起來,實現彩色圖像中像素點到空間中三維坐標的映射:
(1)
其中cx、cy為攝像機光心坐標。將分割出來的目標物體的彩色圖與深度圖對齊之后便可以得到其點云圖。

圖3 攝像機成像模型
點云配準過程一般分為兩個階段:第一階段為粗配準,使得目標點云與模型庫中模型之間位姿差距最大可能地減小,達到大致的重合狀態;第二階段為精配準,其目的是通過精確的配準算法使得目標點云與模型庫中點云達到最佳的重合狀態。
設P={Pi}Ni=1,Q={Qi}Ni=1為兩個點云集,P是上文中獲得的目標點云,Q是模型庫中對應的模型點云。粗對準算法步驟如下:
首先計算點云P和Q的協方差矩陣Cp和Cq:
(2)
(3)

(4)
(5)
其中:UP是點云P的特征向量,Uq是點云Q的特征向量。
則點云P和Q之間的旋轉矩陣R和平移向量T為:
R=UpUq-1
(6)

(7)
R和T便是點云粗匹配的結果。

算法建立如下損失函數:
(8)
其中:R(q)表示旋轉矩陣;T(q)為平移向量。求解式(8),使其值最小。
初始迭代時,令目標點云的初始位置為P0,剛體變換向量為m,迭代次數k=0。迭代執行步驟如下:
1) 尋找對應點集:計算點云集P的最近點集合為Q,Q=C(P,X),其中C為搜索最近點操縱;
2) 計算配準參數:按照粗對準算法計算兩個點云集之間的R、T;
3) 將配準參數作用到P0得到新的位置:Pk+1=qk(P0);
4) 若相鄰兩次迭代求得的誤差dk小于給定的閾值t,即dk-dk+1 最終通過目標點云與模型庫中模型點云的精配準得到目標點云的旋轉矩陣R與平移向量T,即目標物體的位姿。 為了加速精確配準中兩塊點云的對應點對匹配,本文采用Kd-tree[12]近鄰搜索算法進行加速。Kd-tree是對于高維數據中的快速最近臨查找算法,其本質是一種二分查找樹,被ZHANG等[13]第一次運用到ICP算法中。對于點云數據來說,Kd-tree中存儲的是三維數據,Kd-tree的建立過程就是對三維空間的一個劃分過程,實際運用中,建立過程如下: 1) 計算三個維度中各個維度上的數據方差,將最大方差的維度定義為劃分軸。 2) 在劃分軸上計算中值作為臨界值,將全部的三維空間分為兩份。同時創建一個結點,用于存儲劃分的維度與劃分值。 3) 將三維數據在劃分軸的維度上與臨界值進行對比,小于臨界值的數據歸為左子樹,大于臨界值的數據歸為右子樹。 4) 對左右兩棵子樹循環進行步驟1)到步驟3),直到全部的子集合都不能再劃分,并將該數據保存為葉子節點。 Kd-tree為點云數據建立了一個快速查找的拓撲結構,加速了點云的匹配點查找過程。 整個實驗主要分為兩步,第一步是基于圖像語義分割技術的目標物體分割,第二步是物體位姿的估計。因為第一步的圖像分割質量對位姿估計結果影響較大,所以首先對第一步的分割質量做了明確的評價。 實驗環境采用MXNet[14]平臺搭建網絡,MXNet是Amazon旗下的深度學習框架。實驗硬件配置如下:CPU為Intel(R)i5-8600K,GPU為GeForce GTX1070Ti,操作系統為Window10。 本次實驗采用PASCAL challenge[15]目標檢測評價體系中提出的評價標準IoU(intersection over union)。此標準是計算預測值與真值的交集和預測值與真值并集的比值。交并比的定義如下: (9) 其中:GT是真實的目標物體分割圖的像素區域;DR是預測的目標物體分割圖的像素區域,如圖4、圖5所示。 圖4 DR區 圖5 GT區 本文采用的數據集是自建數據集,其格式按照PASCAL VOC2012格式建立,其中涉及6種類別,分別為“motor”、“ruler”、“box”、“mouse”、“cola”和“ball”。原始數據集包括1 000張,其中400張用于訓練,600張用于模型測試。 在對目標網絡進行訓練時,模型訓練的超參數設置如下:基礎學習率為0.001,學習率的變化率為0.1,最大迭代次數為20 000,步長為3 000。 在Windows下目標檢測速度為0.978秒/張。算法結果在數據集上的IoU值最終為82.26%。目標檢測實驗結果如圖6所示。 從圖6可以看出,原來場景中5種物品全部被分割出來,并且以不同的顏色代表不同的物體,從而實現了物體識別的功能。把可樂作為目標物,將可樂提取出來,與深度圖配準,得到可樂的點云圖(圖7)。 圖6 目標檢測實驗結果 圖7 目標點云圖 將獲得的目標點云圖與模型庫中可樂模型運用基于ICP算法的點云匹配方法進行位姿計算,可以得到目標物體準確位姿。 為了評價最終位姿估計的精度,引入機械臂作為結果量化工具。具體操作方法是:通過算法計算出一組位姿數據,并且轉換到機器人坐標系下,同時人工操作機械臂到達實際物體的位姿位置,記錄下一組位姿數據(表1)。數據格式為x、y、z、α、β、γ,距離單位為mm,角度單位為(°)。 實驗結果分析,算法平均誤差為3.96mm、1.59mm、2.64mm、2.35°、1.7°、4.15°。通過以上數據可以看出位姿估計基本可以滿足機器人對于可樂、水杯類似物體的抓取,具有一定的應用性。 表1 8組算法與實際測量的誤差對比 本研究提出的基于語義分割的物體位姿估計算法得到了實驗驗證,實驗結果表明此方法可以實現復雜場景下目標物體的識別以及位姿估計,可以達到實際應用的要求,并為以后的研究提供了重要參考依據。 在下一階段,本研究將會把此算法應用到機械臂抓取的實驗中,將此算法與機械臂聯合使用完成目標物體識別抓取的工作。由于此算法并未達到100%的物體識別率,所以在高精度的應用場景中無法使用,因此在今后的研究中,可能需要進一步改進基于語義分割的物體識別方法,減少實驗誤差,以實現高精度作業。2 實驗結果與分析







3 結語