本文主要用于介紹與CMU開源項目OpenPose相關(guān)的論文。本筆記主要為方便初學者快速入門,以及自我回顧。
基本目錄如下:
- 摘要
- 核心思想
- 總結(jié)
------------------第一菇 - 摘要------------------
1.1 論文摘要
我們提出了一種高效的檢測一張圖片中多個人2D姿態(tài)的方法。該方法主要運用了一種非參數(shù)化的表示方法,我們稱之為 PAFs(Part Affinity Fields),去建立一個個體內(nèi)部關(guān)鍵點的關(guān)聯(lián)關(guān)系。而整個框架的設(shè)計是一種貪心自下而上的運行思路,且能夠考慮整體圖片的信息,因此其能夠達到高的實時準確率(當然其時效性和準確率肯定還是跟圖片中人物的個數(shù)有關(guān)系的)。整體的架構(gòu)設(shè)計是通過2個相似的序列化預測框架來一起學習關(guān)鍵點的位置和與其他關(guān)鍵點的關(guān)聯(lián)信息。我們的方法在COCO 2016關(guān)鍵點檢測大賽中獲得了第一名,并且在MPII 多人識別賽上,在時效性和準確率上都遠超過往的成績。
------------------第二菇 - 核心思想------------------
2.1 多人姿態(tài)識別的困難點
多人人體姿態(tài)識別一直是一個難點,其難的地方主要有3個,
1)一張圖片中人的個數(shù)是未知的,且會以任何一種尺度出現(xiàn)在任何一種位置上。
2)人與人之間經(jīng)常會出現(xiàn)遮擋等行為,導致識別出來的關(guān)鍵點在一個個體上建立起聯(lián)系會很困難。
3)姿態(tài)識別的算法運行時間復雜度是個大問題,且跟人的個數(shù)有強關(guān)聯(lián)關(guān)系,因此很難做到實時預測。
最普遍的一種做法就是自上而下的思路,先將一副圖中的人物都框出來,然后再在一個人體框內(nèi)進行關(guān)鍵點的識別。但是這種思路有個先天的不足(且不論時間會隨著人的個數(shù)增加而增加),那就是,一旦人體框沒有識別出來,那這個人身上的關(guān)鍵點就不能識別出來了。并且,這種思路還有個缺陷就是沒有利用到全局信息(比如,人與人之間的接觸,遮擋等)。這也是本文,嘗試一種新的自下而上思路的出發(fā)點。
2.2 架構(gòu)思路
直接上一張總的流程圖,

簡單來講整個框架就是對一張圖片的輸入處理有2個分支,第一個分支是提取關(guān)鍵點的,第二個分支是提取位置相同場(Part Affinity Fields)的,然后再根據(jù)前倆個輸出的,通過某種匹配算法生成每一個個體的關(guān)鍵點,接下來我們逐一來看每一個步驟。
2.2.1 Confidence Maps for Part Detection
我們先理解一下,如何生成關(guān)鍵點的訓練置信圖。
我們拿到的標注數(shù)據(jù)其實就是每一個關(guān)鍵點在圖上的2維坐標。那其實我們要生成的標注就是圖像上每一個像素點可能是某一個關(guān)鍵點的置信度,因此也是一個2維向量。具體的生成過程是,
我們首先針對每一個人都生成一張獨立的置信圖
,假設(shè)
是第
個人身上的第
個關(guān)鍵點,那么對于位置
來說,該點對于第
人為第
個關(guān)鍵點的置信度就是,
生成每一個單獨的置信圖后,我們再合并(取極大值)所有人的結(jié)果,最終生成一張圖上的關(guān)鍵點置信圖,
而這里作者沒有取均值,而是取極大值的操作,可以解釋為是為了讓處于峰值的更為突出明顯,而不是被平滑掉~(We take the maximum of the confidence maps instead of the average so that the precision of close by peaks remains distinct),其示意圖如下,

至此,關(guān)鍵點檢測的置信圖生成算是解釋清楚了。
2.2.2 Part Affinity Fields for Part Association
上面講了,我們已經(jīng)有了所有關(guān)鍵點的檢測位置,我們現(xiàn)在還缺的就是如何將這些關(guān)鍵點連起來,即建立關(guān)聯(lián)。PAFs就是去描繪關(guān)鍵點之間關(guān)聯(lián)關(guān)系的一種特征表達方式。
這里先明確一個概念,我們稱之為,其實就是每倆個關(guān)鍵點之間的連接區(qū)域,如下圖所示,

現(xiàn)在我們來考慮一下單個的,如下圖所示,

假設(shè)上面,
就是第k個人的2個關(guān)鍵點
,那么如果點
在該
內(nèi),那就是一個單位向量的值了,而如果不在,那就是0,因此,我們在生成訓練數(shù)據(jù)GT的時候,我們就定義,

其中,
然后對于點是否在該
定義如下,

(。。。公式打得太麻煩了,直接截圖了~比較簡單好理解,直接過了~)
在測試階段會比較麻煩,對于我們預測出來的關(guān)鍵點,我們都會去給倆個關(guān)鍵點的關(guān)聯(lián)關(guān)系打分,而打分的依據(jù)就是關(guān)鍵點之間的區(qū)域中我們預測出來的PAFs的置信圖(In practice, we approximate the integral by sampling and summing uniformly-spaced values of u),比如現(xiàn)在要預測
,計算的公式如下,

至此,PAFs這一塊的訓練數(shù)據(jù)GT的生成和預測的打分公式算是講明白了。
2.2.1 Simultaneous Detection and Association
本段我們再來看一下,整體的網(wǎng)絡(luò)設(shè)計框架是如何來預測和訓練上面講的關(guān)鍵點檢測和PAFs的。本質(zhì)上來說仍然沿用了CPM那一套框架,只不過這一次新增了一個分支,用于PAFs的預測,整體的特征提取階段的架構(gòu)圖如下所示,

在第一階段,我們會預測目標關(guān)鍵點的置信圖和PAF(這倆個概念如上文所述),
然后在后續(xù)階段迭代式預測中,就是把上一階段的輸出和圖片的特征一起輸入,表示為,
這里也貼一張原論文中的圖,用以表示序列化框架下,每一個階段都會比上一階段預測的更好的示意圖,

而損失函數(shù)也十分簡單,每一個階段的損失函數(shù)表示如下,

那么總的損失函數(shù)就是,
接下來,我們就去深入理解一下,如何利用預測出來的PAFs最終來生成每一個人的人體關(guān)鍵點。
2.2.4 Multi-Person Parsing using PAFs
這一塊應該就是整篇文章最難的點了,需要一點算法基礎(chǔ),最好是對圖算法略知一二,不然看懂會有點吃力。先上一張示意圖,以備后用。

關(guān)鍵點都檢測出來以后,我們可以通過非極大值抑制來獲得每一個預測關(guān)鍵點的潛在候選位置(candidates locations)。對于每一個關(guān)鍵點來說,我們都有很多個候選位置,如上圖所示,藍色的手腕,綠色的手肘,紅色肩部。這些候選的區(qū)域位置點能夠生成多種潛在的
,當然上面我們也說了,對于每一個
我們都會有一個打分。因此,這其實就是一個k維的最優(yōu)匹配問題,如上圖
所示,也是一個NP-Hard問題。。。而作者解題的思路就是利用了greedy relaxation(不好翻譯,大家意會一下應該能明白)的思想。
言歸正傳,我們首先會獲取到一系列的預測的關(guān)鍵點(多個人的)表示為,
其中就是第
個關(guān)鍵點的所有潛在位置,
就是關(guān)鍵點
的第
個潛在位置點坐標。而我們要做的事情,其實就是把一個屬于一個人體的關(guān)鍵點都建立起聯(lián)系,或者說白了,就是把通過limb建立聯(lián)系的關(guān)鍵點,通過某種匹配算法,最終只保留那個屬于一個人體的連接配對。
這里再定義一個變量,用來表示所有的配對關(guān)系,,
其中的取值范圍就是0和1.
這里分2種情況來討論,第一種情況比較簡單,
1)我們先來考慮單一配對的情況。這里單一配對的意思就是關(guān)鍵點的兩兩配對,比如要連線所有的手腕潛在關(guān)鍵點和所有的手肘潛在關(guān)鍵點(意思就是把一個人的手腕和手肘準確連接,且不與其他人的連接)。而我們已知的就是,每一個手腕關(guān)鍵點和每一個手肘關(guān)鍵點的連線權(quán)值(其實就是的分值),因此問題就很容易被轉(zhuǎn)為加權(quán)二分圖匹配最大化的優(yōu)化問題(如上圖b所示)。因此,其實用公式描述整個優(yōu)化問題就是,


其中就是對某一個
類型的總的置信度,而整個問題的求解用的是匈牙利算法(Hungarian algorithm,不懂的同學自行谷歌學習把)。
2)解決了單一配對情況的問題,接下來就要解決全局配對的問題,意思就是要把全身上下的關(guān)鍵點都連起來。顯然這是一個巨復雜的NP-Hard問題,沒關(guān)系,在當前的應用場景下,我們可以做很多假設(shè)來增加relaxations。作者主要增加了2個,
we choose a minimal number of edges to obtain a spanning tree skeleton of human pose rather than using the complete graph
we further decompose the matching problem into a set of bipartite matching subproblems and determine the matching in adjacent tree nodes independently
簡單理解一下,就是用最少數(shù)量的邊來獲得人體姿態(tài)的生成樹骨架而不是用完整圖(如上圖c所示),其次,將全局匹配問題轉(zhuǎn)為一組組二分圖匹配的子問題(如上圖d所示),并獨立確定相鄰樹節(jié)點中的匹配問題(用上面第一種情況的解法),因此,最終總的優(yōu)化目標公式就是,

至此,整一套本文提出的多人體關(guān)鍵點預測的算法框架算是講明白了。其中涉及的細節(jié)真的是好多啊~上面講的幾乎是把整篇論文都要翻譯理解一遍了哈哈哈~其他的實驗過程訓練細節(jié)就不多說了,直接上一張最后的效果大圖用于本文壓軸。

------------------第三菇 - 總結(jié)------------------
3.1 總結(jié)
到這里,整篇論文的核心思想已經(jīng)說清楚了。本論文主要是在CPM的基礎(chǔ)上進一步優(yōu)化,新增了PAFs這一基礎(chǔ)概念和相對應的匹配算法,用于多人的關(guān)鍵點實時檢測,并實驗證明了其可行性,為后續(xù)發(fā)展奠定了基礎(chǔ)
簡單總結(jié)一下本文就是先羅列了一下該論文的摘要,再具體介紹了一下本文作者的思路,也簡單表述了一下,自己對整個網(wǎng)絡(luò)架構(gòu),尤其是PAFs和后續(xù)匹配算法的理解。希望大家讀完本文后能進一步加深對該論文的理解。有說的不對的地方也請大家指出,多多交流,大家一起進步~??