天天看點

[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

轉載請注明作者和出處: http://blog.csdn.net/john_bh/

paper 位址:DeepIM: Deep Iterative Matching for 6D Pose Estimation

作者及團隊:清華大學 & NVIDIA & BNRist University of Washington

會議及時間:ECCV 2018

project: https://rse-lab.cs.washington.edu/projects/deepim/

code:https://github.com/liyi14/mx-DeepIM

code pytorch:https://github.com/NVlabs/DeepIM-PyTorch

文章目錄

    • 1. 主要貢獻
    • 2. DeepIM Framework
      • 2.1 High-resolution Zoom In
      • 2.2 Network Structure
      • 2.3 Untangled Transformation Representation
      • 2.4 Matching Loss
      • 2.5 Training and Testing
    • 3. Experiments
      • 3.1 Evaluation Metrics and Data
      • 3.2 Ablation study
      • 3.3 Experiments on the LINEMOD Dataset
      • 3.4 Experiments on the Occlusion LINEMOD Dataset
      • 3.5 Application to Unseen Objects and Unseen Categories
    • 4. Conclusion

1. 主要貢獻

雖然将圖像直接回歸到目标姿态的精度有限,但将目标的渲染圖像與輸入圖像進行比對可以産生準确的結果。是以作者提出DeepIM,一種6D pose matching 深度神經網絡。給定一個初始的姿态估計,DeepIM 能夠通過将rendered image 與 observed image 進行比對來疊代地改進姿态。解耦表示3D location 和3D orientation 疊代訓練,預測相對位姿的變換。

  • 提出了一個用于疊代的深度網絡,基于圖像的姿勢改進,不需要任何手工制作的圖像特征,自動學習内部改進機制;
  • 提出了對象姿勢之間SE(3)變換的解耦表示,以實作精确的姿态估計;這種表示也能夠對unseen object進行精确的姿态估計。
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
如Fig.1 展示了DeepIM網絡的疊代比對過程。給定測試圖像中對象的初始6D姿勢估計,DeepIM預測相對于對象的 rendered view 與observed image 比對的SE(3)變換。通過基于改進的姿勢估計疊代地重新渲染對象,到網絡的兩個輸入圖像變得越來越相似,進而使網絡能夠生成越來越精确的姿勢估計。

2. DeepIM Framework

DeepIM:給定觀測圖像和圖像中目标的初始姿态估計,網絡直接輸出相對SE(3)變換,可應用于初始姿态,以改進估計。

  1. 首先根據已知的初始化pose和CAD模型,渲染圖像;
  2. zooming in observed image和rendered image,用作網絡的輸入;
  3. 網絡輸出相對 SE(3)變換。

2.1 High-resolution Zoom In

當在圖像中的物體很小時,很難提取有用的feature進行 matching,為了得到更多的資訊,作者将 observed image 和 renderd image 進行放大,然後再入到網絡中。

具體做法:作者為observed image 和rendered image生成一個foreground mask,根據mask 擴大邊界框對四個圖像裁剪,然後放大并執行雙線性上采樣,以獲得與原始圖像相同的大小(實驗中是480 × 640)。這樣在這個操作過程中,對象的寬高比不會改變。

[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
已知 rendered mask m r e n d m_{rend} mrend​ 和 observed mask m o b s m_{obs} mobs​ ,crop patch :
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
  • u ∗ , d ∗ , l ∗ , r ∗ u_*, d_*, l_*, r_* u∗​,d∗​,l∗​,r∗​ 表示 upper,lower,left,right 前景mask邊界;
  • x c , y c x_c,y_c xc​,yc​ 表示物體在圖像中的2D projection 中心;
  • r r r 表示原始圖像的長寬比(寬/高);
  • λ \lambda λ 表示 expand ratio。

然後,對該patch進行雙線性采樣,采樣到原始圖像的大小,本文的原始圖像大小為480*640。通過這樣做,

不僅物體被放大而不被扭曲,而且網絡也提供了關于物體中心位置的資訊。

2.2 Network Structure

[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

如Fig.3 所示,DeepIM 網絡結構圖。

  1. 首先将rendered image , observed image 和兩個mask concatenated into 一個 8 通道 tensor 作為網絡的輸入((3 channels for observed/rendered image,1 channel for each mask);
  2. 使用flowNet 作為backbone network, 預測兩張圖像之間的 optical flow,(作者嘗試使用VGG16 作為backbone ,但是結果很差,直覺地确認與光流相關的表示法對位姿比對非常有用);
  3. 姿态估計分支以FlowNetSimple的11個卷積層後的feature map作為輸入。它包含兩個256維的全連接配接層,然後是另外兩個全連接配接層,分别用于預測三維旋轉和三維平移的四元數。
  4. 在訓練過程中,還增加了兩個輔助分支,以正則化網絡的特征表示,提高訓練的穩定性。一個分支用于預測rendered image和observed image之間的optical flow,另一個分支用于預測observed image中物體的foreground mask。

2.3 Untangled Transformation Representation

[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

△ p \triangle p △p 表示目前估計的pose 與目标pose 的 相對SE(3)變換的表示; R s r c , t s r c R_{src}, t_{src} Rsrc​,tsrc​ 表示目前pose; R t g t , t t g t R_{tgt}, t_{tgt} Rtgt​,ttgt​ 表示目标pose。

  1. 在 Naive Coordinate 坐标下,将目前pose 轉換到 目标pose:
    [6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

    其中

    R △ t s r c R \triangle t_{src} R△tsrc​

    表示旋轉不僅會使物體旋轉,而且還會使物體在圖像中平移,即使 旋轉向量

    t △ t_{\triangle} t△​

    為零

    。 t △ t_{\triangle} t△​ 是在三維空間的度量(例如米),圖中的對象的實際大小和圖中的移動距離是相關,是以,如果想把圖中的誤比對轉換成位移偏移,那麼就需要知道物體的實際大小,這樣的話訓練起來比較困難,而且沒法對沒見過的物體的進行預測。
    怎麼做呢? 解耦。分開預測 R , t R,t R,t, R R R 是不受縮放影響的,再想辦法讓 t t t 不受 R R R 影響
  2. 對于旋轉,将旋轉中心從錄影機的原點移動到錄影機架構中物體的中心,由目前的姿态估計給出。然後旋轉不會改變物體在相機架構中的平移。剩下的問題是如何選擇旋轉坐标系的坐标軸。一種方法是使用3D對象模型中指定的坐标系軸(圖4(b)中的模型坐标)。但是

    這種表示需要網絡記憶每個目标的坐标系,使得訓練更加困難,不能推廣到不可見目标的位姿比對。

  3. 相反,在計算相對旋轉時,使用與相機架構軸線平行的軸(圖4©中的相機坐标)。通過這樣做,

    可以訓練網絡獨立于三維物體模型的坐标系來估計相對旋轉

參考:
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
>
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

已知目标偏移 t t g t = ( x t g t , y t g t , z t g t ) t_{tgt}=(x_{tgt},y_{tgt},z_{tgt}) ttgt​=(xtgt​,ytgt​,ztgt​)和預測的偏移 t s r c = ( x s r c , y s r c , z s r c ) t_{src}=(x_{src},y_{src},z_{src}) tsrc​=(xsrc​,ysrc​,zsrc​),可以直接得到相對偏移 t △ = ( △ x , △ y , △ z ) = t t g t − t s r c t_{ \triangle}=(\triangle_x,\triangle_y,\triangle_z)= t_{tgt} - t_{src} t△​=(△x​,△y​,△z​)=ttgt​−tsrc​。 然而,

對于沒有深度資訊的二維圖像,網絡很難估計三維空間中的相對平移量。網絡需要識别物體的大小,并根據物體的大小将二維空間的平移映射到三維空間。這種表示不僅網絡難以學習,而且在處理未知物體或外觀相似但大小不同的物體時也存在問題。

不訓練網絡直接回歸到三維空間中的向量,而是回歸到二維圖像空間中的物體變化。

回歸相對平移 t △ = ( v x , v y , v z ) t_{ \triangle}= (v_x,v_y,v_z) t△​=(vx​,vy​,vz​) , v x , v y v_x,v_y vx​,vy​表示對象沿圖像x軸和y軸移動的像素數, v z v_z vz​為物體的尺度變化:

[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

其中 f x f_x fx​ 和 f y f_y fy​ 表示照相機的焦距。 v z v_z vz​定義為獨立于物體的絕對大小或距離,使用渲染物體和觀測物體的距離之比。對 v z v_z vz​使用對數,以確定值 0 對應于比例或距離沒有變化。考慮到 f x f_x fx​ 和 f y f_y fy​對于一個特定的資料集是常量,在訓練和測試網絡時簡單地将其固定為

  1. 旋轉不會影響位移,計算位移的時候就不用再考慮旋轉的影響了;
  2. 中間變量 v x , v y , v z v_x,v_y,v_z vx​,vy​,vz​ 的提出使在圖像空間上的表示變得簡單;
  3. 不需要物體的先驗知識,不用管實際的大小和坐标系。
DeepIM 隻需要學會變換,使渲染的圖像變得更接近觀察到的圖像。

2.4 Matching Loss

訓練姿态估計網絡的一個簡單方法是對旋轉和平移使用單獨的損失函數。例如,可以用兩個旋轉之間的角度距離來測量旋轉誤差,并使用L2距離來測量平移誤差。然而,使用兩種不同的損失函數來進行旋轉和平移會遇到平衡這兩種損失的困難。論文 “Geometric loss functions for camera pose regression with deep learning” (CVPR 2017)提出了一種幾何重投影誤差作為姿态回歸的損失函數,利用ground truth 位姿計算場景中三維點的二維投影與估計位姿之間的平均距離。作者考慮到想要在3D中準确預測物體的姿态,引入了[12]中幾何重投影損失的改進版本,稱之為點比對損失。ground truth pose: p = [ R ∣ t ] p=[R|t] p=[R∣t] ,estimated pose: p ^ = [ R ^ ∣ t ^ ] \hat p =[ \hat R | \hat t] p^​=[R^∣t^],點比對損失函數如下:

[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

其中: x i x_{i} xi​表示在物體模型上随機選擇一個3D點; n n n 表示點的個數,作者設定3000個。

point matching loss計算由ground truth位姿和estimated位姿變換的三維點之間的平均 L 1 L_1 L1​ 距離。通過這種方式,它衡量了轉換後的3D模型如何互相比對以進行姿态估計。

2.5 Training and Testing

  1. Train

    在訓練中,假設有3D對象模型和ground truth 姿勢。 通過将 noisy 添加到 ground truth 姿勢作為初始姿勢,可以生成所需的觀察并呈現給網絡以及姿勢目标輸出,這是ground truth姿勢和noisy姿勢之間的姿勢差異。 然後可以訓練網絡來預測初始姿勢和目标姿勢之間的相對變換。

  2. Test

    當訓練網絡在單個步驟中回歸相對姿态,訓練網絡的估計不會在多次疊代測試中得到改善。為了為類似于測試的訓練生成更真實的資料分布,作者也在訓練期間執行多次疊代

    。具體來說,對于每個訓練圖像和姿态,将網絡預測的變換應用到姿态上,并在下一次疊代中将變換後的姿态估計作為網絡的另一個訓練示例。通過多次重複該過程,訓練資料更好地代表了測試分布,經過訓練的網絡在疊代測試中也取得了明顯更好的結果。

3. Experiments

3.1 Evaluation Metrics and Data

  1. Data

    LINEMOD 和 Occlusion LINEMOD

  2. Metrics

    5◦, 5cm:an estimated pose to be correct if its rotation erroris within 5◦ and the translation error is below 5cm.旋轉誤差在5°以内,位移誤差在5cm之内,算作正确的

    6D Pose :the average distance between the 3D model points transformed using the estimated pose and the ground truth pose. 使用估計的pose和真實的poes計算3D點轉換的平均距離,對于對稱的物體,選最近的那一組,如果平均距離再3D模型直徑的10%以内,算正确

    2D Projection:computes the average distance of the 3D model points projected onto the image using the estimated pose and the ground truth pose.An estimated pose is correct if the average distance is smaller than 5 pixels.使用估計的pose和真實的pose計算3D模型點的2D投影平均距離,如果平均距離小于5個像素,則認為正确

3.2 Ablation study

  1. 不同疊代優化設定的消融實驗
    [6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
  2. 不同設計的消融實驗
    [6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
  3. 不同方法初始化pose 的消融實驗
    [6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

3.3 Experiments on the LINEMOD Dataset

[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

3.4 Experiments on the Occlusion LINEMOD Dataset

[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation
[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

3.5 Application to Unseen Objects and Unseen Categories

[6DoF Pose] DeepIM: Deep Iterative Matching for 6D Pose Estimation

4. Conclusion

在這項工作中,作者引入了DeepIM,一個新的架構疊代的姿态比對隻使用RGB圖像。給定目标的初始6D位姿估計,設計了

一種新的深度神經網絡

直接輸出相對位姿變換

,改進了位姿估計,網絡在訓練過程中自動學習比對目标的姿态。作者引入了

一個解耦的pose表示

,它也獨立于物體大小和三維物體模型的坐标系,這樣,網絡甚至可以比對不可見物體的姿态。

繼續閱讀