【CV論文筆記】Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields(OpenPose相關(guān))

本文主要用于介紹與CMU開源項目OpenPose相關(guān)的論文。本筆記主要為方便初學者快速入門,以及自我回顧。

論文鏈接:http://openaccess.thecvf.com/content_cvpr_2017/papers/Cao_Realtime_Multi-Person_2D_CVPR_2017_paper.pdf

基本目錄如下:

  1. 摘要
  2. 核心思想
  3. 總結(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)思路

直接上一張總的流程圖,

流程圖.jpg

簡單來講整個框架就是對一張圖片的輸入處理有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維向量。具體的生成過程是,

我們首先針對每一個人k都生成一張獨立的置信圖S^*_{j,k},假設(shè)x_{j,k} \in R^2是第k個人身上的第j個關(guān)鍵點,那么對于位置p來說,該點對于第k人為第j個關(guān)鍵點的置信度就是,

S^*_{j,k}(p) = exp (- \frac{||p - x_{j,k}||^2_2}{\sigma^2})

生成每一個單獨的置信圖后,我們再合并(取極大值)所有人的結(jié)果,最終生成一張圖上的關(guān)鍵點置信圖,

S^*_{j}(p) = max_kS^*_{j,k}(p)

而這里作者沒有取均值,而是取極大值的操作,可以解釋為是為了讓處于峰值的更為突出明顯,而不是被平滑掉~(We take the maximum of the confidence maps instead of the average so that the precision of close by peaks remains distinct),其示意圖如下,

平滑示意圖.jpg

至此,關(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)系的一種特征表達方式。

這里先明確一個概念,我們稱之為limb,其實就是每倆個關(guān)鍵點之間的連接區(qū)域,如下圖所示,

關(guān)鍵點區(qū)域連接示意圖.jpg

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

單個limb示意圖.jpg

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

PAFs值定義.jpg

其中,

v = \frac{x_{j_2, k} - x_{j_1, k}}{||x_{j_2,k} - x_{j_1,k}||}

然后對于點p是否在該limb定義如下,

計算公式截圖.jpg

(。。。公式打得太麻煩了,直接截圖了~比較簡單好理解,直接過了~)

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

PAFs預測打分公式.jpg

至此,PAFs這一塊的訓練數(shù)據(jù)GT的生成和預測的打分公式算是講明白了。

2.2.1 Simultaneous Detection and Association

本段我們再來看一下,整體的網(wǎng)絡(luò)設(shè)計框架是如何來預測和訓練上面講的關(guān)鍵點檢測和PAFs的。本質(zhì)上來說仍然沿用了CPM那一套框架,只不過這一次新增了一個分支,用于PAFs的預測,整體的特征提取階段的架構(gòu)圖如下所示,

網(wǎng)絡(luò)架構(gòu)圖.jpg

在第一階段,我們會預測目標關(guān)鍵點的置信圖和PAF(這倆個概念如上文所述),

S^1 = \rho^1(F)

L^1 = \phi^1(F)

然后在后續(xù)階段迭代式預測中,就是把上一階段的輸出和圖片的特征一起輸入,表示為,

S^t = \rho^t(F, S^{t-1}, L^{t-1}), \forall \geqslant 2

L^t = \phi^t(F, S^{t-1}, L^{t-1}), \forall \geqslant 2

這里也貼一張原論文中的圖,用以表示序列化框架下,每一個階段都會比上一階段預測的更好的示意圖,

特征強化示意圖.jpg

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

損失函數(shù).jpg

那么總的損失函數(shù)就是,

f = \sum^{T}_{t = 1}(f^t_{S} + f^t_{L})

接下來,我們就去深入理解一下,如何利用預測出來的PAFs最終來生成每一個人的人體關(guān)鍵點。

2.2.4 Multi-Person Parsing using PAFs

這一塊應該就是整篇文章最難的點了,需要一點算法基礎(chǔ),最好是對圖算法略知一二,不然看懂會有點吃力。先上一張示意圖,以備后用。

匹配示意圖.jpg

關(guān)鍵點都檢測出來以后,我們可以通過非極大值抑制來獲得每一個預測關(guān)鍵點的潛在候選位置(candidates locations)。對于每一個關(guān)鍵點來說,我們都有很多個候選位置,如上圖a所示,藍色的手腕,綠色的手肘,紅色肩部。這些候選的區(qū)域位置點能夠生成多種潛在的limb,當然上面我們也說了,對于每一個limb我們都會有一個打分。因此,這其實就是一個k維的最優(yōu)匹配問題,如上圖b所示,也是一個NP-Hard問題。。。而作者解題的思路就是利用了greedy relaxation(不好翻譯,大家意會一下應該能明白)的思想。

言歸正傳,我們首先會獲取到一系列的預測的關(guān)鍵點(多個人的)表示為,

D_J = \{d^m_j\ : for \ j \in \{1 ... J\}, m \in \{1 ... N_j\}\}

其中N_j就是第j個關(guān)鍵點的所有潛在位置,d^m_j就是關(guān)鍵點j的第m個潛在位置點坐標。而我們要做的事情,其實就是把一個屬于一個人體的關(guān)鍵點都建立起聯(lián)系,或者說白了,就是把通過limb建立聯(lián)系的關(guān)鍵點,通過某種匹配算法,最終只保留那個屬于一個人體的連接配對。

這里再定義一個變量,用來表示所有的配對關(guān)系,Z

Z = \{z^{mn}_{j_1, j_2} : for \ j_1, j_2 \in \{1 ... J\}, m \in \{1 ... N_{j1}\}, n \in \{1 ... N_{j2}\} \}

其中z^{mn}_{j_1, j_2}的取值范圍就是0和1.

這里分2種情況來討論,第一種情況比較簡單,

1)我們先來考慮單一配對的情況。這里單一配對的意思就是關(guān)鍵點的兩兩配對,比如要連線所有的手腕潛在關(guān)鍵點和所有的手肘潛在關(guān)鍵點(意思就是把一個人的手腕和手肘準確連接,且不與其他人的連接)。而我們已知的就是,每一個手腕關(guān)鍵點和每一個手肘關(guān)鍵點的連線權(quán)值(其實就是limb的分值),因此問題就很容易被轉(zhuǎn)為加權(quán)二分圖匹配最大化的優(yōu)化問題(如上圖b所示)。因此,其實用公式描述整個優(yōu)化問題就是,

最優(yōu)化目標公式1.jpg
最優(yōu)化目標公式2.jpg

其中E_c就是對某一個limb類型的總的置信度,而整個問題的求解用的是匈牙利算法(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)化目標公式就是,

最優(yōu)化目標公式3.jpg

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

效果圖展示.jpg

------------------第三菇 - 總結(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ù)匹配算法的理解。希望大家讀完本文后能進一步加深對該論文的理解。有說的不對的地方也請大家指出,多多交流,大家一起進步~??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容