【ICCV 2021】論文閱讀:3D Human Pose Estimation with Spatial and Temporal Transformers


 ICCV2021 的一篇文章,一開始的感覺是在之前CVPR 2019上的VideoPose3D基礎上做的一些工作,主要是把最近兩年很火的vision Transformer用到了上面。

論文地址:https://arxiv.org/pdf/2103.10455.pdf

Github:https://github.com/zczcwh/PoseFormer

摘要

Transformer在NLP上取得很好的效果后,被引入到了計算機視覺任務中,如圖像分類,目標識別和語義分割。而在HPE領域,卷積網絡架構仍然占據主流,在這篇文章中,作者提出了PoseFormer,一個完全基於transformer,不包含卷積架構的視頻3D HPE方法。受到最近vision Transformer的啟發,作者設計了一個spatial-tempral transformer結構,對人體關節關系和跨幀的時間相關性進行綜合建模,最后輸出一個精確的中間幀的3D人體姿勢。驗證數據集使用Human3.6M和MPI-INF-3DHP,都達到了SOTA的效果。

1&2. 引言&相關工作

引言和相關工作部分就不展開了,大概寫一下。

主要講為什么要采用Transformer,因為CNN對時序數據的特征提取有限,RNN則太過簡單,而Transformer中的自注意力機制恰好能夠解決這個問題,對於跨幀間的時序關系表達學習也更強。

因為用到了Transformer,可以參考這個視頻:李沐-Transformer論文逐段精讀【論文精讀】

 

主要貢獻:

(1)第一次提出了完全基於Transformer的3D HPE模型 PoseFormer,將2D關節點升維到3D

(2)設計了一個有效的Spatial-Temporal Transformer,spatial transformer模塊對身體關節的局部關系進行編碼,temporal transformer獲取整個序列幀中跨幀間的全局依賴

(3)在Human3.6M和MPI-INF-3DHP上都取得了SOTA效果

3. 方法

作者的方法使用的也是2D-to-3D lifting pipeline的方式,首先獲取視頻各個幀的2D pose,這部分用的是已有的工具實現,然后以這個2D pose序列作為作者模型的輸入,構建3D pose的中間幀。

3.1. Temporal Transformer Baseline

 FIgure2.(a)是Temporal Transformer baseline的架構,這邊以每一幀的2D pose為token,或者像Vit中稱為patch,輸入到patch embedding中。patch embedding是一個可訓練的投影層,將每個pach嵌入到高維特征中。

旁邊的position embedding用於保留每個幀的位置信息,通過這個embedding就相當於加入了每個patch的時序信息。

 x^i∈X表示每一幀的輸入向量,E為線性層的矩陣,E_pos為 position embedding,輸出的Z_0作為 Transformer Encoder的輸入。

自注意力是Transformer的核心,能夠將輸入序列不同位置的embedded feature聯系起來。本文的Transformer是由多頭自注意力快和MLP塊組成的,在每一個塊之前連接一個LayerNorm,塊后連接一個殘差連接。

 

尺度變化的向量積注意力方法(Scaled Dot-Product Attention):這部分內容基本上和attention is all you need大差不差,跳過。

 在本文,d = C, N=f,C是嵌入的維數,f是視頻的幀數

多頭自注意力層(Multi-head Self Attention Layer):基本和原文一樣。

為了預測中間幀的3D pose,編碼器的輸出被壓縮到了與輸入幀的平均維度一樣。最后通過一個MLP塊回歸輸出y,得到中間幀的3D pose。

3.2. PoseFormer: SpatialTemporal Transformer

 作者觀察到Temperoal主要是關注輸入序列幀間的全局依賴,將關節坐標投影到了更高維,而這就忽略了局部關節坐標間的運動學關系,這種空間關系在簡單的線性投影層是難以得到較強的表達的。一種潛在的解決方法是將每個關節坐標視作一個單獨的patch,將所有幀的關節輸入到Transformer中(如圖Figure2.(b)),而這樣做會導致patch的數量陡增,從每幀一個patch,變成了J*f個patch,J為關節數量。

為了有效學習局部關節關系,作者分別使用spatial和tempoeral兩個Transformer模塊,作者提出的PoseFormer包含三個模塊:spatial transformer、temporal transformer以及regression head模塊.

下面對這幾個模塊進行展開解釋:

Spatial Transformer Module:該模塊旨在從一個單幀圖像中提取高維特征向量。給定一個包含J個關節點的2D pose,將每個關節是為一個patch后feeding到后面的transformer encoder中。這邊的postion embedding使用的是一個patial positon enbedding,用於標識不同關節位置,將一幀中所有的關節patch feeding到Transformer中,利用自注意力機制,學習所有關節點之間的相互信息,輸出的是一個幀的總體信息Zi_L。這部分的輸出Z再加上一個幀之間的position embedding作為Temporal Transformer的輸入。

Temporal Transformer Module:Spatial transformer已經對關節間的信息進行提取集合,做的是每幀內的局部運動學信息提取,Temporal Transformer要做的就是對序列幀的依賴進行建模,做的是全局信息的提取。這兩個Transformer的結構是一樣的,只是處理的信息角度有區別。此處輸出一個向量Y(f ×(J·c))

Regression Head:使用一系列幀來預測3D pose的中間幀,需要將Termpral Trasformer輸出的Y縮減為y(1 x (J·3))。作者采用在幀維度上進行加權平均操作,最后使用一個含LayerNorm的MLP塊和一個線性層得到輸出y。

Loss Function:為了訓練 spatial-temporal transformer model,采用標准的MPJPE loss最小化真實值和預測值的標准誤

 4.實驗

4.1. Datasets and Evaluation Metrics

 Datasets: Human3.6M 和  and MPI-INF-3DHP

Evaluation Metrics:  MPJPE、P-MPJPE、Area Under Curve (AUC).

4.2. Implementation Details

 作者使用兩個3090 GPU訓練和測試,選擇了三個不同幀長(9、27、81)進行實驗,具體的細節會在消融實驗中展開。訓練時使用Adam優化器訓練了130個epochs,權值衰減為0.1。學習率采用指數衰減,初始為2e-4,每次epoch衰減因子為0.98。batch size設置為1024,Transformer layer設置為隨機深度。在H3.6M中,2D pose detector使用的是cascaded pyramid network(CPN),MPI-INF-3DHP則使用真實的2D pose作為輸入。

4.3. Comparison with StateoftheArt

Human3.6M

 table1展示了作者測試集的結果,在MPJPE和P-MPJPE兩個指標下,PoseFormer比作者的baseline分別高出了6.1%和6.4%,這表明使用spatial transformer的有效性,能夠帶來一定的優勢。與同樣基於transformer,但不包含時間信息的METRO相比,PoseFormer比之MPJPE下降了18%。

在第二組中,P-MPJPE指標也獲得了最好的效果,可以更准確的預測有一定難度的動作,如:拍照、坐下。遛狗和吸煙,與其他簡單動作不一樣的是,這些動作姿勢變化更快,模型對於遠距離幀的關聯性更強,這里作者覺得自注意力機制的全局依賴性起到了作用。

 

 

 為了進一步研究這種方法的邊界,作者直接將2D pose的 ground truth作為PoseFormer的輸入(之前是借助第三方的2D detector),MPJPE值從原來的44.3mm下降到了31.3mm,下降了29.7%,在子動作上也取得的了非常好的效果,比之前最好效果的SRNet有2%的略微提升。

 

 figure3顯示的是個別關節上的一些MPJPE比較,在復雜關節上的誤差,PoseFormer比其他的都要好。但其實差不了多少。。

MPI-INF-3DHP

 

 

 table3是在MPI-INF-3DHP數據集上的效果,數據集的樣本會比H3.6M少,主要是探究模型在小數據集上的適用性。視頻幀長為9,主要還是數據集樣本比較短,效果和其他模型比實現了SOTA效果。

 

 Figure4主要是一個視覺性對比,和真實情況對比,通過對比做的還不錯。但是這個展示的僅僅是部分的,實際如何還是要看總體的一個平均值。

4.4. Ablation Study

 為了研究不同結構的貢獻成分,作者在H3.6M上的第一組進行了消融實驗,

Table4展示了去除某個結構后的MPJPE結果,其中輸入幀長從原來的81改為了9。影響比較重要的是S-T部分,去掉后誤差值最高,說明Spatial-Transformer的增加確實起到了作用。

 

 Table5展示的是改變幾個參數后的效果,c是Spatial-Transformer的patch embeding的維度,L_S和L_T分別表示Spatial-Transformer和Temporal-Transformer中的層數。

 

 Table 6比較計算復雜度,這個看圖就好了。

5. Conclusion

提出了一個PoseFormer模型,一個在視頻上的完全基於Tansformner的3D HPE方法。sptial transformer模塊編碼了2D關節點之間的局部關系,temporal transformer模塊捕捉不同幀之間的全局依賴關系,該模型實現了SOTA效果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM