[Paper Reading] Reconstructing Hands in 3D with Transformers

fariver發表於2024-08-20

名稱

Reconstructing Hands in 3D with Transformers
時間:CVPR2024
機構:UC Berkeley, University of Michigan, New York University

TL;DR

本文提出一種使用Transformer來做Hand Tracking的演算法名為HaMeR(Hand Mesh Recorvery),優勢是大資料規模(利用多資料集的2D/3D標籤),大模型(大Size的純Transformer模型架構)。

Method


演算法架構方面亮點是使用了純Transformer架構(Backbone使用VIT,Head使用Transformer Decoder),不過是單目的演算法。
模型
Head:預測Mano引數、3D關鍵點、2D關鍵點、相機引數(用來將3D投影至2D)
Loss:除了監督上述輸出的L1/L2 Loss之外,還有一個adversarial Loss,用來判斷生成的MANO引數是否是unnature的。
資料
建立HInt資料集,從Hands23、Epic-Kitchens以及Ego4D三個資料集挑選部分資料,並經過人工篩選,最終獲取40.4K樣本。

Code

Code Link

分析一下hamer.py,Q1:模型Backbone是什麼?Q2:transformer decoder head的模型架構是如何設計的?Q3:模型Loss是什麼設計的?Q4:模型輸出的shape是什麼? FromKimiChat 基於提供的 hamer.py 檔案內容,以下是對您問題的回答:

Q1: 模型是如何預測MANO引數的?

模型使用一個Transformer解碼器頭(MANOTransformerDecoderHead)來預測MANO引數。
輸入影像透過骨幹網路(如Vision Transformer, ViT)提取特徵,然後這些特徵被送入Transformer解碼器。
Transformer解碼器利用交叉注意力機制來整合影像特徵和上下文資訊,生成MANO引數。
預測的MANO引數包括手部姿態(hand_pose)、形狀引數(betas)和全域性方向(global_orient)。
透過迭代細化過程(IEF_ITERS)來逐步最佳化引數預測。
Q2: Transformer Decoder Head的模型架構是如何設計的?

Transformer解碼器頭由多個層組成,每層包括自注意力和交叉注意力機制。
輸入特徵首先被轉換為一系列的token,然後送入Transformer解碼器。
每個Transformer層後跟一個線性層(解碼器),用於將特徵對映到MANO引數空間。
位置編碼被新增到token中,以提供序列中的位置資訊。
迭代預測允許模型在多個階段細化其預測。
Q3: 模型Loss是什麼設計的?

模型使用多種損失函式來訓練網路,包括:
關鍵點2D損失(Keypoint2DLoss):計算預測的2D關鍵點與真實標註之間的差異。
關鍵點3D損失(Keypoint3DLoss):計算預測的3D關鍵點與真實標註之間的差異。
MANO引數損失(ParameterLoss):計算預測的MANO引數與真實引數之間的差異。
所有這些損失被加權求和,形成總損失,用於模型的反向傳播和最佳化。
Q4: 模型輸出的shape是什麼?

模型輸出包括:
預測的2D關鍵點(pred_keypoints_2d):形狀可能是[batch_size, num_keypoints, 2]。
預測的3D關鍵點(pred_keypoints_3d):形狀可能是[batch_size, num_keypoints, 3]。
MANO引數,包括:
global_orient:全域性方向,形狀可能是[batch_size, num_joints, 3]。
hand_pose:手部姿態,形狀可能是[batch_size, num_joints * 3]。
betas:形狀引數,形狀可能是[batch_size, num_betas]。
攝像機平移(pred_cam_t):形狀可能是[batch_size, 3]。
Q5: 頂點是直接預測出來的,還是透過預測出MANO引數FK出來的?

頂點不是直接預測出來的。模型預測MANO引數,然後使用這些引數作為輸入來生成3D人體網格。
MANO模型根據提供的引數,包括姿態、形狀和全域性方向,透過正向運動學(FK)計算出網格的頂點。
Q6: 攝像機平移引數有什麼用處?

攝像機平移引數(pred_cam_t)是用於3D到2D投影的關鍵引數,它們定義了虛擬攝像機的位置和視角。
這些引數對於將3D人體網格準確地投影到2D影像平面上至關重要,使得預測的3D姿態能夠與輸入影像中的實際人體姿態對齊。
它們通常與攝像機的旋轉和縮放引數一起工作,以實現精確的視角和尺寸匹配。
以上資訊是基於提供的 hamer.py 檔案內容進行的分析。如果需要更詳細的解釋或有其他檔案提供了額外的上下文,可能需要進一步的分析。

Experiment

兩個經典測試集上的效果表現

Ablation

總結與發散

亮點是使用純Transformer
使用adversarial Loss是創新點之一,文章沒有做ablation應該提升不大

相關連結

資料查詢

摺疊Title FromChatGPT(提示詞:XXX)

相關文章