
本周要分享的文章連結如下:
Github連結如下
模型輸出的結果如圖1所示.
模型架構如圖2所示, 輸入為影像, 模型分為Stage 1與Stage 2最終得到人體3維關鍵點座標.
模型Stage 1為產出2維關鍵點的位置x, 接著Stage 2再由2維關鍵點產多組可能的3維關鍵點, x的維度如下, N代表每個人體中有N個關鍵點:
Stage 1裡面用來作為2維關鍵點辨識的網路是Stacked hourglass, 透過多組沙漏狀的模型疊加來做人體關鍵點的預測, 這個模型在人體動作識別應用中常常見到以它作為骨幹網路的模型, 有興趣的可以參閱我前面介紹的文章, 連結如下:
論文閱讀筆記 — 人體姿態辨識 Stacked Hourglass Networks for Human Pose Estimation | by Hung-Chih Chiu | Medium
Stage 2是作者所謂的Mixture Density Networks (MDN), 包含了特徵擷取以及3維關鍵點的推論產生器 (hypotheses generator), 經由訓練讓網路學習到2維關鍵點對應到3維關鍵點的參數如下:
Ѳ內的3個參數μ, σ, α定義如下:
其中μ代表3維關鍵點高斯分布的中心點, 也是熱區的平均值, σ是這個高斯分布的變異數, α是模型的混合參數(mixing coefficients), 代表每組高斯分布的先驗機率 (priority probability), M代表經模型產生M組關鍵點的高斯分布. 而最終的3維關鍵點y由下式產生:
上式中x代表2維關鍵點, α是模型產生的先驗機率, 數值在0與1之間, 定義如下:
Φi(y|x)是3維關鍵點y的條件密度(conditional density), 就是空間中的高斯分布定義如下:
上式中的μ, σ代表每個關鍵點的中心與變異數, 是從模型得到, d代表3維關鍵點的維度. 以上這些參數, 就是透過Stage 2的神經網路建構而成, 而Stage 2的神經網路則參考了A simple yet effective baseline for 3d human pose estimation這篇論文的架構, 這篇論文認為透過簡單的全連接層就能夠找到2維關鍵點與3維關鍵點對應的關係. 網路一開始的輸入是2維關鍵點的座標, 經過第一層1024個權重的全連接層後接到A simple yet effective baseline for 3d human pose estimation裡面的兩組residual block, 關於論文的詳細介紹可以參閱我前面的文章, 連結如下:
論文閱讀筆記 — 3D人體姿態辨識 A simple yet effective baseline for 3d human pose estimation — Hung-Chih Chiu — Medium
而與A simple yet effective baseline for 3d human pose estimation文章直接透過一組全連接層做3維關鍵點座標的輸出, 作者在Hypotheses generator裡面接了3段不同的網路分別作為中心點, 變異數與先驗機率的輸出. 中心點是透過一個全連接層直接做輸出, 而為了確保先驗機率總和為1, 因此先驗機率是經由softmax做輸出, 而變異數則是透過修改過的ELU function輸出, ELU function如下:
上式中γ是個超參數.
Loss function設定如下:
原始論文中作者寫了一大段關於Loss function的推導, 但是我比較直覺的想法就是與A simple yet effective baseline for 3d human pose estimation相同直接拿ground truth 3維座標與模型計算出的3維座標直接做比較, 不確定為什麼loss function會定義成這樣, 不過作者有提到加入了Lprior是作為regularization, 避免先驗機率過大 (這邊還是看不太懂, 因為先驗機率不就是透過Softmax所得到的數值, 怎麼樣都會在0~1之間, 加入這項對結果會有什麼影響???), 但是最終的結果顯示出加了Lprior可以有較好的結果如表1所示.
超參數的部分, 設定M = 5 (每組3維關鍵點座標都由5組假設得到, 如圖3), λ為2, 並限制先驗機率α在[1e-8, 1]之間以及變異數σ在[1e-15, 1e15]之間.
資料集分別採用了Human3.6M, MPII, MPI-INF-3DHP等3維或是2維人體資料集做驗證, 這邊就列出Human3.6M的結果如表2