Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields解讀

摘要

我們的方法,能夠有效的檢測一個圖像中的多人。通過Part Affinity Fields來學習身體的各部分及關聯性,利用全局紋理信息,自下而上的方法,達到實時性和高精度。通過兩個分支來學習到部位的位置和關聯性。

引言

一張圖中的多人pose的難點:

1. 不知道一幅圖有多少人,他們會存在不同的位置和不同的scale。

2. 人與人之間存在接觸、遮擋、切斷等複雜的空間干擾。

3. 多人時,會存在時間複雜度的問題

注:提到多人Pose的難點,這些是很多問題,都存在的問題。檢測也是相同的問題,proposal過多,也會造成時間複雜度,不過一階段能部分解決這問題,那麼它會不會也是這麼解決的呢?

自頂向下的單人pose估計,當人的檢測器失敗後,無法做下一步了,另外時間複雜度會隨着人數的增加而增加。因此自底向上的方法能夠解耦這樣問題

注:這個問題很普遍,但凡涉及pipeline的問題,都會有這個問題,比如人臉Landmark,是先檢測人臉,還是直接回歸landmark,3D box是先回歸2D box還是直接回歸3D box。

並不是多個pipeline不好,而是端到端的方法,是否能夠訓練的好。難點不在於到底是選擇自上而下,還是自下而上,而是哪種你能夠達到你的性能。很多問題端到端的訓練剛開始並不能得到好的效果,以新穎性出現,後面逐步發展成成熟的方向。

這個就是告訴我們,不能把我們所理解到的經驗,當成絕對的經驗,輕易否定別人的想法。要深入理解其它的利與弊,跟上時代的發展。

看着沒什麼感覺,你仔細想想工作中的討論,是不是很多人說,這個不可能,那個怎麼不可能呢。

發論文時,會強調它的優點,實際上,它們也是有自己難點,這些要在看論文中,作重點關注的,而不是隻關注其網絡長什麼樣子,不然會被他牽着走,缺少深入思考。

自底向上的方法,不直接使用身體其它部位和其它人的全局的信息。實際上,早期的論文,並不有有效的解決這些問題。比如Pishchulin等人,並沒有解決全連接圖的NP問題,導致平均處理時間,以小時爲階了。Insafutdinov使用ResNet和pairwise scores極大的解決了時間問題,但還是需要數分鐘。等等

注:作者提到了自底向上的問題,畢竟這不是他開創的。所以能看到作者主要解決這個問題。當然我們要注意它自己也有它的問題,這個是要發paper必備的思維方式。這個也是我們瞭解一個領域的方式。

在這篇論文中,作者開創PAFs方法,通過編碼肢體的位置和方向信息的2D vector fields,來解決多人pose的問題。我們證明了,通過自底向上,也能夠達到實時性和高質量的結果。

方法

圖1

用S表示每個關節點的confidence maps,L表示2D vector fields。如上圖所示,就很容易明白它們是什麼意思了。從b圖可以看出,同一個類別出現在同一個map中,左右是不同的類別。

Simultaneous Detection and Association

圖2

其中F爲由VGG-19前10層組成的feature maps集合,然後進入多階段的網絡。第二階段時,可以看到這個F與第一階段的S、L集合,F集合都會concat在一起,送往到下一個階段。同時爲了更好的學習S和F,每個階段會都有loss。

爲了解決有些數據集並沒有對所有人,都有複雜的label,我們使用加權的方式,即:

其中p爲圖像中的位置,W爲二值mask,*表示ground truth。這個W避免訓練時懲罰正樣本。所以這裏的W是針對不同數據集,預先設計好的。

注:網絡結構很好理解,不用說了,這個數據集到底有什麼特點呢,有點好奇,後面會注意看下,想想能不能不同數據集一起訓練的方法

Confidence Maps for Part Detection

爲了計算f_S,我們先產生對應S*的ground truth。理想的情況下,針對一個部位,如果是單人,只有一個單峯在confidence map中,多人,則有多個峯值。

針對每一個body part,通過以下式子,得到confidence map ground truth:

如果存在多個body part,那麼就會有疊加,選取值最大的那個。採用最大值,而不是平均,是爲了保證每個峯的精度。

注:這種方法,很多論文中都有,比如[1]

在測試時,通過non-maximum suppression進行處理。

注:NMS,不僅僅針對bbox,很多地方也用到了,比如fast角點檢測中,大家可以查下相關博客就能夠明白了。non-maximum suppression的中文是非極大值抑制,字面的意思是,把非極大值給抑制住,實際操作就是在一定範圍的鄰域內的,只保留一個最大值,比如有兩個峯值是挨着的,那麼只取一個就可以,取那個最大值的那個。

Part Affinity Fields for Part Association

怎麼樣才能在不確定有多少人中,建立full-body pose呢?我們需要每對body part建立關聯的測度量,讓它們屬於一個人。一種可能的方法是每個part建立一箇中心點,然後用這個中心點之間,建立關聯。但這樣在擁擠的人羣中,容易產生錯誤的連結。

圖3

而導致錯誤的連結,是由於:

1. 針對肢體,只有位置編碼,並有方向編碼

2. 一個區域,只有一個肢體的中心單點

注:在這裏,第1點很容易理解,那麼第2點又是如何理解的呢?一個節點難度不應該只有一箇中心單點嗎,那麼如果不是中心單點,那麼應該怎麼做,才能夠解決連結問題。難道是想利用每個節點的所有圖像紋理信息嗎?如果是我,應該怎麼做呢?

從圖1(c)中,很明顯,如果除中心點外,其它的點,距離最近,置信度會更高,同時用上所有人體上的像素點。

爲了解決這些問題,作者提出了PAFs,既有位置,也有方向。從單節點去思考起,

圖4

如果身體上的像素點,屬於limb c,那麼這個點的向量值爲v,否則爲0。圖中k爲person序號,j爲節點序號,v爲單位向量。

注:這個符合我們之前的猜想,那麼就有一個問題,如果p爲身體上的每個像素點,都要標註就麻煩了。個人覺得給個大概範圍就可以了,那麼如何定義了,直接在兩個節點之間取個矩形框就可以了,是不是的,看下作者有什麼更好的妙招嗎?。

注:這個式子的含義很明顯了,將p與x的組成的向量,在v和v_\perp上的投影的長度值了限制,就是把我所表示的意思,數學化了

如果出現多人,那麼就求個平均值

上式中的n_c(p)是點p穿過多人時,非零向量的的個數,這個值與人數有關。即在不同人的節點覆蓋的地方,採用平均值。

注:爲什麼要採用平均值呢,爲什麼不像position那樣採用最大值呢?位置採用非極大值抑制,實際上,如果不同人的兩個點完全重合,從原理上,應該會出現問題?那如何解呢,要是我,我會公用這個點,這個點即可以是這個人的,也可以是那個人的,那麼用NMS也不會有什麼問題,只需要控制鄰域半徑即可。

從後面的失敗例子來看,一個結點,只能給一個人使用,那麼就會被NMS給抑制住了。

那麼方向呢?取平均值,意味着,重疊的地方,方向因疊加而減小方向性,有了信息損失,那麼得不償失呀,這是不是一個改進點呢?我們接着往下看

在測試階段,通過沿着不同的候選結點之間,計算PAF的線積分,得到結點之間的聯繫性

其中,兩個d爲兩個候選結點,將方向單位化。而p爲兩個結點連線上的點

注:這個方法,解決了我上面的疑問,繼續有覆蓋,或被一分爲二,那麼通過積分,得到更可靠的關係。是不是解決了所有的情況呢,如果被一分爲二,同時遮擋的很多,且丟失一個結點的情況下,可能會存在連不上的情況,但也說不定,說不定可以通過訓練學習到這種特點,而從方法設計上,讓它更容易學習到這種特性。

Multi-Person Parsing using PAFs

通過在confidence maps上做NMS,得到了候選結點集合。這裏面涉及K維的NP-Hard問題,針對這個問題,採用了配對的方式,得到高質量的匹配關係,同時也隱含着全局的信息,更大的感受野。

圖5

注:爲了解決NP-Hard問題,作者採用d的形式,爲什麼可以呢,由於人體骨架結點,都是有父結點的,所以完全可以在分類的基礎上,做二對搜索,即d。如果採用了這種方法,間接的將兩都聯繫起來了,同一個人的能量越高,不同人的能量越低,這樣就非常有效利用了全局信息,不同人之間,在圖像層面距離會比較遠,那麼就有了更大的感受野,所以在網絡設計上,應該會有所考量。

如果存在有些結點被遮擋了,會導致二對搜索匹配錯誤的情況

 

其中,D爲不同類型結點的集合,m,n爲兩個不同類型結點的集合的序號,E_m_n爲兩者之間線積分能量,Z是待優化的變量,指是權重,這裏作者使用匈牙利算法。

注:匈牙利算法是解決最大匹配問題的最經典的方法,配製對不多的情況,效率會非常高。這種算法的應用,很多地方用到過。比如在檢測+跟蹤的方法中,會用到,見論文[2,3,4]。給定一個閾值,輸出的是配對結果,即上式中的z爲0或1。

作者是如何解決NP問題的呢,首先,通過人體的樹形骨架來簡化NP問題,其次,每兩個結點之間做匹配,這樣就拆成很多子問題來解決,這樣得到最佳的時間複雜度。爲什麼它能夠得到全局最優解呢,是因爲樹形結點關係,顯示的包括還PAFs中了,另外,非連結的結點的關係,隱含在CNN的模型訓練當中了。這能很好的融合,是因爲CNN使用很大的感受野進行訓練的。

有了兩兩結點之間的關係,我們就可以得到整體的優化方程

結果

我們使用兩個多人數據集,進行評測我們的方法。一個是MPII,另一個是COCO2016關鍵點挑戰賽數據集。這兩個數據集,包含了不同的有挑戰的場景,比如擁擠、尺度、遮擋和關聯。

Results on the MPII Multi-Person Dataset

使用tookit工具包,基於PCKh閾值來計算mAP。在MPII中,沒有使用scale search技巧進行測試,也已經是最好的性能了,如果使用3個scale search,那麼性能會提高到75.6%

注:scale search是將圖像做多個尺度後,得到模型的heap和PAFs進行平均。

Results on the COCO Keypoints Challenge
 

作者說明,他們的方法,在小尺度上效果沒別人的好,原因是基於單個人,可以把人resize到相同尺度,能夠有效降低誤識別。但他們的是在一個圖中,無法做到這樣,所以在小尺度上,相對會差些。如果針對單人,使用rescale的CPM,在他們的結果上,進行refine,會有2.6%的提升。

大多數的假陽,來自於定位的不精確,並不是背景。這表示,要捕獲更多的空間信息,要比紋理的識別,更有改進的空間。

失敗的例子

(a)是人倒過來了,少有的pose

(b)是少了頭部結點,因爲沒有頭部紋理信息了

(c)是存在同一類別結點重疊情況,被NMS給抑制了

(d)由於遮擋丟失了結點信息,在二匹配階段造成錯誤,同時也有同一類別結點重疊的情況

參考論文

[1] Liu W, Liao S, Ren W, et al. High-level semantic feature detection: A new perspective for pedestrian detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 5187-5196.

[2] Bewley A, Ge Z, Ott L, et al. Simple online and realtime tracking[C]//2016 IEEE International Conference on Image Processing (ICIP). IEEE, 2016: 3464-3468.

[3]Wojke N, Bewley A, Paulus D. Simple online and realtime tracking with a deep association metric[C]//2017 IEEE international conference on image processing (ICIP). IEEE, 2017: 3645-3649.

[4]Zervos M. Real time multi-object tracking using multiple cameras[R]. 2012.

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章