論文閱讀筆記 — 3D人體姿態辨識A Dual-Source Approach for 3D Human Pose Estimation from a Single Image

Original article was published by Hung-Chih Chiu on Artificial Intelligence on Medium


論文閱讀筆記 — 3D人體姿態辨識A Dual-Source Approach for 3D Human Pose Estimation from a Single Image

這周要跟大家分享的3維姿態辨識論文連結如下:

原始碼的連結如下

模型在Human3.6m的資料集中預測的結果如圖1.

圖1 Human3.6m預測結果

模型架構如圖2所式, 從圖2中可以看到訓練資料集有兩個來源, 也就是這篇paper名稱dual-source的由來, 圖2中的source-1就是透過動作擷取儀器抓取的人體3維關鍵點動作資料集, 例如Human3.6M, 而圖2中的source-2就是有2維關鍵點的標註資料集如MPII資料集等.

圖2 模型架構

而要如何整合兩個不同的資料集, 回歸出空間中的3維關鍵點, 就是篇論文討論的方式. 首先, 作者利用3維資料集去建立2維與3維之間的關係, 我們知道在Human3.6m中, 人體活動下的3維關鍵點都是從動作擷取儀器中抓取進來的(利用在人體身上貼上反射紅外線的小球, 接著透過紅外線攝影機擷取這些球在空間中的位置之後利用3點定位的方式得到每個關鍵點的位置), 而這些關鍵點的3維座標多以鏡頭或是場景中的某一點為其原點, 我們如果要將這些3維座標投射到某個2維平面時會需要再做座標轉換. 因此作者先將這些3維座標進行正規化, 也就是移除其相對原點平移與旋轉的向量, 這邊作者沒有明確說明是如何進行, 但我猜想是將原點平移回人體的軀幹中心或是髖關節中心作, 兩個肩關節或是兩眼連線的法線向量作為正面, 將人體關鍵點的3維座標重新定義.

而每個關鍵點進行正規化之後, 接著就以新的原點為軸, 將關鍵點以正規投影的方式投射到144個虛擬平面上. 144個虛擬平面是怎麼來的? 首先在水平上360度的角度中每15度取一個視角, 因此水平上我們可以得到24組不同的視角, 而在仰角的部分從0~90度, 同樣每15度取一個視角, 因此有6組, 總共就會有6 x 24 = 144個虛擬視角. 每一個3維的姿態都可以產生144組2維平面座標, 另外因為影像中的人物有大有小, 在正規投影後會再進行一次正規化確保在人像y軸上的座標分布在[-1, 1]之間.

另外在2維資料集的部分, 這邊作者採用了Convolution Pose Machines (CPM)的方式, CPM透過疊加多層的CNN架構去增加2維關鍵點的預測精度, 關於CPM的詳細介紹可以參閱我先前的文章:

實際上作者也有提到這邊主要是要利用這些網路去擷取出我們所要的2維關鍵點, 因此除了CPM, 也可以採用Stacked hourglass或是Multi-context attention的方式去獲取2維關鍵點資料, Stacked hourglass的架構同樣可以參閱我先前的文章:

得到的2維關鍵點如下式, 式中xj代表第j個關鍵點的2維座標, sjT則是第T階段下第j個關鍵點的信心地圖, 也就是在影像中關鍵點出現的位置, 而為了要能夠將2維資料的位置與3維資料一同應用, 因此這邊得到2維座標同樣也會在y軸方向正規到[-1, 1]的範圍內.

接下來要說明的就是將2維關鍵點座標與3維座標對比的部分, 我們透過CPM得到的2維座標, 利用KD-Tree的方式, 去比對我們先前利用3維關鍵點投射到144個虛擬平面上的2維資料, 去找出K個最近似的2維動作, 這邊用以比對2個2維座標是否相近所用的是對應關鍵點之間的Euclidean distance.

當我們有了K個最近似的2維動作, 以及他們對應到真正的3維動作後, 我們就要利用這K組3維動作去得到最終我們真正的3維動作, 這邊作者希望能夠過下列式子去得到最終的3維關鍵點:

上式中Ep代表投影到2維座標的誤差, Er代表3維座標的誤差, X是我們最終要得到的關鍵點3維座標, M則是3維到2維的投影轉換, 而α則是權重以決定哪邊的誤差要進行放大.

Ep如下所示, Xj是我們要的到的最終動作第j個關鍵點的3維關鍵點, xj則是2維關鍵點資料.

Er如下所示, Xjk是我們從KD-Tree中篩選出最接近的K個2維座標所對應的3維關鍵點.

作者將計算拆解為兩個步驟, 先利用Ep得到M如下式, 利用K組從KD-Tree篩選出的3維動作Xjk, 得到一個投影轉換M^可以最接近2維關鍵點.

有了M^後再利用原始的E(X,M^)去求出最終的三維關鍵點X如下

這邊作者沒說明, 但是可以用兩組神經網路去完成上述的迴歸, 另外作者有提到利用PCA的方式將X降維以減少訓練的時間.

而使用的資料集的部分, 3維資料集使用了Human3.6M以及HumanEva-I, 2維資料則是使用MPII作為CPM的訓練.

前面有提到利用KD-Tree的方式去篩選出K組最接近的動作, 針對不同的K對於最終精度與速度的影響, 作者也進行比較如圖3所示, 最終作者選擇K=256.

圖3 KD-Tree篩選K組資料對精度與速度的影響

作者也比較了不同權重α對最終精度的影響如圖4, 最後作者採取α=1.

圖4 α對精度的影響

最後表1列出在Human3.6m資料集上與其他模型比較的結果.

表1 與其他模型比較結果