GG-CNN 論文導讀:用像素級生成取代候選抓取評分

Morrison, Corke & Leitner · 2018原文連結

論文資訊卡

問題背景

在這篇論文發表之前,深度學習抓取偵測的主流做法大致是同一套流程:先從深度影像產生大量候選抓取姿態,再用一個 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Φ) 兩個分量,推論時再用

text
Φ = 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 還原解析度):

類型KernelFiltersStride
1Conv2D9×9323
2Conv2D5×5162
3Conv2D3×382
4Transposed Conv2D3×382
5Transposed Conv2D3×3162
6Transposed Conv2D9×9323
輸出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-CNN62,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 圖。

推論與閉迴路控制流程

完整的抓取偵測流程是:

text
深度影像
  → 影像前處理
  → GG-CNN 推論(得到 Q、Φ、W 三張圖)
  → 對 Q 做高斯濾波
  → 找出濾波後 Q 的最大值位置 (u, v)
  → 讀出該位置的角度與寬度
  → 影像座標 → 機械手臂座標轉換
  → 執行抓取

高斯濾波只作用在 Quality 圖上,目的是去除雜訊與離群點,讓「最大值」的位置更穩定,避免因為單一像素的雜訊尖峰而選到一個實際上不穩定的抓取點。

由於單次 GG-CNN 推論只需要約 6 毫秒,加上前後處理的完整流程約 19 毫秒(換算約 50Hz 的處理上限),這個速度足以支撐閉迴路(closed-loop)操作:系統不是「拍一張照、算一次、抓一次」,而是持續以約 30Hz 的頻率重新拍照、重新推論、重新算出目標抓取姿態,並用位置視覺伺服(Position Based Visual Servoing, PBVS)驅動機械手臂。PBVS 的控制律本質上是一個比例控制器:

text
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 以內)時,深度感測品質會明顯下降,系統必須在接近物體時停止更新抓取點,改為執行最後一次偵測到的抓取姿態。

相關論文推薦