論文閱讀筆記 — 人體姿態辨識 Single-Stage Multi-Person Pose Machines
這周要跟大家分享的是Single-Stage Multi-Person Pose Machines, 原始論文連結如下 (https://arxiv.org/pdf/1908.09220.pdf).
我們先前將人體姿態辨識的模型分為Top-down與Bottom-up兩種方式, Top-down是指先辨識出影像中的每個人, 再針對單個人的關鍵點進行辨識 (如圖2(b)中的上圖), Bottom-up則是反過來, 將影像中每個關鍵點都找出來, 再依據關鍵點之間的關係, 將離散的關鍵點組成人體肢段 (如圖2(b)中的下圖). 本篇文章將上述兩種方式都稱為兩階段的方式, 這篇論文提出的是他們的方法為一個階段就將人體的姿態辨識出來(如圖2(a)).
論文中將每個人的姿勢定義如下, 式子中N代表影像中共有N個人, K代表每個人身上K個關鍵點, i則是第i個人, 因此Pik代表第i個人的第k個關鍵點.
本篇論文除了對COCO, MPII與PASCAL等資料集進行人體關鍵點的2維影像座標預測外, 也會對CMU Panoptic資料集做人體關鍵點3維空間座標預測, 因此P可以是2維的影像座標, 或是3維的空間座標如下兩式.
而為了要能夠達成一階段就將影像中每個人的關鍵點預測出來並組成人體肢段, 這邊作者定義了人體肢段架構Structured Pose Representations (SPR)如下圖.
圖3(a)為原始影像, (b)為關鍵點, (c)與(d)則是定義出的SPR. SPR中最重要的是有一個Root Joint, 每個人都會有一組Root Joint, 你可以把她想像成是Top-down方法中的Bounding Box的中心點, 而SPR就是列出人體每個關鍵點相對於Root Joint的向量位移, 如圖3(c). 另外文中作者提到因為有些關鍵點與Root Joint距離太遠, 例如手腕, 踝關節等, 會造成模型不好預測, 因此他們又定義出Hierarchical SPR, 將關鍵點分為4層架構. 第1層是Root Joint, 第2層則是軀幹上的關鍵點如脖子, 肩膀以及髖關節, 第3層是頭, 手肘, 膝關節, 最後一層是手腕與踝關節如圖3(d).
透過圖3(c)的方式可以定義出每個關鍵點如下式, xij代表第i個人的第j個關鍵點的x座標, yij代表第i個人的第j個關鍵點的y座標, xir與yir代表第i個人的Root Joint, δxij與δyij則是關鍵點與Root Joint的誤差向量.
經由上式就可以把原本的關鍵點表示方式換成下面這個式子,每個關鍵點都以與Root Joint相對的位移向量表示.
圖3(d)的方式則將每個關鍵點的定義改以下式表示, 主要就是把階層的概念帶入, 所以每一個關鍵點不一定是與Root Joint的差異, 而是與上一層的關鍵點的誤差向量, 例如第4層的手腕(xij,yij)是與第3層手肘(xij’,yij’)的誤差向量(δx~ij,δy~ij).
而第三層的手肘又會與第2層肩關節進行連結, 而第2層的肩關節又會與第1層的Root Joint連結, 因此每一個關鍵點都可以列出從Root Joint到自己位置的誤差向量如下式.
上式中(δx~ih,δy~ih)為從Root Joint到每個關鍵點的階層向量, 其中h屬於的Hj,可表示為下式, 為關鍵點到Root Joint的階層路徑.
上式a(m)代表從Root Joint到J個關鍵點中間需要串接的關鍵點, 因此就可以把階層式SPR改為下式
因此只要我們得到Root Joint, 以及各個關鍵點到Root Joint的位移向量, 我們就可以得到完整的人體肢段, 作者將上述這個目標視為回歸的問題, 利用CNN同時預測出Root Joint座標以及位移向量.
首先我們先來看Root Joint的部分:
如同其他文章提到的, 這邊相同將每個Root Joint視為一個高斯分布, 高斯的中心點就在每個Root Joint的座標上, 而這個Root Joint的ground truth可以用一個Confidence map表示, Cir代表第i個人的Root Joint, (xir,yir)是Root Joint的座標, 將影像中的向速與中心點差異取2 norm之後除以σ平方, 這邊σ為7, 用以調整高斯分布variance, 結果如同圖4(a)所示. (不過這邊有個疑惑, 這個Root Joint的座標是由作者團隊所標註的? 或是由左右髖關節的平均取的? 還是全部關鍵點的平均? 後面兩個假設如果多人擁擠場景, 有關鍵點被遮蔽時如何得到Root Joint?)
而每個關鍵點到Root Joint的位移向量, 則用下式表示.
其中Dij代表第i個人的第j個關鍵點, (δx, δy)與Nir定義如下, τ在論文中設為7, Nir代表在第i個人Root Joint為中心, τ為半徑範圍內的點, 實際上如圖4(b)所示, 圖4(b)表示在每個人的Root Joint半徑7內的像素點到頭的位移向量.
Z指的是對影像的寬與高進行正規化.
另外作者又定義了Dj(x,y)針對關鍵點j 將所有的Dij相加之後平均, Mj指的是在所有人中這個關鍵點非零向量的數目. 這邊不太清楚定義這個項目的是什麼?
用以預測Root Joint以及關鍵點到Root Joint的位移向量則使用Stacked Hourglass的網路架構, Hourglass指的是此網路將特徵縮小再放大形成的網路形狀就像是沙漏一般如圖5所示, 而實際上會堆疊多層的沙漏以達到預測結果不斷精進, 同時每一層都會做loss的計算以便面網路太深導致無法收斂的問題. 詳細的論文架構可以參考我另一篇的說明
這篇論文與原始Stacked Hourglass的論文相同疊加了8層沙漏架構, 並在每一層的輸出都做Root Joint與關鍵點位移向量的誤差計算, loss function如下所示.
式中t代表每一階段的Hourglass, 共有T=8個, LC代表Root Joint的loss function, 採用的是l2 loss, LD代表位移的loss function, 採用的是smooth l1 loss. β用以平衡LC與LD兩組誤差, 論文中β使用0.01.
C^r(t)與D^(t)分別代表第t個階段預測出的Root Joint以及關鍵點位移.
另外作者也比較了原始的SPM與階層式SPM在MPII的資料集上的結果, 由表1中可以發現階層式SPM可以得到比較好的結果.
而在MPII資料集上與其他模型的比較結果如表2, 這中間包含了兩階段的Top-down與Bottom-up方式, 可以看到在運行時間與精度上都有不錯的改進.
另一個先前在其他論文中沒有看到的是模型也採用的CMU Panoptic資料集, 透過模型進行關鍵點3維空間座標的預測, 作者認為他們的模型在不同姿勢, 或是關鍵點有被遮蔽, 以及不同大小的人下都有不錯的效果如圖6所示.
在論文的閱讀過程當中發現近期越來越多論文直接談到從影像重建3D的空間座標, 所以接下來也會花一些時間做相關論文的閱讀與分享.