【論文閱讀筆記】Towards Accurate Multi-person Pose Estimation in the Wild
論文地址:https://arxiv.org/abs/1701.01779
論文總結
本文是top-down的姿態檢測模型,其人體檢測器採用Faster RCNN,Faster RCNN 以 ResNet-101 姿態檢測器以Res101作為backbone,預測兩個分支:Heamtap( K K K個channel)和Offset( 2 ∗ K 2*K 2∗K個channel)。同時,在對人體檢測器採用的 NMS 方案,作者提出了一種新的 NMS 方案:使用 0.6 0.6 0.6的 IoU 閾值執行 NMS,過濾掉過於重疊的邊框;對剩餘的邊框,進行 keypoint 檢測,最後採用 pose detection
論文介紹
Person Box Detection
在人體檢測器網路結構上,使用 ResNet-101 作為backbone,刪除最後一層,新增空洞卷積,以用stride=8的結構預測更密集的feature map,而不是預設的stride=32,。
CNN backbone在ImageNet上進行分類預訓練;Faster RCNN的迴歸和分類,只是用COCO資料集的person資料,其他的19個數據分支不使用。而且,為了更好地復現,不使用Faster RCNN的多尺度驗證和model ensembing
Person Pose Estimation
姿態檢測器預測heatmap和offset,heatmap預測K個channel,其中K為關鍵點數量;offset預測2 * K個channel。
Image Cropping:通過不扭曲影象寬高比的方式,擴充套件person 檢測器的box 的寬和高,使得所有的box有相同的,固定的長寬比。然後擴大box,使得其包含更多的圖片資訊。在測試時,box擴大1.25倍;在訓練時,隨機擴大1.0~1.5倍(用於資料增強)。然後Crop出來的影象,Resize到高為353,寬為257的固定大小,其方向比為
353
257
=
1.37
\frac{353}{257}=1.37
Heatmap and Offset Prediction with CNN:使用ImageNet初始化ResNet101,並用1*1 conv代替最後一層。應用空洞卷積產生
3
∗
K
3*K
3∗K的預測channel,其output stride為8。最後在雙向性上取樣到
353
∗
257
353*257
353∗257。
在生成ground-truth時,作者認為heatmap 的ground-truth只有某個點為1,這樣太難訓練了。所以,作者採用其他方案:在關鍵點位置半徑
R
R
R範圍內部都設為
1
1
1。由於heatmap ground-truth設定的擴散,所以該pose估計增加了一個offset分支,用以將半徑
R
R
R內部的點歸攏到一個具體的目標點上。
所以,該文章的某個點的分數,是某個區域的投票結合:image crop grid的每個點
j
j
j都產生一個投票,其權重為
h
k
h_k
hk:
Model Training:在ResNet50處增加一個輔助的損失函式,用以加快訓練。heatmap分支檢測頭,採用對數損失函式。offset分支檢測頭,採用Huber robust loss。
其中, H ( u ) H(u) H(u)是Huber robust loss, l k l_k lk是第 k k k個關鍵點的位置, x i x_i xi是半徑為R的位置。最後的損失為:
其中, λ h = 4 , λ o = 1 \lambda_h=4,\lambda_o=1 λh=4,λo=1, λ h \lambda_h λh是對數損失函式。
Pose Rescoring,不直接使用人體檢測器的人數,使用的分數為關鍵點分數的平均:
OKS-Based Non Maximum Suppression:提出了更refine的NMS變種,而不是基於IoU的NMS,作者將Keypoint考慮在了其中。實際上,使用OKS來衡量兩個候選姿態檢測的重疊。首先在高IoU-NMS閾值(0.6)的人體檢測器過濾高重疊率的邊框。微妙的OKS-NMS(在pose估計的輸出上),更適合決定兩個候選檢測是否對應假陽性(同一個人的雙重檢測)或真正的陽性(兩個人靠的很近)。