一,openpose是一種自底向上的算法:
? ? ? ? OpenPose人體姿態識別項目是美國卡耐基梅隆大學(CMU)基于卷積神經網絡和監督學習并以Caffe為框架開發的開源庫。可以實現人體動作、面部表情、手指運動等姿態估計。適用于單人和多人,具有極好的魯棒性。是世界上首個基于深度學習的實時多人二維姿態估計應用,基于它的實例如雨后春筍般涌現。
? ? ? ? 檢測所有的關鍵點,再group成不同的人,是當前比較流行的人體姿態評估算法之一。OpenPose 大獲成功的一部分原因是它在 GitHub 上開源了其實現代碼
(https://github.com/CMU-Perceptual-Computing-Lab/openpose),并配有詳細的說明文檔。
和很多自底向上的方法一樣,OpenPose 首先檢測出圖像中所有人的關節(關鍵點),然后將檢出的關鍵點分配給每個對應的人。下圖展示了 OpenPose 模型的架構。
?
二,openpose算法:
1.輸入一幅圖像,經過VGG19卷積網絡提取特征,得到一組特征圖,然后分成兩個岔路Branch1&2,分別使用 CNN網絡提取Part Confidence Maps(置信度) 和 Part Affinity Fields(關聯度);
2.得到這兩個信息后,我們使用圖論中的 Bipartite Matching(偶匹配) 求出Part Association,將同一個人的關節點連接起來,由于PAF自身的矢量性,使得生成的偶匹配很正確,最終合并為一個人的整體骨架;
3.最后基于PAFs求Multi-Person Parsing—>把Multi-person parsing問題轉換成graphs問題—>Hungarian Algorithm(匈牙利算法)(匈牙利算法是部圖匹配最常見的算法,該算法的核心就是尋找增廣路徑,它是一種用增廣路徑求二分圖最大匹配的算法。)
三,關鍵點熱圖與矢量圖(heatmap&vectmap):
如,一共有19個關鍵點,就會生成19個通道的熱圖,每一個通道為某個關節的熱圖分布(也就是概率圖)。同時會生成192個通道的矢量圖,為什么是192呢?因為矢量圖分為兩個方向,一個是X方向、一個是Y方向。
heatmap生成關鍵點熱力圖,未在圖內且未標注的關鍵點生成的heatmap所有值都為0。一共19個heatmap,其中最后一個代表背景。
vectormap 向量叉乘,vectormap是heatmap的兩倍為38個(19*2),因為有19條的關鍵點連接線,每一條線使用向量表示,分別有x軸的map,以及y軸的map。
四,coco keypoints 標注 以及tf-openpose的標注的不同