GG-CNN 論文導讀:用像素級生成取代候選抓取評分
Morrison, Corke & Leitner · 2018原文連結
論文資訊卡
- 作者:Douglas Morrison、Peter Corke、Jürgen Leitner
- 年份:2018
- 原文連結:Closing the Loop for Robotic Grasping: A Real-time, Generative Grasp Synthesis Approach
問題背景
在這篇論文發表之前,深度學習抓取偵測的主流做法大致是同一套流程:先從深度影像產生大量候選抓取姿態,再用一個 CNN 對每個候選逐一評分,最後選出分數最高的那個交給機械手臂執行。
這套流程有幾個現實問題。候選抓取的產生與逐一評分很花時間,論文中提到當時的方法單次推論要 0.5 到 13 秒不等,這個延遲讓系統幾乎只能做「拍一張照、算一次、抓一次」的開迴路(open-loop)操作——一旦物體在抓取過程中移動了位置,系統完全沒有機會修正,抓取結果高度依賴相機與機械手臂之間的校正精準度。對於倉儲揀貨、人機協作這類物體可能被碰到、推移的場景,開迴路抓取的脆弱性是個明顯的瓶頸。
方法核心
GG-CNN(Generative Grasping CNN)的做法是把問題重新定義:與其先生成候選再評分,不如讓網路直接針對深度影像的每一個像素,同時輸出三項資訊,合稱一張「抓取地圖」(Grasp Map):
- Q(Quality):這個像素作為抓取點的成功機率,範圍 0 到 1
- Φ(Angle):夾爪在這個像素應該旋轉的角度
- W(Width):夾爪在這個像素應該張開的寬度
因為角度存在 ±90° 附近的不連續性(夾爪旋轉 90 度後,物理上是同一個抓取姿態),作者不直接讓網路輸出角度值,而是輸出 sin(2Φ) 與 cos(2Φ) 兩個分量,推論時再用
Φ = 0.5 × atan2(sin(2Φ), cos(2Φ))
還原角度,避免訓練時角度在邊界附近跳變造成的學習困難。夾爪寬度 W 則以像素為單位預測(範圍約 0 到 150 pixel),最後再依據該點的深度值換算成實際的公尺距離。
網路架構:一個 62K 參數的 Encoder-Decoder
整個網路是全卷積網路(Fully Convolutional Network),完全不含全連接層,因此輸出解析度可以跟輸入一致(300×300 深度影像對應 300×300 的抓取地圖)。架構是標準的 encoder(下採樣)接 decoder(上採樣,用 transposed convolution 還原解析度):
| 層 | 類型 | Kernel | Filters | Stride |
|---|---|---|---|---|
| 1 | Conv2D | 9×9 | 32 | 3 |
| 2 | Conv2D | 5×5 | 16 | 2 |
| 3 | Conv2D | 3×3 | 8 | 2 |
| 4 | Transposed Conv2D | 3×3 | 8 | 2 |
| 5 | Transposed Conv2D | 3×3 | 16 | 2 |
| 6 | Transposed Conv2D | 9×9 | 32 | 3 |
| 輸出 | Conv2D(4 個獨立輸出頭) | — | Q、W、cos(2Φ)、sin(2Φ) 各 1 通道 | — |
三層卷積把 300×300 的輸入逐步下採樣壓縮,三層反卷積再對稱地把解析度還原回 300×300,最後一層輸出四張獨立的通道:Q、W、cos(2Φ)、sin(2Φ),其中角度的兩個分量在推論時再組合還原成 Φ。
整個模型只有 62,420 個參數,跟同期方法相比小了兩到三個數量級:
| 方法 | 參數量 |
|---|---|
| Lenz et al. | 約 6000 萬 |
| Redmon et al. | 約 6000 萬 |
| Dex-Net | 約 1800 萬 |
| GG-CNN | 62,420 |
模型這麼小,一部分是刻意的設計選擇:作者的目標是即時閉迴路推論,網路越小、推論延遲越低,才有辦法撐起後面要講的 50Hz 更新頻率。
訓練資料與標註轉換
訓練資料使用 Cornell Grasp Dataset:885 張 RGB-D 影像,共 5110 個正例、2909 個負例抓取標註。透過旋轉、隨機裁切、縮放做資料增強後,擴增到約 8840 張影像、5 萬 1 千多個抓取標註。
Cornell 資料集原始的標註方式是「矩形框」(一個矩形代表一個可行的抓取姿態),這種格式沒辦法直接拿來監督逐像素預測,作者因此把每張圖轉換成三張 ground truth 圖:矩形框覆蓋的區域在 Quality 圖上標為 1(其餘為 0);矩形框的方向轉換成對應的 sin(2Φ)、cos(2Φ);矩形框的寬度轉換成 0-150 像素範圍的 Width 圖。訓練時用 L2 loss,讓網路輸出直接逼近這三張 ground truth 圖。
推論與閉迴路控制流程
完整的抓取偵測流程是:
深度影像
→ 影像前處理
→ GG-CNN 推論(得到 Q、Φ、W 三張圖)
→ 對 Q 做高斯濾波
→ 找出濾波後 Q 的最大值位置 (u, v)
→ 讀出該位置的角度與寬度
→ 影像座標 → 機械手臂座標轉換
→ 執行抓取
高斯濾波只作用在 Quality 圖上,目的是去除雜訊與離群點,讓「最大值」的位置更穩定,避免因為單一像素的雜訊尖峰而選到一個實際上不穩定的抓取點。
由於單次 GG-CNN 推論只需要約 6 毫秒,加上前後處理的完整流程約 19 毫秒(換算約 50Hz 的處理上限),這個速度足以支撐閉迴路(closed-loop)操作:系統不是「拍一張照、算一次、抓一次」,而是持續以約 30Hz 的頻率重新拍照、重新推論、重新算出目標抓取姿態,並用位置視覺伺服(Position Based Visual Servoing, PBVS)驅動機械手臂。PBVS 的控制律本質上是一個比例控制器:
v = λ (T_target − T_gripper)
其中 T_target 是目前偵測到的目標抓取姿態、T_gripper 是夾爪目前的姿態,v 是輸出的速度指令,λ 是比例增益。因為偵測會持續重跑,T_target 會隨著物體移動或新的偵測結果即時更新,夾爪的速度指令也跟著連續修正,這就是「閉迴路」跟「開迴路」的關鍵差異——開迴路只算一次目標姿態就直接執行,中途不會再更新。夾爪實際要到達目標姿態,仍然需要透過逆向運動學求解對應的關節角度,這部分與本站 逆向運動學 的內容是銜接的。
實驗結果摘要
在靜態物體測試中,一般家用物品的抓取成功率為開迴路 92%、閉迴路 91%;刻意設計成難以抓取的對抗性物體(adversarial objects)則是 84% 與 81%。
更關鍵的是動態場景測試:實驗過程中人為推動物體(位移約 100 mm、旋轉約 25 度),閉迴路系統的成功率幾乎沒有下降(家用物品 88%、對抗性物體 83%),證明持續重新偵測確實能補償物體移動帶來的誤差。在多物體雜亂堆疊(clutter)場景下成功率為 87%;物體雜亂且持續移動的最嚴苛情境(dynamic clutter)下成功率 81%,仍高於當時其他方法在相同條件下的 77%。
論文還特別做了一組「刻意注入機械手臂控制誤差」的實驗:開迴路系統的成功率在誤差干擾下最低掉到 38%,閉迴路系統則維持在 68% 到 73% 之間。這組結果直接支持了論文的核心論點——閉迴路帶來的持續視覺回饋,能有效補償校正誤差與控制不精準的問題,這是開迴路系統結構性做不到的。
影響與局限
GG-CNN 證明了一個很輕量的全卷積網路,只要把問題從「候選評分」重新定義成「像素級生成」,就能在去除候選抓取取樣這個計算瓶頸的同時,達到即時(50Hz)的閉迴路抓取。這個思路後續影響了不少即時抓取偵測的研究方向,也是理解「抓取偵測如何跟即時控制系統整合」的一個很好的切入點——這正是本站 ROS 課程規劃中 MoveIt2 抓取與碰撞檢測支線會處理的整合問題。
論文本身也有清楚的局限:只使用深度影像,沒有利用顏色或語意資訊;只支援由上往下的平面抓取(top-down grasp),無法處理需要側面接近的抓取姿態;訓練資料集 Cornell Grasp Dataset 規模不大;不支援多指靈巧手的抓取型態;此外,當相機距離物體太近(論文中提到約 70 mm 以內)時,深度感測品質會明顯下降,系統必須在接近物體時停止更新抓取點,改為執行最後一次偵測到的抓取姿態。
相關論文推薦
- GGCNN2 論文導讀:用空洞卷積擴大感受野的即時抓取網路——GG-CNN 的架構改良版,解決感受野不足與反卷積棋盤格偽影兩個問題
- Dex-Net:同時期另一條走候選抓取評分路線的重要工作,可與 GG-CNN 的生成式路線對照閱讀
- 從 RT-1 到 RT-2:機器人+大型模型的發展脈絡