感謝此博文(https://blog.csdn.net/TwT520Ly/article/details/79258594)的翻譯,參考了該博文的很多內容,在他的基礎上做了更加細節的補充和總結:
上海交通大學AlphaPose多人姿態估計論文
RMPE:Regional Multi-Person Pose Estimation
該論文自頂向下方法,SSD-512檢測人+stacked hourglass姿態估計。復雜環境中的多人姿態檢測是非常具有挑戰性的。現在最好的人體檢測算法雖然已經得到了很好的效果,但是依然存在一些錯誤,這些錯誤會導致單人檢測任務(SPPE)失敗,尤其是那些十分依賴人體框檢測結果的。這里應該是描述的自頂向下的檢測技術,使用Faster-RCNN等算法進行目標檢測(與之對應的有CPM等)。目前該算法得到了在MPII數據集上最高的mAP值。這個算法是由三部分組成的:
1 Symmetric Spatial Transformer Network – SSTN 對稱空間變換網絡:在不准確的bounding box中提取單人區域
2 Parametric Pose Non-Maximum-Suppression – NMS 參數化姿態非最大抑制:解決冗余
3 Pose-Guided Proposals Generator – PGPG 姿態引導區域框生成器:增強訓練數據
該方法能夠處理不准確的bounding box(邊界框)和冗余檢測,在MPII數據集上達到76.7mAP.
一、 介紹
多人姿態估計有兩個主流方案:Two-step framework & Part-based framework。第一種方案是檢測環境中的每一個人體檢測框,然后獨立地去檢測每一個人體區域的姿態(自頂向下的方法)。第二種方案是首先檢測出環境中的所有肢體節點,然后進行拼接得到多人的骨架(自底向上的方法)。第一種方案,姿態檢測准確度高度以來目標區域框檢測的質量。第二種方案,如果兩人離得十分近,容易出現模棱兩可的情況,而且由於是依賴兩個部件之間的關系,所以失去了對全局的信息獲取。
論文采用自頂向下方法。我們的目標是檢測出正確的人體姿態即使在第一步中檢測到的是不精准的區域框。為了說明之前的算法存在這些問題,我們使用Faster-RCNN和SPPE Stacked Hourglass進行實驗,主要的問題是位置識別錯誤和識別冗余,如圖1和圖2所示。事實上,SPPE對於區域框錯誤是非常脆弱的,即使是使用IoU>0.5的邊界框認為是正確的,檢測到的人體姿態依然可能是錯誤的。冗余的區域框會產生冗余的姿態。
冗余:兩個bounding box框住同一個人,會檢測兩遍,形成兩個骨架
因此,提出了RMPE(區域多人姿態檢測)框架,提升SPPE-based性能。在SPPE結構上添加SSTN,能夠在不精准的區域框中提取到高質量的人體區域。並行的SPPE分支(SSTN)來優化自身網絡。使用parametric pose NMS來解決冗余檢測問題,在該結構中,使用了自創的姿態距離度量方案比較姿態之間的相似度。用數據驅動的方法優化姿態距離參數。最后我們使用PGPG來強化訓練數據,通過學習輸出結果中不同姿態的描述信息,來模仿人體區域框的生成過程,進一步產生一個更大的訓練集。
我們的RMPE框架是通用的,適用於不同的人體探測器和單人姿勢估計器。將RMPE框架應用於MPII(多人)數據集[3],達到state-of-the-art效果76.7 mAP。我們還進行了切除研究,以驗證我們框架中每個組件的有效性。
二、 相關工作
2.1 單人姿態估計
……單人姿態估計總是需要保證人被正確的定位。
2.2 多人姿態估計
Part-Base 先檢測關鍵點,再連接;先檢測肢體
Two-Step 目標檢測+單人姿態估計
三、 RMPE
如圖3所示。首先通過目標檢測算法,得到人體的區域框。然后將該區域框輸入到STN+SPPE模塊中,自動檢測人體姿態。再通過PP-NMS進行refine。在訓練過程中,使用Parallel SPPE來避免局部最優並進一步提升SSTN的效果。設計PGPG結構來增強已有的訓練集。
圖解:SSTN=STN+SPPE+SDTN,STN處理區域框,SPPE單人姿態估計,STDN產生姿態建議。並行SPPE作為訓練階段的額外正則化。PP-NMS去除冗余姿態。使用PGPG產生的增強圖像來訓練SSTN+SPPE。
3.1 Symmetric STN and Parallel SPPE
對稱空間變換網絡,並行單人姿態估計
目標檢測算法得到的人體區域框不是非常適合SPPE,因為SPPE算法是訓練在單人圖像上並且對於定位錯誤十分敏感。通過微小變換、修剪的方法可以有效的提高SPPE的效果。SSTN+Parallel SPPE可以在不完美的人體區域檢測結果下有效的增強SPPE的效果,結構如圖4所示。
圖解:表示了SSTN + Parallel SPPE模塊的結構,SDTN結構接收一個由定位網絡生成的參數θ,然后為反向轉換計算參數γ。我們使用網格生成器和采樣器去提取一個人的所在區域,在Parallel SPPE中,制定一個中心定位姿態標簽。我們凍結Parallel SPPE的所有層的所有權重來增強STN去提取一個單人姿態區域。
STN and SDTN(spatial de-transformer network,空間反變換網絡)。STN能很好地自動選取ROI,使用STN去提取一個高質量的人體區域框。數學形式如下,2D affine transformation:
其中θ1,θ2和θ3都是二維空間的向量,{xsi,ysi}和{xti,yti}分別表示轉換之前的坐標和轉換之后的坐標。在SPPE結束的時候,姿態結果會被映射到原始的人體區域框中(就是把姿態線繪制到對應的人體區域框中)。因此,SDTN應該將估計的人體姿態反映射回原圖坐標中(這樣子的話人體姿態線就會存在於原圖尺寸的圖像中)。SDTN中需要為反向轉換和生成網格計算一個γ:
因為SDTN是STN結構的反向結構,所以可以得到以下關系:
為了在SDTN中進行反向傳播,∂J(W,b)/∂θ可以分解為:
在得到高質量的人體檢測框后,可以使用現成的SPPE算法來繼續高精度的人體姿態檢測,在訓練過程中,SSTN和SPPE一起進行fine-tuned。
總結:不准確的檢測框經過STN+SPPE+SDTN,先做姿態估計,把估計結果映射到原圖,以此來調整原本的框,使框變成精准的。
Parallel SPPE。為了進一步幫助STN去提取更好的人體區域位置,在訓練階段添加了一個Parallel SPPE分支。這個Paralell SPPE也是從STN中鏈接出來,然后和SPPE並行處理,但是SDTN被忽略掉。這個分支的人體姿態標簽被指定為中心。更准確的說,SPPE網絡的輸出直接和人體姿態標簽的真實值進行對比。在訓練過程中會關閉Parallel SPPE的所有層。這個分支的權重是固定的,其目的是將姿態定位后產生的誤差反向傳播到STN模塊。如果STN提取的姿態不是中心位置,那么Parallel SPPE會返回一個較大的誤差。通過這種方式,我們可以幫助STN聚焦在正確的中心位置並提取出高質量的區域位置。在測試階段,Parallel SPPE不會使用,因此只有在訓練階段Parallel SPPE才會產生作用。
Discussions。Parallel SPPE可以看作是訓練階段的正則化過程,有助於避免局部最優的情況(STN不能把姿態轉換到提取到人體區域框的居中位置)。但是SDTN的反向修正可以減少網絡的錯誤進而降低陷入局部最優的可能性。這些錯誤對於訓練STN是很有影響的。通過Parallel SPPE,可以提高STN將人體姿態移動到檢測框中間的能力。
感覺上似乎可以在SPPE的輸出時添加一個中心定位點的回歸損失來取代Parallel SPPE。然而,這種方法會降低我們整個系統的性能。盡管STN可以部分修改輸入,但是不可能完美的將人定位在標簽的位置。在坐標空間上的輸入和SPPE標注的差異會很大程度的損害訓練姿態估計的能力。這會導致我們主分支SPPE的性能下降。因此,為了確保STN和SPPE同時發揮自己的作用,一個固定權重的Parallel SPPE是不可缺少的。Parallel SPPE總是會產生較大的誤差因為會將沒有中心的姿態來推動STN產生一個有中心的姿態,但是不會影響到主分支SPPE的效果。
3.2. Parametric Pose NMS 參數化姿態非最大抑制
人體定位不可避免的會產生冗余的檢測框,同時也會產生冗余的姿態檢測。所以,姿態非極大值抑制是十分有必要的,用來消除冗余。以前的方法要么效率不高,要么精確度不高。在論文中,提出了一種parametric pose NMS(參數化姿態非極大值抑制)方法。對於一個人的姿態Pi,有m 個關節點記做{(k1i,c1i),(k2i,c2i),...,(kmi,cmi)},kji 和 cji 分別表示第 j 個部位的坐標位置和置信度分數。
NMS schema。NMS體系。回顧一下NMS:首先選取最大置信度的姿態作為參考,並且根據消除標准將靠近該參考的區域框進行消除。這個過程多次重復直到冗余的識別框被消除並且每一個識別框都是唯一的出現(沒有超過閾值的重疊)。
Elimination Criterion。消去法則。 我們需要定義姿態相似度來消除那些離得較近且比較相似的姿態。我們定義了一種姿態距離度量d(Pi,Pj|Λ)來衡量姿態之間的相似度,定義η作為消除標准的閾值,在這里的Λ表示函數d(⋅)的一個參數集合。我們的消除標准可以定義為下面的形式:
如果d(⋅)小於閾值η,那么f(⋅)的輸出是1,表示姿態Pi應該被消除,因為對於參考的Pj來說Pi是冗余的。
Pose Distance。姿態距離。定義距離函數dpose(Pi,Pj)。假設姿態Pi的區域框是Bi。然后我們定義一個軟匹配函數:
B(kni)表示部位i的區域位置,維度上大約是整體圖像的1/10。Tanh可以濾掉低置信度的姿態,當兩個姿態的置信度都比較高的時候,上述函數的輸出接近1。這個距離表示了姿態之間不同部位的匹配數。空間距離可以定義為:
因此最終距離可以定義為:
其中λ是一個權重系數,來平衡這兩種距離,Λ表示{σ1,σ2,λ},參考之前的pose NMS進行參數設置。
Optimization 。優化。給定檢測到的冗余姿態,消除標准f(Pi,Pj|Λ, η)的這四個參數被優化以實現驗證集的最大mAP。由於在4D空間中的窮舉搜索是難以處理的,所以在迭代的過程中,固定兩個參數變化另外兩個參數進行搜索最優解。一旦收斂,這些參數將會固定,並用在測試階段。
3.3. Pose-guided Proposals Generator 姿態引導的區域框生成器
Data Augmentation 數據增強
對於Two-Stage姿態識別(首先定位區域,然后進行姿態點定位),適當的數據增強有助於讓SSTN+SPPE適應不完美的人體區域定位結果。否則,模型在測試階段運行時可能不是很適應奇怪的人體定位結果。一種直觀的方法是在訓練階段使用檢測出來的區域框。然而,目標檢測對於一個人而言只會產生一個定位區域。通過使用生成的人體定位,可以產生一定得效果。因為我們已經有了每一個人的真實位置和檢測出來的定位框,我們可以通過與人體檢測結果一致的樣本生成一個大樣本的訓練集。通過這種技術,我們可以進一步提高系統的性能。
Insight
我們尋找對於不同姿態之間真實值和實際預測值的相對偏移量的分布。為了進一步明確過程,這里定義P(δB|P),δB表示檢測到的人體位置的坐標和實際人體的標注坐標之間的偏移量,P是真實情況中一個人。我們可以根據目標檢測得到的推薦位置生成一些訓練集。
Implementation
直接學習P(δB|P)對於易變的人體姿態是比較困難的。因此我們使用P(δB|atom(P)),atom(P)表示P的原子組成部分(P是一個姿態,包含多個關節點)。為了得到姿態的原子結構,我們首先排列好所有的具有相同長度肢體。然后使用K-means聚類得到的聚類中心做為姿態的原子姿態。
對於每一個共享原子姿態a的實例,計算真實值和檢測邊界框的偏移量。然后使用該方向上的真實邊框的邊長進行歸一化處理。處理后,偏移量會形成一個頻率分布,並將我們的數據擬合成高斯混合分布。對於不同的原子姿態,我們會得到不同的高斯混合分布,如圖5:
Proposals Generation
在訓練階段的SSTN+SPPE,對於每一個在訓練集中標注的姿態,我們首先找到對應的原子姿態a。然后通過密集采樣計算P(δB|a)來得到增強的訓練建議。
四、 實驗
所提出的方法在具有大遮擋情況的兩個標准多人數據集上進行定性和定量評估:MPII [3]和MSCOCO 2016關鍵點挑戰數據集[1]。
4.1評估數據集
MPII:多人,3844訓練,1758測試,有遮擋和重疊,28000個單人姿態估計樣本。使用單人數據集中所有訓練數據和90%多人訓練集來微調SPPE,留下10%用於驗證。
MSCOCO關鍵點挑戰。105698訓練,80000測試,100W個關鍵點。
4.2測試實現細節
基於VGG的SSD-512作為人體檢測器。檢測到人體后,高度和寬度都延伸30%。使用stacked hourglass模型做單人姿態估計。對於STN網絡,采用ResNet-18作為本地化網絡,使用較小的4-stacked hourglass作為並行SPPE。
為了標明框架的應用能力,人體檢測器可替換為基於Faster-RCNN的ResNet152,姿態估計可以替換為PyraNet。
4.3結果
MPII。如表1所示,在手腕,肘部,踝關節和膝蓋等困難關節時達到了
72 mAP 的平均准確度。
MSCOCO。利用MSCOCO keypoints的訓練集和驗證集,來fine-tune SPPE,並留下5000圖像用於驗證。表2為測試結果,優於其他方法。
4.4消除實驗
為了驗證這三個組件的有效性:SSTN,PGPG,PP-NMS。移除或者使用常規方法來替代。在MPII上實驗,結果見表3.
Symmetric STN and Parallel SPPE
為了驗證SSTN和parallel SPPE的重要性,進行了兩個實驗。在第一個實驗中刪除了SSTN和並行SPPE。在第二個實驗中,我們只刪除了並行SPPE並保持SSTN結構。這些結果均顯示在表3(a)中。我們可以在去除平行SPPE時觀察到性能下降,這意味着具有單人圖像標簽的並行SPPE能有效提升STN提取單個人區域的效果,以最小化總損失。
Pose-guided Proposals Generator
在表3(b)中,證明PGPG在系統中也起着重要作用。在本實驗中,首先從訓練階段中刪除數據增強。最終的mAP降至73.0 %。然后我們將數據增強技術與簡單基線進行比較。通過抖動(jitter)人體檢測器產生的邊界框的位置和縱橫比來形成基線,以產生大量附加的提議框。我們選擇那些IoU > 0.5的ground-truth框。從我們在表3中的結果(b),我們可以看到我們的技術優於基線方法。根據分布生成培訓建議可以看作是一種數據重新抽樣,可以幫助模型更好地適應人類的建議。
Parametric Pose NMS
由於姿勢NMS是一個獨立的模塊,我們可以直接從最終模型中刪除它。實驗結果如表3(c)所示。我們可以看到,如果刪除了參數化姿勢NMS,則mAP會顯着下降。這是因為冗余姿勢數量的增加最終會降低精確度。我們注意到之前的姿勢NMS也可以在一定程度上消除冗余檢測。最先進的姿勢NMS算法[ 6,9]用於替換我們的PP-NMS,對結果於表3(C)。這些方案的效果不如我們的,因為缺少參數學習。在效率方面,在包含1300張圖像的驗證集上,[6]的姿勢NMS需要62.2秒,而使用我們的算法只需1.8秒。
Upper Bound of Our Framework 上界
使用ground-truth的邊界框作為人體提議框,如表3(e),84.2mAP ,(在MSCOCO keypoints 上63.3mAP),表示使用更強的人體檢測器,我們的框架可以有更好的性能,證明RMPE框架是通用的,適合不同的人體檢測器。
五、 結論
在本文中,提出了一種新的區域多人姿態估計(RMPE)框架,其在准確性和效率方面明顯優於最先進的多人人體姿態估計方法。當SPPE適用於人體檢測器時,它驗證了two-step框架的潛力,即人體檢測器+ SPPE。我們的RMPE框架由三個新穎的組件組成:具有並行SPPE的對稱STN,參數姿勢NMS和姿態引導建議生成器(PGPG)。特別地,PGPG用於通過學習針對給定人體姿勢的邊界框提議的條件分布來極大地論證訓練數據。由於使用對稱STN和並行SPPE,SPPE變得善於處理人體本地化錯誤。最后,參數姿勢NMS可用於減少冗余檢測。
參考:
https://blog.csdn.net/TwT520Ly/article/details/79258594
https://arxiv.org/pdf/1612.00137.pdf
https://github.com/MVIG-SJTU/AlphaPose/tree/pytorch
http://www.mvig.org/research/alphapose.html