論文閱讀筆記 — 3D人體姿態辨識 Multi-Person 3D Human Pose Estimation from Monocular Images

Hung-Chih Chiu
Nov 18, 2020

--

這周要跟大家分享的是一個多人3D姿態識別模型, 原始論文連結如下:

模型的辨識結果如圖1所示, 從圖1中可以看到多人3維模型.

圖1 模型辨識結果

模型架構如圖2, 模型架構類似我們先前介紹過的多人2維關鍵點中的Top-down方式. Top-down會先用定界框標註出影像中的每個人, 接著再去識別定界框中每個人的關鍵點座標. 一開始我們得到的關鍵點是以影像平面為座標的2維關鍵點, 接著我們可以由個人2維關鍵點推論出3維空間中的關鍵點位置, 這些個人的3維關鍵點是以髖關節為中心的區域座標, 我們再將各別區域座標的關鍵點轉換到以攝影機為主的全域座標系統.

圖2 模型架構

圖2為本篇文章所提出的模型架構, 作者將它命名為HG-RCNN, 是以Mask-RCNN的為主要的骨幹, 透過RoI Align將影像中有人的部分圈選出來, 另外作者有提到Mask-RCNN不是最合適用於人體關鍵點辨識的架構, 因此在Mask-RCNN 的RoI Align之後再接入Stacked Hourglass的網路架構, 透過Stacked Hourglass得到個別影像中的2維關鍵點, 關於Stacked Hourglass的架構可以參閱我前面的文章:

而從Stacked Hourglass所得到的2維heatmaps, 可以再經由線性的網路將2維關鍵點的heatmap推論出3維的關鍵點, 而線性網路的部分作者提到了可參閱幾篇文章如 3d human pose estimation from a single image via distance matrix regression:

或是A simple yet effective baseline for 3d human pose estimation:

這兩篇文章內都有透過Fully connected layer的線性連接層將2維關鍵點座標轉化為3維關鍵點座標. 而得到的3維關鍵點是以攝影機的視角為座標, 個人髖關節中心為原點. 但因為我們現在處理的是多人姿態辨識的問題, 所需要的除了每個人的關鍵點間的相對關係外, 也需要對應到影像中的全域座標, 才能將多個不同的人結合在同一座標系中. 而所需的動作包括了不同座標的縮放, 以及x,y,z 3個維度的平移. 針對深度z的部分, 如下式所示, 其中S3D為關鍵點是3維座標下所有骨頭長度的總和, S2D則是關鍵點是2維座標下所有骨頭長度的總和, f則是攝影機的焦距,

如果對上面這個式子不太了解, 可以參閱圖3的說明, 圖3中的矩形就是成像的平面, 而相機原點O到成像平面的距離就是焦距f, 至於實際3維空間影像與原點O的距離則是Z, Z/f的比值實際上就是3維空間骨頭長度S3D與2維影像平面上骨頭長度S2D的比值, 因此Z/f = S3D/S2D, 兩邊同乘f就得到上式.

圖3 影像座標轉換 (https://abcd40404.github.io/2018/08/08/camera-frame-world-frame/)

了解上式後代表平移的X與Y就更好了解, 作者這邊只列出其中一個方向X如下, 式中ox代表平面影像中心點, x代表的是關鍵點的2維座標.

有了上面的座標轉換, 我們就可以把原本各自區域的3維座標轉換成為統一的全域座標, 如下所示, 其中N代表N個關鍵點, Ki為第i個關鍵點的2維座標, Pi為第i個關鍵點的區域3維座標, ti表示第i個關鍵點在影像的平移向量x與y. 把區域的3維座標Pi經x, y, x平移後投射到影像平面的影像要與透過Stacked hourglass所預測出的2維座標Ki越近越好, 以此計算出要移動的座標.

模型分別在MuPoTS-3D, Human3.6M與MSCOCO下進行測試, 其中MuPoTS-3D是比較新的資料集, 資料集的介紹可以參閱前面的文章:

最後列出在MuPoTS-3D資料集下的驗證結果如表1.

表1 MuPoTS-3D資料集不同模型不同動作下測試結果

--

--