單張圖像重建3D人手、人臉和人體
1. 論文簡要
為了便於分析人類的行為、互動和情緒,本文從單目圖像中計算出人體姿態、手姿態和面部表情的三維模型。為了實現這一點,本文使用數千個3D掃描來訓練統一的人體3D模型,SMPL-X,它通過完全鉸接的手和富有表情的臉來擴展SMPL。沒有成對圖像和標簽,直接回歸SMPL-X的參數是非常具有挑戰性。因此,本文采用SMPLify方法,估計二維特征,然后優化模型參數來擬合特征。本文在以下幾個重要方面對SMPLify進行了改進:
-
檢測與臉、手和腳對應的2D特征,並將完整的SMPL-X模型與這些特征進行匹配;
-
使用一個大的動作捕捉數據集訓練神經網絡先驗姿態;
-
定義了一種既快速又准確的滲透懲罰方法
-
自動檢測性別和合適的身體模型(男性、女性或中性)
-
采用PyTorch實現實現了超過8倍的加速
本文使用新的方法SMPLify-X,使SMPL-X既適合於受控圖像,也適合於自然圖像,並且一個新的包含100張偽真實標簽的圖像數據集上評估3D精度。這是邁向從單目RGB數據自動表達人類動作捕獲的重要一步。
論文和代碼:https://smpl-x.is.tue.mpg.de
2. 背景介紹
人類通常是圖片和視頻的中心元素。理解他們的姿勢,以及他們與世界的互動對整體場景理解至關重要。目前大多數的工作主要在2D上對人體姿態,人手關鍵點以及人臉進行研究,由於真實的場景是以3D為基礎的,並且缺乏3D模型和豐富的3D數據,因此捕捉人體,人手和人臉的3D表面異常困難。為了解決這一問題,第一,需要構建能夠自由表達整個人體的模型,第二,需要能夠從單張圖片中提取這樣的模型。
為此本文從從一個大型的三維掃描體中學習新的身體、臉和手模型。新的SMPL- X模型是基於SMPL的,並保留了該模型的優點:與圖形軟件兼容、簡單的參數化、小尺寸、高效、可區分等。本文將SMPL與FLAME模型和MANO人手模型結合起來,然后將這個組合模型得到5586個3D掃描。通過從數據中學習模型,本文捕獲了身體、臉和手的形狀之間的自然關聯。模型的表達能力可以在下圖中看到,其中本文將SMPL-X擬合到表達性RGB圖像中。SMPL-X免費用於研究用途。
目前有一些方法通過深度學習的方法從單張圖片中回歸出SMPL的參數,但是要估計帶有人手和人臉的3D人體缺乏有效的訓練數據。為了解決這一問題,首先,本文使用OpenPose ”自下而上“ 的估計身體、手、腳和臉的二維圖像特征,然后使用SMPLify-X方法將SMPL-X模型 “自頂向下” 地匹配到這些2D特性。然后,本文對SMPLify做了幾項重大改進。具體來說,本文使用VAE變分自動編碼器從大數據集的運動捕捉數據中學習一種新的、性能更好的姿態先驗。這個先驗是至關重要的,因為從2D特征到3D姿態的映射是不明確的。其次,本文還定義了一個新的(自)滲透懲罰項,它明顯比SMPLify中的近似方法更精確和有效;它仍然是可微的。本文訓練了一個性別檢測器,用它來自動決定使用男性、女性或中性的身體模型。最后,采用直接回歸方法來估計SMPL參數的一個動機是SMPLify比較慢。這里本文用PyTorch實現來解決這個問題,通過多塊gpu的計算能力,PyTorch實現比相應的Chumpy實現至少快8倍。
3. 相關研究
3.1 人體建模
身體,人臉和人手:3D身體建模的問題以前通過將身體分解成多個部分和分別建模來解決。本文關注的方法是從3D掃描中學習統計形狀模型。由於3D人體掃描儀的存在,人們可以通過掃描來了解身體的形狀,豐富的形狀和姿態空間參數人手模型MANO也是采用的該方法。
統一模型:最相似的模型是Frank和SMPL+H。Frank將三種不同的模型整合到一起在一起:SMPL(無姿態混合形狀)的身體,一個藝術家創建的手,和FaceWarehouse模型的臉。最終的模型並不完全真實。SMPL+H從3D掃描學習結合了SMPL身體與3D手模型。手部的形狀變化來自全身掃描,而姿態依賴的變形則來自手部掃描的數據集。SMPL+H不包含可變形的人臉。
本文從公開的SMPL+H開始,並將公開的FLAME模型添加到其中。然而,與Frank不同的是,本文不是簡單地把它移植到身體上。相反,本文采取完整的模型和擬合5586個3D掃描,並且學習形狀和依賴姿勢的混合形狀。這將產生一個具有一致參數化的自然外觀的模型。基於SMPL,它是可區分的並且很容易切換到已經使用SMPL的應用程序中。
3.2 人體結構推理
有很多方法可以從圖像或RGB-D估計3D人臉,也有很多方法可以從這些數據估計手部。雖然有許多方法從單個圖像估計三維關節的位置,這里本文關注的方法是提取一個完整的三維身體網格(mesh)。
4. 本文方法
下面介紹SMPL-X模型,以及SMPL-X模型擬合單張RGB圖像的方法。相較於SMPLify模型,SMPLify模型運用了更好的先驗姿態信息,更為詳細的碰撞懲罰項,性別判斷以及Pytorch的工程加速方法。
4.1 統一模型SMPL-X
本文創建統一的模型SMPL- X,同時對面部、手部和身體的形狀參數進行聯合訓練。SMPL-X使用標准的基於頂點的線性混合蒙皮來學習糾正混合形狀,頂點 \(N=10475\) , 關節點 \(K=54\) 包含包括脖子、下巴、眼球和手指的關節。SMPL-X定義為 \(M(\theta,\beta,\psi):\mathbb{R}^{|\theta| \times|\beta| \times|\psi|} \rightarrow \mathbb{R}^{3 N}\) , 姿態參數 \(\theta\in \mathbb{R}^{3(K+1)}\) , 其中 \(K\) 是除全局旋轉的關鍵點的數量。將姿態參數 \(\theta\) 分解為 \(\theta_f\) 下巴關鍵點,\(\theta_h\) 指關節,\(\theta_b\) 為身體關鍵點。身體,人臉和人手的形態參數為 \(\beta\in{\mathbb{R}^{|\psi|}}\) 。更具體的表達是:
其中 \(B_S(\beta;\mathcal{S})=\sum_{n=1}^{|\beta|}\beta_n\mathcal{S}_n\) 是形狀混合函數,\(\beta\) 是線性形狀系數,\(|\beta|\) 為值,\(\mathcal{S}_n\in\mathbb{R}^{3N}\) 是由於不同的人捕捉到的形狀變化頂點位移的標准正交主成分量,\(\mathcal{S}=\left[S_{1}, \ldots, S_{|\beta|}\right] \in \mathbb{R}^{3 N \times|\beta|}\) 是所有偏移量的矩陣形式。\(B_{P}(\theta ; \mathcal{P}): \mathbb{R}^{|\theta|} \rightarrow \mathbb{R}^{3 N}\) 為姿態混合形狀函數,該函數添加校正頂點位移到模板mesh \(\bar{T}\) :
其中 \(R: \mathbb{R}^{|\theta|}\rightarrow \mathbb{R}^{9K}\) 是將位姿向量 \(\theta\) 映射到由部分相對旋轉矩陣組成的向量的函數,這一過程使用Rodrigues公式來計算,\(R_n(\theta)\) 為 \(R(\theta)\) 的 \(n^{th}\) 元素,\(\theta^{*}\) 為剩余姿態向量,$ \mathcal{P}_{n}\in \mathbb{R}^{3N}$ 為頂點位移的標准正交主成分量,\(\mathcal{P}=[P_1,...,P_{9K}]\in \mathbb{R}^{3N\times 9K}\) 為姿態混合形狀的矩陣。\(B_{E}(\psi ; \mathcal{E})=\sum_{n=1}^{|\psi|} \psi_{n} \mathcal{E}\) 混合形狀函數,其中 \(\mathcal{E}\) 為由於面部表情捕捉變化的主分量和 \(ψ\) 是主成分系數。由於三維關節位置 \(J\) 在不同形狀的身體之間是不同的,因此是身體形狀的函數 \(J(\beta)=\mathcal{J}\left(\bar{T}+B_{S}(\beta ; \mathcal{S})\right)\) ,其中 \(\mathcal{J}\) 為一個稀疏線性回歸器,從網格頂點回歸三維關節位置。一個標准的線性混合蒙皮函數 \(W(.)\), 將 \(T_p(.)\) 中的頂點圍繞估計關鍵點 \(J(\beta)\) 旋轉。
本文從設計好的3D模板開始,其臉和手匹配FLAME和MANO的模板。本文將該模板擬合到4個三維人體掃描數據集上,得到作為SMPL-X的三維對准訓練數據。形狀空間參數 \(\{S\}\) 是在3800個A姿態校准上訓練的,捕捉不同身份的變化。對1786種不同姿態的姿態對准進行身體姿態空間參數 \({W,P,J}\) 的訓練。由於全身掃描的手和臉的分辨率有限,本文利用MANO和FLAME的參數分別從1500只手和3800個頭部高分辨率掃描學習。更具體地說,本文利用了姿勢空間,姿態修正混疊形狀的MANO人手模型以及表達空間\(\mathcal{E}\) 的FLAME模型。
手指有30個關節,對應90個姿態參數(每個關節軸角旋轉3個自由度)。SMPL-X為手使用了一個較低維的PCA姿態空間:\(\theta_{h}=\sum_{n=1}^{\left|m_{h}\right|} m_{h_{n}} \mathcal{M}\) ,其中 \(\mathcal{M}\) 是捕捉手指姿態變化的主成分量和 \(m_h\) 是對應的主成分分析系數。如上所述,本文利用MANO的主成分位姿空間,即在一個大的訓練上三維關節人的手數據集。SMPL-X中的模型參數為1119: 75用於全局體旋轉和身體,眼睛,下巴的關節,24個參數為較低維的手部姿勢PCA空間,10個參數用於主體形狀,10個參數用於面部表情。此外,還有單獨的男性和女性模型,當性別已知時使用,當性別未知時使用兩種性別構建的形狀空間。SMPL-X具有現實性、表現力、可微分性和易於適應數據的特點。
4.2 擬合SMPL-X到單張圖片(SMPLify)
為了使SMPL-X適合單個RGB圖像(SMPLify- x),本文遵循SMPLify,但改進了它的各個方面。將SMPL-X擬合到圖像作為一個優化問題,尋求目標函數的最小值:
其中 \(\theta_b\) , \(\theta_f\) 和 \(m_h\) 分別為身體,人臉和雙手的姿態向量,\(\theta\) 是可優化的位姿參數的完整集合。身體姿態參數可以表示為 \(\theta_b(Z)\) ,其中 \(Z\in \mathbb{R}^{32}\) 低維空間構成。EJ(β,θ,K, Jest)為數據項,其中 \(E_{J}\left(\beta, \theta, K, J_{e s t}\right)\) 為數據項,\(E_{m_{h}}\left(m_{h}\right), E_{\theta_{f}}\left(\theta_{f}\right), E_{\beta}(\beta)\) 和 \(E_{\mathcal{E}}(\psi)\) 對手姿、面部姿、體型和面部表情的 \(L_2\)先驗,對偏離中性狀態者進行懲罰。由於SMPL-X的形狀空間是根據單位方差進行縮放的,\(E_{\beta}(\beta)= ||\beta||^2\) 描述了SMPL-X訓練數據集中被優化的形狀參數與形狀分布之間的馬氏距離( Mahalanobis distance)。一種簡單的優先懲罰方式為: \(E_{\alpha}\left(\theta_{b}\right)=\sum_{i \in(\text {elbows,knees})} \exp \left(\theta_{i}\right)\) ,只適用於肘部和膝蓋的極端彎曲。
對於數據項,使用重投影損失來最小化估計的2D關節點 \(J_{est}\) 和SMPL-X每個3D關鍵點 \(R_{\theta}(J(\beta))_i\) 的2D投影的加權魯棒距離,其中 \(R_θ(·)\) 是沿着運動學變換關節的函數。數據項的表達式為:
其中 \(\Pi_{K}\) 表示具有固有攝像機參數 \(K\) 的3D到2D投影,OpenPose提供在同一圖像上的身體、手、臉和腳的關鍵點。為了考慮檢測中的噪聲,每個節點在數據項中的貢獻由檢測置信度評分 $ \omega_{i}$ 加權,\(\gamma_{i}\) 為退火優化的每個節點的權重,\(\rho\) 表示用於降低加權噪聲檢測的魯棒吉曼-麥克盧爾誤差函數( Geman-McClure)。
4.3 人體姿態先驗
本文尋求一個先驗身體姿勢,懲罰不可能的姿勢。SMPLify使用一種近似負對數的高斯混合模型訓練的MoCap數據。雖然SMPLify先驗是有效的,但我們發現SMPLify先驗不夠強。因此,使用變分自動編碼器來訓練身體姿態先驗VPoser,它學習了人體姿態的潛在表示,並將潛在信息的分布正則化為正態分布。
上述公式(4)中 \(Z\in \mathbb{R}^{32}\) 是自編碼網絡的隱藏空間,\(R\in SO(3)\) 為每個關節 \(3\times 3\) 旋轉矩陣作為網絡輸入和\(\hat{R}\) 代表的輸出是一個形狀相似矩陣。公式(4)中第二項為KL散度項,第三項為重建項,第四項和第五項引導潛在空間編碼有效旋轉矩陣。最后一項通過控制較小的網絡權值 \(φ\) 防止過擬合。
4.4 碰撞懲罰
當將模型擬合到觀測值時,常常有人體若干部位的自碰撞和穿透對於身體結構來說是不可能的。受到
SMPLify啟發,用基於形狀基元的碰撞模型來懲罰穿透。雖然這個模型計算效率很高,但它只是對人體的粗略近似。對於SMPL-X這樣的模型,它也能模擬手指和面部細節,需要更精確的碰撞模型。為此,采用了采用了更為准確的碰撞的網格模型。首先通過使用邊界體積層次結構(BVH)檢測碰撞三角形 \(\mathcal{C}\) ,然后計算由三角形 \(\mathcal{C}\)和它們的法線 \(n\) 定義局部圓錐3D距離場 \(\Psi\)。穿透根據侵入的深度來懲罰,有效地由距離場中的位置來計算。對於兩個碰撞的三角形 \(f_s\) 和 \(f_t\),入侵是雙向的;\(f_t\) 的頂點 \(v_t\) 是距離場 \(\Psi_{f_s}\) 里的入侵者,反之亦然。
4.5 性別分類器
男人和女人有不同的比例和形狀。因此,使用適當的身體模型來擬合2D數據意味着應該應用適當的形狀空間。目前還沒有一種方法能夠自動將性別因素考慮到三維人體姿勢的擬合中。在本工作中,訓練一個性別分類器,j將全身和OpenPose關節的圖像作為輸入,並給被檢測到的人分配一個性別標簽。
4.6 速度優化
SMPLify采用了Chumpy和OpenDR,這使得優化速度變慢。為了保持優化易於處理,本文使用PyTorch和帶有強Wolfe線性搜索的有限內存的BFGS優化器(L-BFGS) 。
5. 實驗驗證
5.1 數據集
數據集Expressive hands and faces dataset (EHF)。
5.2 實驗對比
為了測試SMPL- x和SMPLify-X的有效性,本文與最相關的模型SMPL、SMPL+H和Frank進行比較,同時在EHF數據集上做了一組消融實驗分析每個模塊對整體精度的影響。
下圖是在LSP數據集上SMPL-X的結果。一個強大的整體模型SMPL-X對身體、手和臉的自然富有表現力的重建。灰色顯示了性別特征。藍色表示性別分類器不確定。
6. 實驗結論
在這項工作中,本文提出了SMPL-X模型聯合捕捉身體,人臉和手。此外,本文還提出了SMPLify-X方法,通過SMPL-X擬合到單個RGB圖像和2D關鍵點的方法。本文利用一種新的強大的身體姿態先驗和一種快速准確的檢測和懲罰滲透的方法,對歧義下的擬合進行了正則化處理。本文使用自然圖像提供了廣泛的定性結果,展示了SMPL-X的表達能力和SMPLify-X的有效性。本文引入了一個具有偽真實的數據集來進行定量評估,這表明了更具表現力的模型的重要性。在未來的工作中,本文將創建一個SMPL-X擬合的數據集,並用回歸器來直接從RGB圖像回歸SMPL-X參數。本文相信,這項工作是向從RGB圖像中表達捕捉身體、手和臉的重要一步。