?人體姿態估計是計算機視覺中壹個很基礎的問題。從名字的角度來看,可以理解為對“人體”的姿態(關鍵點,比如頭,左手,右腳等)的位置估計。
?人體姿態估計可以分為兩種思路,
(1)“top-down”,它指先檢測人體區域,再檢測區域內的人體關鍵點。
?已有"bottom-up"方法缺點:(1)未利用全局上下文先驗信息,也即圖片中其他人的身體關鍵點信息;(2)將關鍵點對應到不同的人物個體,算法復雜度太高。
?文章改進點:提出“Part Affinity Fields (PAFs)”,每個像素是2D的向量,用於表征位置和方向信息。基於檢測出的關節點和關節聯通區域,使用greedy inference算法,可以將這些關節點快速對應到不同人物個體。
?損失函數是保證網絡能收斂的最重要的關鍵點,因此作者對兩分支的損失函數均采用L2 loss。訓練時,每個階段都會產生loss,避免梯度消失;預測時只使用最後壹層的輸出。公式表示如下:
其中, 表示branch1 的label圖,也稱為heatmap; 是branch2 的label圖 ,也稱為vectormap。另外,考慮到有些訓練數據集只標註了圖片中部分人物的關節點,因此對損失函數采用了空域加權操作,W表示二值化mask矩陣,當位置p的標簽缺失時其值為0,否則值為1。顯然,對於未被標記的人物關節點 ,而被標記的人物關節點和非關節點 ,所以未被標記的人物關節點不會影響模型的學習過程,整個CNN網絡架構的優化目標函數如下,
? 實際上就是使用2D高斯分布建模,求出壹張圖像上身體j部位的heatmap,記第k個人的第j個關節的heatmap為 , 表示位置信息,則有:
? 表示了使用part affinity fields(PAF)建模骨骼區域,對於骨骼區域內的每壹個像素,使用2D向量同時表征位置和方向信息,這裏的方向指代當前骨骼對應的關節點對的連接方向,對應vectormap。以下圖的骨骼區域為例
?經過上述過程,我們已經得到各個關節點的坐標圖--heatmap,與關節對連接的vectormap,現在的問題就是如何合理地在推理階段將各個關節連接成壹段骨骼,並將它們組裝成壹個人?
? 關節拼接 :對於任意兩個關節點位置 和 ,通過計算PAFs的線性積分來表征骨骼點對的相關性,也即表征了骨骼點對的置信度,公式表示如下, 為了快速計算積分,壹般采用均勻采樣的方式近似這兩個關節點間的相似度, ? 多人檢測 :由於圖片中人數不確定,同時伴隨遮擋、變形等問題,因此只使用上述計算關節對相似度,只能保證局部最優,因此作者利用greedy relaxation的思想生成全局較優的搭配。具體操作如下:
(1)已知不同關節點的heatmap,也就是不同人的某個關節點的點集;
(2)現在要將不同的點集進行唯壹匹配,如:壹群表示手肘的點集和手腕的點集,兩點集中的點必須存在唯壹匹配;
(3) 關節點之間的相關性PAF已知,將關鍵點作為圖的頂點,將關鍵點之間的相關性PAF看為圖的邊權,則將多人檢測問題轉化為二分圖匹配問題,並用匈牙利算法求得相連關鍵點最優匹配。
?由上圖可知,COCO數據集總***有18個關鍵點,17個肢體骨架,但heatmap多了壹個背景圖,vectormap多了耳朵和肩膀的肢體,為什末要虛構這麼壹個肢體呢,因為有時候人體是背對相機的,眼睛這個關鍵點是不可見的,為了更好的預測耳朵,引入這兩個個肢體(也就是關節對:2-16和5-17)。所以總***有19個肢體,應為vectormap為矢量,預測時分為x,y兩個分量,所以有19*2=38
?完全參考 /m0_37477175/article/details/81236115 ,結合2.4節中vectormap( )的計算公式與綠色虛線框內的區域以點集數學公式理解。
?關鍵是叉乘的幾何意義是兩個向量所組成的平行四邊形的面積,所以 就表示與向量 平行距離為 的區域,也就是骨骼寬度。
後來論文作者對網絡結構進行了改進,使得效果更好,速度更快,參考文獻11。
1 Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
2 人體姿態估計的過去、現在和未來
3 論文解讀-Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
4 Realtime Multi-Person 2D Pose Estimation Using Part Affinity Fields菜鳥讀者
5 知乎:openpose筆記
6 openpose論文總結:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
7 詳細介紹匈牙利算法步驟
8 Github 項目 - OpenPose 關鍵點輸出格式
9 openpose的細節處理
10 tf-openpose人體姿態估計標簽生成--heatmap--vectormap
11 OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields