當前位置:編程學習大全網 - 編程語言 - 人體姿態估計--OpenPose算法解析

人體姿態估計--OpenPose算法解析

?人體姿態估計是計算機視覺中壹個很基礎的問題。從名字的角度來看,可以理解為對“人體”的姿態(關鍵點,比如頭,左手,右腳等)的位置估計。

?人體姿態估計可以分為兩種思路,

(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

  • 上一篇:編程利潤傭金
  • 下一篇:CAXA制造工程師的功能特點
  • copyright 2024編程學習大全網