論文導讀:GraspNet-1Billion——雜亂場景、6 自由度、10 億筆抓取標註的通用抓取基準
Hao-Shu Fang, Chenxi Wang, Minghao Gou, Cewu Lu · 2020原文連結
一句話讀懂這篇論文
2D 抓取資料集只能描述「由上往下夾」,而且每張圖通常只有一個物體。真實的箱中揀選是一堆東西疊在一起,夾爪要從各種角度伸進去。GraspNet-1Billion 做了三件事:用真實相機拍雜亂場景、用物理公式自動算出每個物體上所有可行的 6 自由度抓取(總共超過 10 億個)、提供一套不依賴標註完整性的統一評分方式。順帶提出的基線網路(GraspNet-Baseline),後來成為 GSNet、AnyGrasp 的骨架。
論文資訊卡
- 標題:GraspNet-1Billion: A Large-Scale Benchmark for General Object Grasping
- 作者:Hao-Shu Fang(方浩樹)、Chenxi Wang、Minghao Gou、Cewu Lu(盧策吾,通訊作者)——上海交通大學
- 發表:CVPR 2020
- 網站:graspnet.net(資料集、graspnetAPI、基線程式碼 graspnet-baseline)
- 定位:6 自由度抓取最常用的評測基準。同一團隊之後的 GSNet(ICCV 2021)和 AnyGrasp(T-RO 2023)都建立在這個資料集與基線網路之上
問題背景:兩個阻礙
論文開頭點出抓取偵測當時遇到的兩個障礙:
1. 表示法與評估方式不統一
有的方法輸出 2D 矩形,用 IoU + 角度差評估;有的輸出 6D 姿態,各自用自己的指標。彼此無法直接比較,而用真實機器人評測又太花成本。
2. 高品質大規模訓練資料難取得
| 資料來源 | 問題 |
|---|---|
| 人工標註(Cornell 等) | 規模小、標註稀疏 |
| 真實機器人試抓(Pinto、Levine) | 每個場景只有一個抓取標籤,耗時且需要大量硬體 |
| 模擬環境(Dex-Net、Jacquard) | 規模大,但模擬與真實的視覺落差會降低實際表現 |
作者認為一個好的基準要同時做到三點:資料跟真實感測器看到的一致、有大規模而且稠密準確的抓取標註、能用統一方式評估不同表示法的抓取。他們的解法是兩邊各取所長:影像在真實世界拍,標註在模擬中用解析方式算。
資料集規模與組成
| 項目 | 數量 |
|---|---|
| 物體 | 88 個(32 個來自 YCB、13 個 Dex-Net 2.0 的對抗性物體、43 個自行蒐集),全部有高品質 3D 網格模型 |
| 場景 | 190 個雜亂場景,每個場景隨機擺約 10 個物體 |
| 影像 | 每個場景 512 張(256 個視角 × 2 台相機),共 97,280 張 RGB-D |
| 抓取姿態 | 每個場景 300 萬~900 萬個,總計超過 11 億個 |
跟其他資料集比較:
| 資料集 | 每場景抓取數 | 每場景物體數 | 標籤 | 6D 姿態 | 總抓取 | 總影像 | 來源 |
|---|---|---|---|---|---|---|---|
| Cornell | 8 | 1 | 矩形 | 否 | 8,019 | 1,035 | 1 台相機 |
| Pinto | 1 | – | 矩形 | 否 | 50K | 50K | 1 台相機 |
| Levine | 1 | – | 矩形 | 否 | 800K | 800K | 1 台相機 |
| Dex-Net 2.0 | 1 | 1 | 矩形 | 否 | 6.7M | 6.7M | 模擬 |
| Jacquard | 20 | 1 | 矩形 | 否 | 1.1M | 54K | 模擬 |
| VR-Grasping-101 | 100 | 1 | 6-DoF | 是 | 4.8M | 10K | 模擬 |
| GraspNet | 39M | 10 | 6-DoF | 是 | 1.2B | 97K | 2 台相機 |
每張影像附帶的標註:6D 物體姿態、6 自由度抓取姿態、矩形抓取姿態(給 2D 方法用)、實例遮罩、邊界框、相機姿態。因為每一幀都有相機姿態,多個視角的點雲可以直接融合。
資料蒐集
- 相機裝在機械手臂上,手臂沿著固定軌跡移動,覆蓋四分之一球面上的 256 個視角。用手臂是因為它能精準重複同一條軌跡,方便自動化
- 同時用兩台相機拍:Intel RealSense D435 和 Kinect 4 Azure。兩者的深度品質不同,方便測試演算法在不同感測器雜訊下的表現
- 相機外參不靠手臂的正向運動學(會有誤差),而是在 256 個拍攝點都對一個固定的 ArUco 標記拍照,算出相對於標記的相機姿態
標註流程
6D 物體姿態
97,280 張影像逐張標註太累。因為相機姿態已知,只需要標註每個場景的第一幀,其他幀用相機姿態推算:
是物體 在第 幀的姿態, 是第 幀的相機姿態。所有 6D 姿態都經過多位標註者反覆檢查與修正。物體遮罩和邊界框則是用 6D 姿態把網格投影回影像得到的。
抓取姿態:兩階段自動標註
抓取姿態分佈在一個連續的大空間裡,理論上有無限多個,人工標不完。因為物體都是已知的,可以用兩階段自動化流程:
第一階段:在每個物體上單獨標註
- 把網格模型降採樣,讓取樣點(稱為 grasp point)在體素空間中均勻分佈
- 每個 grasp point 在球面上均勻取 個接近方向(view)
- 每個方向再在「夾爪深度 × 平面內旋轉角 」的二維格點上搜尋候選
- 夾爪寬度依幾何決定,確保不會夾空也不會碰撞
- 用**力封閉(force-closure)**指標評分
力封閉的意思是:給定抓取姿態、物體和摩擦係數 ,判斷兩根手指能不能形成穩定的對握。摩擦係數越小,表示接觸面越滑、要求越嚴格。標註時把 從 1.0 開始以 0.1 為間隔往下降,直到這個抓取不再成立為止,記下最後還能成立的最小 。能在越小摩擦係數下成立的抓取越穩,所以分數定義為:
還成立的抓取得到 (最好);只在 成立的抓取得到 。因此分數只有 10 個等級。
第二階段:投影到場景
用標註好的 6D 物體姿態,把物體座標系下的抓取轉到世界座標系:
然後做碰撞檢測:用簡化的夾爪模型,檢查夾爪範圍內有沒有其他物體或背景的點,碰到的抓取就剔除。最終正負樣本比約 1:2。
整條流程的關鍵在於:影像是真的(沒有模擬落差),標註是算出來的(不需要人工,而且非常稠密)。
評測方式
資料切分
190 個場景中 100 個訓練、90 個測試。測試集再分三類各 30 個場景:
- Seen:物體在訓練集出現過
- Similar(Unseen but similar):沒看過,但跟訓練物體類似
- Novel:完全沒看過的新物體
為什麼不用矩形指標
矩形指標(角度差 < 30°、IoU > 0.25)有兩個問題:只能評估矩形表示法;而且因為標註不可能列舉所有正確抓取,門檻設得很寬鬆,可能高估表現——當時 Cornell 上已經有方法超過 99%。
線上評估
GraspNet 的做法是不預先計算測試集的標籤,而是對每個預測的抓取直接用力封閉指標當場計算:
- 檢查夾爪範圍內的點雲,判斷這個抓取是針對哪個物體
- 跟產生標註時一樣,用力封閉指標在不同摩擦係數 下判斷是否成功
- 碰撞檢測:夾爪不能撞到場景中的其他東西
這樣的評估不限定抓取的表示法,也不受標註完整性影響——只要預測的抓取在物理上成立,就算對。
指標:AP
雜亂場景中演算法通常會輸出很多個抓取,而實際執行時是挑排名前面的去做,所以排前面的抓取有多少是對的最重要。採用 Precision@k:
- :給定摩擦係數 , 從 1 到 50 的 Precision@k 平均
- AP: 從 0.2 到 1.0(間隔 0.2)的 平均
- 論文另外報告 (較寬鬆)和 (較嚴格)
為了避免分數被大量相似的抓取、或集中在單一物體上的抓取灌水,評估前會先做 pose-NMS。官方提供 graspnetAPI,可以載入資料、視覺化抓取,並用統一的 AP 指標評測。
作者也說明這個基準的定位:抓取問題可以拆成「預測所有可行的抓取姿態」(電腦視覺)和「針對特定機器人做運動規劃」(機器人學)。GraspNet 專注在前者,所以用簡化的夾爪模型和碰撞檢測;真實夾爪和手臂的碰撞、運動規劃應該在執行時處理。
基線網路:GraspNet-Baseline
抓取的表示法
兩指平行夾爪的抓取寫成:
是夾爪朝向, 是抓取中心, 是夾爪寬度。
直接讓網路學旋轉矩陣不直觀——旋轉矩陣有行列式為 1、反矩陣等於轉置等限制,很難學。所以借用 6D 姿態估計的做法,把朝向拆成視角分類 + 平面內旋轉。問題重新表述為:對物體表面的一個 grasp point,預測
- 接近向量 :夾爪從哪個方向伸過去
- 接近距離 :夾爪沿接近方向要伸多深
- 平面內旋轉 :夾爪繞接近軸轉幾度
- 夾爪寬度 :要張多開
整體架構
場景點雲(N × 3)
│
PointNet++ 骨幹(編碼 + 解碼)
│ 最遠點取樣 M = 1024 個點,每點 C 維特徵
▼
ApproachNet ──► 每點:可抓/不可抓 + V = 300 個方向的分數
│
Cylinder Grouping ──► 沿選定方向,在 4 種深度的圓柱內取點、轉到局部座標
│
┌────┴──────────┐
▼ ▼
OperationNet ToleranceNet
旋轉角/寬度/分數 抗擾動能力
│
碰撞檢測 → NMS → 依分數排序取前 50 個
PointNet++ 骨幹
點雲不像影像有規則的格子,不能直接做卷積。PointNet++ 的做法是:
- Set Abstraction(特徵萃取):用最遠點取樣(FPS)挑出代表點,再以半徑搜尋取鄰居,把「鄰居相對中心的 xyz 差值」加上特徵送進 MLP + max pooling,得到這一區的特徵。逐層擴大範圍
- Feature Propagation(特徵傳播):把稀疏點的特徵插值回較密的點
論文設定:四層 Set Abstraction,半徑 0.04、0.1、0.2、0.3 公尺,分組大小 64、32、16、16,點數依序降到 2048、1024、512、256;再用兩層 Feature Propagation 上採樣回 1024 個點、每點 256 維特徵。
ApproachNet:哪些點能抓、從哪個方向抓
- 輸入:1024 個點(座標 + 特徵)
- 輸出:每個點 個值——2 個值判斷可抓或不可抓, 個值是 300 個預先定義的接近方向各自的分數
可抓與否和方向是一起估的,因為有些方向會被遮擋,就算點本身可以抓,從那個方向也伸不進去。
標籤怎麼給:
- 不在物體上的點 → 負樣本
- 在物體上,且 5 mm 半徑內至少有一個可行的標註抓取 → 正樣本
- 在物體上但找不到參考標註 → 忽略,不參與訓練
每個正樣本點周圍取 個虛擬接近方向,對每個方向在球面上找 5° 以內的標註方向當參考,分數取該方向下抓取信心度的最大值。損失函數:
用二分類 softmax loss, 用 smooth L1。指示函數確保只在附近 5° 內有標註方向時才計算方向分數的損失。
Cylinder Region Transformation:把方向和實際點雲結合
ApproachNet 只給出一個抽象的方向,但要決定怎麼夾,還得看那個方向上實際有什麼形狀。這一步做的是:
- 接近距離比較不敏感,所以離散成 個區間:0.01、0.02、0.03、0.04 公尺
- 對每個深度,沿接近向量取一個圓柱,在圓柱內取固定數量的點
- 把這些點從世界座標轉到以 grasp point 為原點、接近向量為 z 軸的局部座標
轉換矩陣:
轉換後,不管原本在場景中的哪個位置、哪個方向,所有候選都有統一的表示,網路比較好學。
OperationNet:轉幾度、張多開、分數多少
- 輸入:每個(grasp point, 深度)組合的局部圓柱點雲特徵
- 輸出:每個(grasp point, 深度, 候選角度)組合的
- 抓取分數(這個組合抓起來有多好)
- 角度分類分數(是一個分類 logit,不是直接回歸角度)
- 夾爪寬度
平面內旋轉分成 12 個區間。因為夾爪是對稱的,只需要預測 0°~180°,每 15° 一格。旋轉角用分類而不是回歸,因為已有研究證明分類效果較好(消融實驗也證實了這點)。抓取信心度對應前面的 10 個分數等級。損失函數:
用 sigmoid cross entropy 做多類別二元分類。
候選數量大約是 1024 個點 × 4 種深度 × 12 種角度,非常稠密。
ToleranceNet 與 Grasp Affinity Fields:抓得穩不穩
可行的抓取有無限多個,人類會傾向挑就算位置稍微偏一點也還能成功的抓取。論文把這個直覺量化成 Grasp Affinity Fields(GAFs):
對每個標註抓取,在球面空間中搜尋鄰居,找出「偏移多遠以內,抓取分數仍然 > 0.5」的最大距離,當作這個抓取的抗擾動能力。
在官方 baseline 程式碼中,這個概念的實作大致是逐步放大搜尋半徑:取得半徑 內的其他標註點 → 讀取它們的摩擦係數 → 檢查摩擦係數夠低(抓得穩)的鄰居比例是否達到門檻 → 達到就記下這個半徑並繼續放大,否則停止,回傳目前的半徑當作 tolerance。
ToleranceNet 學習預測這個值:
訓練與推論
總損失:
超參數 。ApproachNet、OperationNet、ToleranceNet 分別是大小 (256, 302, 302)、(128, 128, 36)、(128, 64, 12) 的 MLP。
訓練:PyTorch,Adam,單張 RTX 2080;每個場景隨機取 2 萬個點;初始學習率 0.001,batch size 4,60 個 epoch 後降到 0.0001,100 個 epoch 後降到 0.00001。
推論時有一個重新排序的步驟:先依抓取分數把預測分到 10 個區間(因為標籤只有 10 個等級),同一個區間內再依 ToleranceNet 預測的抗擾動能力排序。最後的後處理是:碰撞檢測濾掉會撞到場景的候選 → NMS 濾掉太相似的重複姿態 → 依分數取前 50 個。
實驗結果一:標註真的對得上真實世界嗎
在物體上貼 ArUco 標記(只為了在這個實驗中方便取得 6D 姿態),挑 10 個物體,在 Flexiv Rizon 手臂 + RealSense D435 上執行不同分數的抓取,每種設定隨機選 100 個:
| 物體 | s=1 | s=0.5 | s=0.1 | 物體 | s=1 | s=0.5 | s=0.1 |
|---|---|---|---|---|---|---|---|
| 香蕉 | 98% | 67% | 21% | 蘋果 | 97% | 65% | 16% |
| 削皮刀 | 95% | 59% | 9% | 龍 | 96% | 60% | 9% |
| 馬克杯 | 96% | 62% | 12% | 駱駝 | 93% | 67% | 23% |
| 剪刀 | 89% | 61% | 5% | 電鑽 | 96% | 61% | 14% |
| 獅子 | 98% | 68% | 16% | 黑色滑鼠 | 98% | 64% | 13% |
高分抓取的真實成功率平均約 96%,低分抓取成功率很低。代表用力封閉解析算出的分數,跟真實世界的抓取結果是一致的。
實驗結果二:方法比較
結果格式為 RealSense / Kinect:
| 方法 | Seen AP | Seen AP₀.₈ | Seen AP₀.₄ | Similar AP | Similar AP₀.₈ | Similar AP₀.₄ | Novel AP | Novel AP₀.₈ | Novel AP₀.₄ |
|---|---|---|---|---|---|---|---|---|---|
| GG-CNN | 15.48/16.89 | 21.84/22.47 | 10.25/11.23 | 13.26/15.05 | 18.37/19.76 | 4.62/6.19 | 5.52/7.38 | 5.93/8.78 | 1.86/1.32 |
| Chu et al. | 15.97/17.59 | 23.66/24.67 | 10.80/12.74 | 15.41/17.36 | 20.21/21.64 | 7.06/8.86 | 7.64/8.04 | 8.69/9.34 | 2.52/1.76 |
| GPD | 22.87/24.38 | 28.53/30.16 | 12.84/13.46 | 21.33/23.18 | 27.83/28.64 | 9.64/11.32 | 8.24/9.58 | 8.89/10.14 | 2.67/3.16 |
| PointNetGPD | 25.96/27.59 | 33.01/34.21 | 15.37/17.83 | 22.68/24.38 | 29.15/30.84 | 10.76/12.83 | 9.23/10.66 | 9.89/11.24 | 2.74/3.21 |
| 本文 | 27.56/29.88 | 33.43/36.19 | 16.95/19.31 | 26.11/27.84 | 34.18/33.19 | 14.23/16.62 | 10.55/11.51 | 11.25/12.92 | 3.98/3.56 |
- 矩形方法(GG-CNN、Chu)在所有指標上都最低。在 Cornell 上動輒 90% 以上的方法,到了雜亂場景 + 力封閉評估只剩 15 左右——矩形指標可能高估了這些方法
- 點雲候選方法(GPD、PointNetGPD)比矩形方法好,但本文的端到端網路在所有切分上都更好
- Novel 物體上所有方法都大幅下降,這個問題留給了之後的 GSNet、AnyGrasp
消融實驗
在 Kinect 的 Seen 測試集上:
| 設定 | AP | AP₀.₈ | AP₀.₄ |
|---|---|---|---|
| 完整模型 | 29.88 | 36.19 | 19.31 |
| 分類改成直接回歸 | 23.74 | 33.28 | 12.15 |
| 拿掉 ToleranceNet | 28.53 | 35.62 | 16.33 |
- 把「視角分類 + 旋轉分類」改成直接回歸接近方向和旋轉角度,AP 掉了 6 個百分點,嚴格指標 AP₀.₄ 掉更多
- 拿掉 ToleranceNet,AP₀.₄ 從 19.31 掉到 16.33——抗擾動排序主要幫助的是嚴格條件下的穩定抓取
影響與定位
GraspNet-1Billion 對抓取領域的影響主要有三點:
- 讓 6 自由度抓取有了共同的比較基準。之後幾乎所有點雲抓取方法都在這個資料集上報告 Seen / Similar / Novel 三種 AP
- 「真實影像 + 解析標註」的資料生產方式,同時避開了人工標註的規模限制和模擬資料的視覺落差
- 基線網路的模組拆法(骨幹 → 找可抓點與方向 → 圓柱分組 → 預測操作參數)被後續研究沿用。GSNet 在前面加了「graspness」來更聰明地挑點;AnyGrasp 再加上時序追蹤和重心感知
限制方面:資料集的 88 個物體規模不算大,Novel 測試集上的表現說明泛化到全新物體仍然困難;評估用的是簡化夾爪模型,沒有考慮手臂本身的可達性與碰撞。
相關論文推薦
- 論文導讀:GSNet——先找出「哪裡值得抓」,雜亂場景的快速精準抓取偵測——同一團隊的下一步,改進 ApproachNet 前的取點方式
- 論文導讀:AnyGrasp——把稠密 6 自由度抓取生成與時序追蹤合而為一——以 GSNet 為基礎加上動態追蹤
- 論文導讀:Contact-GraspNet——把 6 自由度抓取降維成 4 自由度來學——另一條 6 自由度抓取路線
- 論文導讀:Jacquard——用物理模擬自動生成百萬筆抓取標註的大型資料集——2D 抓取的代表性資料集
參考資料
- Fang, H.-S., Wang, C., Gou, M., & Lu, C. (2020). GraspNet-1Billion: A Large-Scale Benchmark for General Object Grasping. CVPR 2020, pp. 11444–11453.
- 官方網站與 API:graspnet.net
- 基線程式碼:github.com/graspnet/graspnet-baseline
相關術語
訂閱 RoboTech Lab 電子報
每週一封,整理新的教學、論文導讀與機器人業界動態。隨時可以取消訂閱。