機器人抓取中物體定位算法概述

1. 引言

機器人抓取的首要任務,是確定要抓什麼,也就是需要定位目標物體在輸入數據中的位置。這個過程可以分爲三個層次,分別爲物體定位但不識別、物體檢測、物體實例分割。物體定位但不識別是指獲得目標物體的2D/3D範圍但是不知道物體的類別;目標檢測是指得到目標物體的2D/3D包圍盒,同時識別目標物體的類別;目標實例分割提供目標物體所佔有的像素或者點級別的區域信息,同時識別目標物體的類別。本文來自論文https://arxiv.org/abs/1905.06658,涉及的論文也都可以在論文中找到,也包含於https://github.com/GeorgeDu/vision-based-robotic-grasping,本文就不引用了。

2. 定位但不識別

當不知道目標物體的類別時,仍然可以採用一些方法獲得目標物體的2D/3D區域,進而支撐機器人抓取。當我們知道物體的外輪廓形狀時,可以採用擬合形狀基元的方法。當我們什麼信息都沒有時,可以採用顯著性物體檢測方法,獲得潛在可能的待抓取物體區域。

2.1 基於2D RGB圖像的方法

在這裏插入圖片描述
圖1 基於2D圖像的定位但不識別方法

a.擬合形狀基元: 目標物體的形狀可以是一個橢圓、一個多邊形或者一個四邊形,這些2D形狀可以看作是形狀基元,通過擬合方法,可以定位到目標物體。該方法的一般步驟爲先提取出圖像的所有封閉輪廓,其次再用擬合方法得到潛在的可能目標物體,如果存在多個候選,可以使用模板匹配去除干擾。在OpenCV中已經集成了例如擬合橢圓、擬合多邊形這樣的函數。

b.顯著性區域檢測: 和特定形狀基元相比,顯著性區域可以是任意形狀。2D顯著性區域檢測的目的是定位和分割出給定圖像中,最符合視覺顯著性的區域,這更像一個分割任務。非深度學習的方法主要挖掘低層次的特徵表示,或者依據一些經驗例如顏色對比、形狀先驗來得到顯著性區域。基於深度學習的方法主要包括基於多層感知機(MLP)的方法,基於全卷積網絡(FCN)的方法和基於膠囊網絡的方法。

在目前的機器人抓取任務中,該方法仍處在初級階段。在工業領域,如果待抓取物體形狀固定且輪廓清晰,可以採用擬合形狀基元的方法。在另外一些機器人抓取任務中,如果背景的顏色信息和目標物體的顏色信息差別較大,也可以去除背景得到目標物體。在Dex-Net2.0中,目標物體放置在綠色背景的桌面上,通過背景顏色分離,可以得到目標物體。

2.2 基於3D點雲的方法

在這裏插入圖片描述
圖2 基於3D點雲的定位但不識別方法

a.擬合3D形狀基元: 目標物體的形狀可以是一個球體、圓柱體或者長方體,這些3D形狀可以看作是3D形狀基元。存在很多方法能夠擬合,包括隨機採樣點一致(RANSAC)算法,基於霍夫投票(Hough Voting)的方法以及一些其他的聚類算法。針對機器人抓取任務,輸入數據是單個視角下不完整的點雲,目標是找到一部分點雲,使得這些點雲能夠組合成某一個3D形狀基元。一些方法針對輸入的點雲擬合平面並進行裝配組合;一些方法使用長方體擬合室內場景數據;一些方法通過霍夫變換提取點雲中的圓柱體,還有一些方法先把背景分割掉,然後對剩下的多個目標物體再擬合形狀。

b.3D顯著性區域檢測: 這類包括基元RGB-D數據的方法和基元3D點雲的方法。RGB-D顯著性檢測方法通過人工設計的或者基於深度學習的方法提取特徵並進行融合。基於3D點雲的方法主要是提取一個完整物體點雲的顯著性圖譜,而針對機器人抓取任務中是要從3D輸入中得到目標物體的3D點區域。一些方法首先去除背景3D點,之後依賴3D特徵如曲率等對顯著性進行評分,得到顯著性區域。

在目前的抓取任務中,該方法被廣泛使用,但仍處在初級階段。通常都在結構化的場景中,利用先驗去除背景包含點雲(可以利用高度信息,也可以將當前輸入和已有的背景3D模型配準去除背景),之後對於多個目標物體包含的點雲進行聚類或者擬合,得到目標物體包含的3D點雲。

3. 目標檢測

當我們知道要抓取的目標物體的類別時,可以使用2D/3D目標檢測以及實例分割算法,獲得目標物體的2D/3D包圍盒區域或者Mask區域。這裏先介紹物體檢測算法。目標物體檢測是指不僅要定位出目標物體的位置,還要識別出物體的類別,位置通常用2D/3D最小包圍盒表示。根據是否生成區域候選,目標檢測的方法可以分爲兩階段法(Two-stage Method)和單階段法(One-stage Method)。

3.1 2D目標檢測

在這裏插入圖片描述
圖3 基於2D圖像的目標檢測方法

a.兩階段法: 這類方法也稱爲基於區域候選(Region proposal-based)的方法。大多數傳統方法使用滑動窗口策略獲得候選包圍盒,然後使用包圍盒內的特徵描述進行識別。大量人工設計的2D描述符,例如SIFT, FAST, SURF, ORB等,常被使用來訓練分類器,例如使用神經網絡,SVM,Adaboost等。傳統方法的缺陷在於需要根據特定物體設定滑動窗口的大小,而且人工設計的特徵表徵能力不強,不足夠支撐一個很強的分類器。

隨着深度學習的發展,深度神經網絡能夠用於計算候選區域,而且能夠提取表徵能力更強的特徵描述符,訓練的分類器能力更強(R-CNN)。不僅如此,深度神經網絡基於候選區域學習到的特徵向量可以直接回歸物體的類別,比訓練分類器得到了更好的識別效果(Fast R-CNN)。Faster R-CNN進一步提出了候選區域生成網絡,允許端到端訓練整個目標檢測網絡。一般而言,兩階段法得到的精度相對較高,但是需要更多的計算資源和計算時間。

b.單階段法: 這類方法也稱爲基於迴歸(Region-based)的方法。這類方法跳過了候選區域生成步驟,直接在一次估計中預測包圍盒以及類別得分。YOLO是代表性單階段方法,劃分網格並同時預測多個包圍盒和類別概率。不過由於每個網格只回歸兩個包圍盒,算法不適合小物體。SSD能夠爲固定集合的錨點包圍盒(anchor boxes)預測類別得分和包圍盒偏移,比YOLO效果要好。YOLOv2也使用了錨點滑動窗口,效果比YOLO提升。RetinaNet提出了focal loss損失函數用於訓練,達到了和兩階段算法相當的精度但速度更快。YOLOv3基於YOLOv2進行了一些優化,達到了更好的效果。此外,存在不使用錨點的單階段方法,例如FCOS、CornerNet、ExtremetNet、CenterNet等,直接預測單個點處潛在物體的類別概率,以及距離完整包圍盒的相對位置。

3.2 3D目標檢測

2D目標檢測預測的包圍盒,能夠將物體在2D空間佔據的區域完全包含。而3D目標檢測旨在尋找到目標物體在3D空間中的完整(amodel)3D包圍盒,也即完整的3D物體的最小外接長方體。通常獲取的數據是單個視角下的RGB-D數據,通用的3D檢測算法都可以使用。但由於目前僅基於RGB進行3D檢測與基於3D點雲進行3D檢測的效果差別較大,本文主要面向機器人抓取領域,因此這裏只介紹基於點雲的3D檢測方法。
在這裏插入圖片描述
圖4 基於3D點雲的目標檢測方法

a.兩階段法: 這類方法也稱爲基於區域候選(Region proposal-based)的方法。傳統的3D檢測方法主要針對已知形狀的物體,3D檢測問題就轉化爲了物體的6D位姿估計問題。此時,可以尋找3D特徵點之間的對應,將已有物體和觀測數據進行配準,也可以進行基於RANSAC的對齊完成全局配準。然而這些方法要求觀測的實例和已有物體模型幾何結構一致,不適用於通用物體3D檢測。通用的3D檢測任務和2D檢測任務類似,也廣泛使用3D區域候選。傳統方法使用人工設計的3D特徵,例如Spin Images, 3D Shape Context, FPFH, CVFH, SHOT等,訓練諸如SVM之類的分類器完成3D檢測任務,代表方法爲Sliding Shapes。

隨着深度學習的發展,3D區域候選可以被有效地生成,而且3D包圍盒可以被直接回歸得到,而不必訓練分類器。生成3D區域候選的方法,大致可以分爲三類:基於截錐體(frustum-based)的方法,基於全局迴歸(global regression-based)的方法和基於局部迴歸(local regression-based)的方法。基於截錐體的方法是指使用成熟的2D目標檢測算法來獲取物體的3D候選區域,方法最爲直接。Frustum PointNets使用2D檢測器獲得物體的2D區域,對應3D空間是一個截錐體,對裏面的點雲基於PointeNet進行語義分割,再用MLP迴歸得到最終的3D包圍盒信息;FrustumConvNet對由2D區域得到的3D截錐體進一步劃分成多個3D候選區域。基於全局迴歸的方法根據基於單源或多源輸入學習到的特徵描述,直接回歸得到3D區域候選。Deep Sliding Shapes提出了第一個3D候選區域生成網絡,並且結合物體識別網絡來回歸3D包圍盒;MV3D融合多源信息預測3D候選;MMF進行多特徵多傳感器融合,完成3D檢測任務;PartA2使用encoder-decoder網絡,對輸入的點雲預測物體部位的相對位置,預測3D候選包圍盒。基於局部迴歸的方法是指產生逐點的3D區域候選。PointRCNN從輸入點雲中提取逐點的特徵向量,對分割得到每一個前景點,生成3D候選。這些候選經過池化以及正則優化得到最終結果。STD設計了球形錨點生成基於點的候選,並進一步生成稠密的候選包圍盒的特徵描述,預測最終的包圍盒。VoteNet提出深度霍夫投票策略,對採樣的每個3D種子點,生成對應的3D投票點,並進一步聚類得到候選包圍盒。IMVoteNet結合2D圖像,進一步提升了VoteNet的精度。

b.單階段法: 這類方法也稱爲基於迴歸(Region-based)的方法,通過單個網絡直接預測3D包圍盒及其類別概率,不需要生成候選3D包圍盒以及後處理。VoxelNet將輸入點雲劃分成3D voxels,並且將每個voxel內的點雲學習一個統一的特徵表示,再用卷積層和候選生成層得到最終的3D包圍盒。SECOND相比於VoxelNet,使用稀疏卷積層來劃分緊緻的體素特徵。PointPillars將點雲轉換成一個稀疏的僞圖像,再結合2D卷積網絡和檢測頭預測3D包圍盒。以上主要是基於體素的單階段3D檢測器,3DSSD是基於點雲的3D檢測器,使用了一種融合採樣策略,一個候選生成層和一個錨點無關的迴歸層,實現了精度和速度的平衡。

3D檢測能夠提供目標物體的大致位置,主要應用在無人車領域,但不足夠支撐複雜的抓取。目前的通用3D檢測只預測一個平面上的3D包圍盒的1個旋轉角度,範圍在0度-180度(原地旋轉180度,包圍盒位置朝向不變),假定物體結構複雜,例如帶柄水杯,只給一箇中心加旋轉角度是不知道如何去抓的。但是3D包圍盒能夠提供大致的物體抓取位置,而且能夠用於機械臂移動避障。

4. 物體實例分割

進行目標檢測只能得到矩形框區域,而一些任務需要只屬於目標物體的區域,這就需要進行實例分割。物體實例分割是指檢測到特定類別物體的逐像素或者逐點的實例,這項任務與目標檢測和語義分割極其相關。實例分割算法也分爲兩階段法和單階段法,兩階段法先生成區域候選,單階段法直接回歸。

4.1 2D實例分割

在這裏插入圖片描述
圖5 基於2D圖像的實例分割方法

a.兩階段法: 這類方法也稱爲基於區域候選(Region proposal-based)的方法。成熟的2D檢測器常被用來生成包圍盒或者區域候選,在他們內部可以進一步計算物體的mask區域。許多方法都基於CNN。SDS使用CNN來識別類別無關的區域候選;MNC通過三個網絡進行實例分割;PANet提出路徑增強網絡提升實例分割效果 ;Mask R-CNN通過增加額外的分支預測物體的mask擴展了Faster R-CNN;HTC對目標檢測結果和分割結果進行層疊式優化;PointRend通過迭代細分策略進一步增強了細節的分割效果。

b.單階段法: 這類方法也稱爲基於迴歸(Region-based)的方法,同時預測分割的mask和存在物體的得分。DeepMask, SharpMask和InstanceFCN爲位於中心的物體預測mask;FCIS進行實例級語義分割,能夠預測位置敏感的得分進行物體分割和檢測;TensorMask在空間域使用結構化的4D張量代表masks,能夠預測稠密的masks;YOLACT將實例分割分成兩個平行的子任務,即生成一些列原型masks並且預測每個實例mask的係數;YOLACT是第一個實時的單階段實例分割算法,後續有改進版YOLACT++;PolarMask利用極座標系,預測實例物體的中心和稠密距離,得到實例物體的輪廓;SOLO引入實例類別的概念,依據每個實例的位置和大小,賦予屬於實例物體的每個像素一個類別,將實例分割問題轉換成分類問題;CenterMask在目標檢測算法FCOS的基礎上增加了SAG-Mask分支;BlendMask也基於FCSO,使用了一個渲染模塊來預測位置敏感的特徵,並且學習每個實例物體的注意力圖。

2D實例分割在機器人抓取應用中被廣泛使用,如果場景中同一個類別的物體只有一個實例,語義分割也可以。由於輸入是RGB-D圖像,有了RGB分割結果,可以快速得到對應Depth圖像,得到目標物體的3D點雲。例如,SegICP使用基於RGB的2D目標分割算法獲得只屬於目標物體的點,再使用配準方法得到目標物體的6D位姿。很多方法也結合Depth輸入共同完成目標分割任務。

4.2 3D實例分割

在這裏插入圖片描述
圖6 基於3D點雲的實例分割方法

a.兩階段法: 這類方法也稱爲基於區域候選(Region proposal-based)的方法。一般的方法藉助2D/3D檢測結果,再對對應3D截錐體或者包圍盒區域進行前後景分割得到目標物體的點雲。GSPN提出通用形狀候選網絡生成3D物體的候選區域,進一步使用區域PointNet進行3D物體的實例分割;3D-SIS使用2D和3D融合特徵進行3D物體包圍盒檢測以及語義實例分割。

b.單階段法: 這類方法也稱爲基於迴歸(Region-based)的方法。很多方法學習如何歸類逐點的特徵來完成3D實例分割。SGPN提出了相似羣候選網絡來預測合併後的候選,並給每個候選一個對應的語義類別,也就完成了3D實例分割;MASC使用子空間稀疏卷積預測每個點的語義得分以及鄰近點在不同尺度下的緊密關係得分,基於此可以合併得到實例分割結果;ASIS學習具有語義的逐點級別的實例嵌入,之後屬於同一個實例的語義特徵再進行融合;JSIS3D提出了一個多任務的逐點的網絡結構,能夠同時預測3D點屬於的物體類別,並且將3D點嵌入爲更高維的特徵向量,進一步聚類得到物體實例;3D-BoNet能夠迴歸所有實例的3D包圍盒,同時預測每個實例的逐點的mask;LiDARSeg提出了一種稠密的特徵編碼框架以及有效的策略解決類別不平衡問題。

3D實例分割在機器人抓取應用中非常重要,如果場景中同一個類別的物體只有一個實例,語義分割也可以。當前常用的做法仍然是利用成熟的2D分割算法,對應到深度圖獲取3D點雲,但是在其分割效果不如直接在3D點雲上進行實例分割。隨着算法效果和性能的提升,3D實例分割會在未來廣泛使用。

5. 總結

給定機器人抓取場景,目前總能找到合適的技術方案來定位目標物體的位置,進而執行後續的物體位姿估計以及機器人抓取位姿估計等任務,但仍存在一些問題。定位但不識別的算法,要求物體在結構化的場景中或者物體與背景具有顯著性差異,這些都有益於算法提取出目標物體,這就限制了應用場景;實例級目標檢測算法,需要實例級目標物體的大量訓練集,而且訓練好的檢測算法只在訓練集上檢測精度高;如果需要對新物體進行檢測,需要再採集大量的數據進行重新訓練,這個過程非常耗時耗力;通用的目標檢測算法,泛化能力強,但其精度達不到實例級目標檢測算法。實例分割算法也面臨同樣的問題。對大量訓練數據集的需求以及泛化性能差,也是深度學習算法的通用性問題。不過針對限定場景下特定的一些物體,當前算法已經能夠得到非常好的滿足落地需求的結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章