【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。