論文閱讀_PoseAug: A Differentiable Pose Augmentation Framework for 3D Human Pose Estimation_CVPR2021

Z.H. Shen
馬鈴薯獵人的狂想曲
20 min readMar 1, 2022

Abstract

PoseAug 是一個 Auto-augmentation framework,用來提高訓練後的二維到三維姿態的泛化能力,可以藉由引入 PoseAug,來增強幾何學因子的factor 多樣性,如姿勢、身體大小、視角和位置。

一、Introduction

三維人體姿勢預估可以用於圖像或視頻中的三維人體關節,可以用於動作識別、人機互動或人類追蹤等等。

使用 Learning-base 的方法,加上有標記 Ground truth 的實驗環境的 Dataset,雖在室內環境可以取得不錯的效果,但因為訓練數據多樣性有限,所以難以推廣到跨域場景的數據集(室外環境),我們可以透過數據增強來提高模型的泛化能力,例如 Image composition. Image synthesis 或藉由預定好的 Tranformation 來對訓練數據產生二維到三維的對應姿勢。

Image composition
Image synthesis
Directly generate 2D-3D pose pairs from the available training data by applying pre-defined transformations

但將數據增強和模型訓練視為兩個獨立的階段,可能會產生無效的數據,因這些資料太容易訓練了,對模型的泛化能力提升有限,且這些方法很大的程度上,依賴於預先定義好的規則,例如關節的角度和不同種類的運動。

具體來說 PoseAug 是利用 Augmentor 來直接增強訓練數據資料中,2D 到 3D 的姿勢對應,考慮到 Potential domain shift,Augmentor 分為三種類別進行操作:

  • The skeleton joint angle(人體關節的角度)
  • The body size(人體的大小)
  • The view point and human position(視角與人所處的位置)

Augmentor 與 3D human pose estimation 一起訓練,透過 Error feedback strategy 的這樣的機制來進行 end-to-end 的優化,更具體來說是透過將 3D human pose estimation 在訓練時的 Loss 做為學習目標, 藉由跨大數據的多樣性和困難的範例,來豐富輸入的 Pose pairs,對抗這些困難的範例的同時,也可以使 Pose estimation 變得更加強大。

為了增加 Augmentor 的可信度,引入了一個 Discriminator module,包含兩個部分,3D pose discriminator(KCS; Kinematic Chain Space) 是增強關節角度的合理性、2D pose discriminator 是為了增加人體大小、視角與位置的合理性,不合理的關節角度、視角和位置等,會妨礙模型的合理性。

使用 MPJPE 的評估指標,四種 3D 姿勢預測模型與兩種 Dataset,使用 PoseAug 前後的比較。

四種不同的 3D pose estimation model,使用於 Source dataset(Human3.6M; 室內場景) 和 Cross dataset(MPI-INF-3DHP; 室內/室外場景)

Human3.6M(H36M)
MPI-INF-3DHP(3DHP)

在 3DHP dataset 上,將四種 3D 人體姿態預測模型(SemGCN、SinpleBL、ST-GCN、VPose3D),以 MPJPE 作為評估的標準,再加上 PoseAug 後,平均可帶來 13.1% 的增強。

MPJPE (Mean Per Joint Position Error), 是針對每個關鍵點與 Ground truth之間的 L2 loss function 差異

MPI-INF-3DHP(3DHP) 的跨場景 Dataset 上達到 88.6% 3D PCK,比先前最好的 Data augmentation[22] 方法高於 9.1%

主要貢獻:

  • 第一個提出將不同的 Data augmentation 使用於 3D human pose estimation 中的方法。
  • 在這個 Differentiable pose augmentation 中加入 Error feedback 的設計,使產生多樣化且合理的 2D-3D pose pairs,並且將之用於 3D pose estimator 的訓練中,增強了模型的泛化能力。
  • 提出的一個新穎的 3D discriminator,藉由 Local-wise super-vision,在合理的範圍內,對不同姿勢坐增強。

二、Related Work

1. 3D human pose estimation

最近的 3D human pose estimation 是藉由多樣化的 Deep neural network models 所推進,且多數是藉由帶有良好標注的監督是訓練所完成,但難以泛化到沒看過的場景中,例如不同視角或姿勢。

一些方法是利用搜集室外的 2D pose data 來訓練模型,透過運動學的先處理、後處理或是對抗式訓練來增加模型的泛化能力,最近基於幾何結構的 Self-surpervised learning 也已被利用於 Unlabeled data 的模型訓練,但這些都受限於外部數據集的適應性。

作者並沒有關注於複雜的網路架構及學習框架,而提出一個可學習的姿態增強框架來豐富 3D pose data (2D-3D pose pairs),具有通用性、多樣性、合理性,來用於 3D 姿態預測的模型訓練。

2. Data augmentation on 3D human poses

Data augmentation 已被用於舒緩 Bottleneck of training data 的多樣性和提升模型的泛用能力,一些方法是透過 Stitching image patches 或藉由 Graphics engines 來產生新資料,最近 [22] 在 Source dataset 上,透過隨機重組部分骨架和調整關節的角度來增強 2D-3D pose pairs,為了增加資料的合理性,增加了許多限制,包括限制關節的角度,固定數據增強的視角與位置,但這些預定義好的規則會限制數據的多樣性,限制模型用於室外多種不同的場景。

不同於這些方法,作者提出使用 Learnable data augmentation 於 3D pose estimation,這對於提升模型的泛化能力是有效的。

三、Method

1. Problem define

使用 2D 空間座標 (自然數矩陣 2 * J) 來表示人的 J key-point。
使用相機座標系 (自然數矩陣 3 * J ) 來表示 3D 關節座標位置。
目標是得到一個 3D 姿態估計器,P,從輸入二維圖像中,恢復三維圖像訊息。
χ 表示 2D-3D pose pair
Loss function for estimator,P,將 2D 座標經過 Pose estimation 轉換為 3D 座標,以 MSE 去計算 Loss

傳統上,Estimator P 的參數為 θ,再帶有良好標注的 dataset 上做訓練,L 下標 P 表示 Loss function,通常表示為預測和 Ground truth 之間的 Mean square error (MSE),然而卻很難將市內場景泛化到室外場景,例如多樣化的姿態、人體大小及位置。

作者設計出 Pose augmentor,A,使得 2D-3D pose pair 變得更多樣化,可使應用於 Pose estimator,P。
表示經過 Pose augmentor 的 2D-3D pose pair。

有幾種方式可以以離線的方式去建構 Pose augmentor,隨機或經過改良的 Augmentor,但不同的是作者提出使用神經網路的方法,將 Augmentor 當作是一個參數,以在線的方式與姿態預測一起做訓練,這樣的姿態預測的 Loss,可以作為 Augmentor 多樣性的替代物,並引導 Augmentor 去做學習,特別的是,Augmentor 被訓練用來產生更困難的 Augmentor samples 可能會導致 Pose estimator 再訓練時的 Loss 增加。

2. PoseAug Formulation

我們所提出的 Framework 致力於產生具有多樣性的 Training data,且對 Pose estimator 具有適當的難度,進而使得模型的泛化能力提升。但有兩個難題需要被解決:

  • 如何使 Augmented data 具有多樣性,且有利於模型訓練?
  • 如何使 Augmented data 符合現實且自然?

為了解決這兩個問題,作者對訓練 Augmentor 提出兩個新穎的想法。

  • Error feedback learning for online pose augmentation,此種所提出的 Pose estimator,A,並非以離線的方式進行隨機 Pose augmentation,而是採用一種可區分的設計,能夠與 Pose augmentation,P,以在線的方式進行訓練。來自 Pose estimator,P,的訓練誤差做為反饋,Pose augmentation,A,學習生成最適合當前姿態預測器的人體姿態,由於在線的增強,Pose augmentation 產出最適當的難度和多樣性,從而最大限度的幫助 3D pose estimation 進行泛化。
  • Discriminative learning for plausible pose augmentation,純粹追求 Error-maximized 的 Augmentation,可能會產生出不合生物力學的姿態,進而損害 3D 姿態模型的預測,以前的增強方法大多是依靠預定義的規則來確保可信性,但一些較難但可信的姿勢可能無法通過基於規則的可信性檢查,為了解決這個問題,作者在身體關節的局部關係上,設置一個姿態判別模塊,以協助 Augmentor 的訓練,在不犧牲多樣性的情況下,確保增強後的姿勢的可信程度。

3. Architecture

Overview of our PoseAug framework.

上圖為 PoseAug 的架構設計:

  • Pose augmentor 使輸入 {x, X} 的 2D-3D pose pairs 增加為 {x’, X’},{x’, X’} 為 Pose estimator 的訓練所用。
  • Pose discriminator module 作為確保 Pose Augmentor 所產生出來 Augmented data 於 2D 和 3D 空間的可信度。
  • 3D pose estimator 提供姿態預測的誤差反饋機制。

Augmentor

假設一個 3D pose,X,用自然數矩陣 3 * J 來表示,透過一個 Hierarchical transformation,將 J 個關節轉換為 J-1 個 Column vector,B,每個向量表示兩相鄰關節的線段,也就是 Bone vector,用自然數矩陣 3*(J - 1) 來表示,透過 B = H(X),可以進一步分解為骨骼方向向量,B hat (代表關節角度),和骨骼向量的長度||B||(表示人體大小)。

Hierarchical transformation
表示骨骼方向向量
表示骨骼向量的長度

Augmentor 利用 Multi-layer perceptron(MLP) 從輸入的三維姿勢 X 中提取特徵,在特徵提取的過程中,基於高斯分佈的噪聲向量與 X 相連接,以產生足夠的隨機性來增強特徵的不均勻性,提取過後的特徵隨後被應用於回歸的三個操作函數(BA、BL、RT operation),以改變關節角度、人體大小、視角和位置。

Augmentation operations with PoseAug

BA operation(用來調整關節角度)

BA operation;γ_ba 是用於調整骨骼角度 (BA) 的骨骼角度殘差向量,為 3*(J — 1) 的自然數矩陣向量。

BA operation 會將輸入的骨骼方向向量 B hat 藉由 γ_ba 做旋轉,生成一個新的骨骼方向向量B’ hat。

BL operation(用來調整人體大小)

BL operation;γ_bl 表示代表骨骼長度比值的向量,用於調整骨骼長度(BL)為 1*(J — 1) 的自然數矩陣向量 。

BL operation 會藉由 γ_ba 來調整輸入 bone length vector ||B||,來調整身體大小,為了確保符合生物力學的對稱性,身體左右兩邊共享參數。

RT operation(用來調整不同視角和位置)

RT operation,R 屬於自然數矩陣 3*3,t 屬於自然數矩陣 3*1,分別用來表示在 Rigid Transformation(RT) operation 中的 Rotation parameter 和 Translation parameter,來控制 Pose view point 和 Position。
B’ 表示藉由BA and BL operations 的 Augmented bone vector。
此為 Inverse hierarchical conversion,將 B’ 轉換為 3D pose。

藉由這些操作,Augmentor 可以產生 augmented 3D pose X’,相對於原本的 X,具有更多挑戰性的姿態、人體大小、視角與位置,再將這些 Augmented pose 重新投射於 2D 產生 x’,X’ 和 x’ 可用於之後的 Pose estimator 的訓練。

Discriminator

由於先前增強的過程中缺乏先驗因素,增強後的姿勢可能會出現違反生物力學結構的不合理的關節角度,或者不合理的位置或視角,為了確保增強後的姿勢的合理性,引入一個姿勢判別模塊來增強其合理性,具體來說模塊包括一個用於評估關節角度可性度的三維姿勢判別器,D_3d ,和一個用於評估身體尺寸、視角和位置可信度的二維判別器,D_2d。

D_3d 的三維姿勢判別器的設計關鍵是在不犧牲多樣性的前提下確保姿態的可性度,受 Kinematic Chain Space(KCS) 所啟發,設計了一部分感知的 KCS (Part-aware KCS) 作為判別器的輸入,此感知器不像原本 KCS 論文那樣考慮整個身體的姿勢,只關注局部關節角度,從而跨大了增強姿勢的可行區域,確保了可信度和多樣性。

KCS 與 Part-aware KCS 之間差異的圖象說明

計算 Part-aware KCS 的 Input pose(不管是原始的 3D pose X,或是經過增強後的 X’),將之轉換為 bone direction vector,B hat 下標 i,i=1~5,分別表示軀幹、左右臂和左右腿,然後為第 i 部分,去計算 Local joint angle matrix KCS,它封裝了第 i 個部份的節間的角度訊息,

基於上述 Part-aware KCS 去建構一個三維姿勢盤別器 D_3d,它將 KCS i 局部作為輸入,並被訓練用來區分原始和增強的三維姿勢。

除了三維判別器,還引入一個二維判別器,用來引道 Augmentor 生成真實的身體尺寸、視角和位置,由於二維姿勢的資訊包含視角 (Rotation)、位置 (Translation) 和身體大小 (Bone length),二維判別器可以藉由對抗性訓練來學習引導 Pose augmentor 來產生 Rotation R、Translation t 和 Bone length γ_bl

Estimator

Pose estimator,P,從二維姿勢中估計三維姿勢,使原始和增加過後的 2D-3D pose pairs 來訓練 Pose estimator,Pose estimator 包含一個特徵提取器,用於從二維姿勢中提取內部特徵,及一個 Regression layer 用於估計相應的三維姿勢。

此外,現有的任何 3D pose estimator 皆可以 PoseAug 框架,在原論文 4.3 節中,作者進行實驗來進行比較 PoseAug 與不同的 3D pose estimator 的 Robustness,結果顯示 PoseAug 在所有模型的 Source dataset 和 Cross-scenario datasets 接帶來明顯的改進。

4. Training loss

Pose estimation loss

Pose estimation loss 使用 GT 與預測間的 Mean square error(MSE),

使用 L_P 對原始和增強過後的姿勢隊進行姿態預測訓練,可以顯著提高在野外場景的性能。

Pose augmentation loss

為了增強模型訓練使用 Augmentation data,但增強後的數據比原數據更難學習,意即:

公式 8

進而損害訓練的過程,所以設計 Augmentation data 的 Loss function 在一定數值範圍內來實現 Controllable feedback loss,意即:

公式 9,Pose augmentation loss ;其中 β > 1 為控制升成姿態的難度,使 L_p(X’) 相對於 L_p(X) 保持在一定範圍內

在訓練過程,隨著 Pose estimator 越來越強大,會相應的增加數值已產生更具挑戰性的 Augmentation data 來做訓練。

為了防止極度困難的情況導致訓練崩潰,引入一個矯正的 L2 loss 來強化參數 γ_ba 和 γ_bl,如下:

公式 10,γ 表示 γ_ba 和 γ_b,γ bar 表示其所有元素的平均值

結合上述兩個公式,L_A 可表示如下:

公式 11

Pose discrimination loss

對於 Discrimination loss,L_D,對二維和三維的空間都採用 LS-GAN loss:

公式 12,{X, x} 和 {X', x’} 分別表示增強前後的 2D-3D pose pairs

End-to-end training strategy

可以將不同設計的 Pose augmentator、Pose discriminator、Pose estimator 加入到 End-to-End 的訓練中,就由公式 11、12、8 交替更新 Loss,此外在進行 End-to-end training 之前,對 Pose estimator 進行預測訓練,確保訓練時的穩定,以產生出更好的性能。

四、Experiment

1. Datasets

Human3.6M (H36M)

參照之前的做法[26, 52],訓練模型在 H36M 的動作 S1、S5、S6、S7、S8,來評估作動 S9、S11,使用兩個評估指標,Mean Per Joint Position Error (MPJPE) 和 PA-MPJPE,MPJPE 以 mm 為單位,PA-MPJPE 藉由剛性轉換的 GT 三維姿勢與預測值作對齊。

MPI-INF-3DHP (3DHP)

3DHP 為有 130w 幀數的大型 3D 姿勢數據集,與 H36M 相比呈現出更多的動作。作者使用 3DHP test dataset 來評估模型對未見過的環境的泛化能力,使用 MPJPE、Percentage of Correct Keypoints (PCK)、Area Under the Curve (AUC) 等指標。

3DPW

3DPW 是具有更複雜動作和場景的野外數據集,為了驗證所提出的方法,在具有挑戰性的野外場景中的通用性,使用其 Test dataset 來進行評估,以 PA-MPJPE 為指標。

MPII and LSP

MPII 和 LSP 皆為野外數據集,只有二維骨架標籤,用於定性評估模型對未見過的姿勢的概括性。

2. Results

Qualitative results

為了進行主觀的評價,選擇四個與 H36M 相比有更多優勢(有更多的姿勢、身體尺寸和視點) 的數據集 LSP、MPII、3DHP 和 3DPW,本篇論文的方法仍可以表現得很好,甚至沒有看過這些姿勢。

3. Analysis on PoseAug

五、Conclusion

此篇論文開發了一個 Auto-augmentation framework,即 PoseAug,它可以藉由學習的方式去提高輸入數據的多樣性,並且提高訓練後的 Pose estimation 的性能。

PoseAug 有效整合三個組件,包括 Pose augmentator、Pose discriminator、Pose estimator,具體來說,Augmatation 被設計為可分化的,因此可以學習改變 2D-3D pose pairs 的主要幾何結構,以通過訓練誤差作為反饋來更好的使用於 Estimator。

Pose discriminator 確保經過 Part-aware KCS 的 Augmentation data 的合理性。

廣泛實驗證明 PoseAug 可以增強多種多樣的訊息數據,以提高各種三為姿態預估器的預估性能。

--

--