1. 程式人生 > >《Cascaded Pyramid Network for Multi-Person Pose Estimation》--曠世2017COCO keypoints冠軍論文解讀

《Cascaded Pyramid Network for Multi-Person Pose Estimation》--曠世2017COCO keypoints冠軍論文解讀

簡介

Cascaded Pyramid Network for Multi-Person Pose Estimation》,這是Face++曠世科技2017年取得COCO Keypoints Challenge冠軍的文章,主要目的是解決 in the wild 場景下多人的姿態估計,即關鍵點回歸。
這裡對這篇文章做一個簡單的總結,如有理解不對的地方,歡迎指正!!
文章的主要貢獻是:重點內容
1  提出了一種金字塔型的串接模型,即CPN(cascaded pyramid network),這個模型能夠同時兼顧人體關節點的區域性資訊以及全域性資訊,結果取得了不錯的效果;

2   使用了線上難例挖掘(online hard keypoints mining)的技術,這對於人體姿態估計任務中一些存在遮擋的“hard”的關鍵點的預測有所幫助;

3   測試階段考量了soft-NMS和傳統的hard-NMS(非極大值抑制)在human detection階段產生的影響,結論是soft-NMS對於最後的結果是有所幫助的。

方法

pipeline

首先,整體的方法仍然是一個傳統的top-down的pipeline,即現在圖片中檢測到人體,再做一個單人的human pose estimation。

pipeline

motivation

下面這張圖闡述了作者的網路設計思路,即一些比較容易識別出來的人體關鍵點,直接利用一個CNN模型就可以迴歸得到;而對於一些遮擋比較嚴重的關節點,則需要增大區域性區域感受野以及結合上下文資訊才能夠進一步refine得到。

motivation

網路結構

Figure1給出的就是作者提出的CPN模型網路結構。
可以看到,整個模型由兩部分構成,GlobalNet和RefineNet。
GlobalNet的作用就是簡單的前向CNN組成的迴歸模型,目的是迴歸得到一些易於識別的人體關鍵點位置,這裡作者是使用的ResNet的網路架構迴歸heatmap。
RefineNet的目的則是利用GlobalNet產生的金字塔模型的特徵圖,融合多個感受野資訊,最後concatenate所有的同一尺寸特徵圖進一步迴歸一些有歧義的關鍵點位置。注意,這裡作者使用的是concatenate的策略,而並不是像Stacked Hourglass Networks那樣的簡單的upsampling。




CPN網路結構

實驗

針對上面所提到的三個貢獻,作者通過下面幾個實驗進行了證明:
首先針對human detection階段NMS的策略,結論毫無疑問的是Soft-NMS(關於soft-NMS,這是目標檢測領域提出來的一個策略,具體可以參考原文)更好,下面的表是幾個不同閾值的NMS和Soft-NMS的結果比較。

NMS




對於線上難例挖掘策略的使用,主要體現在RefineNet究竟需要對多少個關鍵點進行Refine,根據COCO keypoints人體標註的關鍵點數量(17個)作者做了下面的一個實驗:

線上難例挖掘1

可以看到,對於“Hard”的關鍵點的定義,在M=8的時候是比較好的,這可以理解為當M增大時一些之前GlobalNet已經預測得到非常好的關鍵點反而被RefineNet加上了人工干擾。

接下來,對於兩個子網路的訓練,是否使用線上難例挖掘,作者也做了實驗:

線上難例挖掘2

可以看到當RefineNet加上線上難例挖掘之後取得的效果是最好的,這也證明了這個措施的有效性,至於為什麼最後兩行GlobalNet加上線上難例挖掘之後結果反而下降了,大概是這個階段的網路效果受限於感受野尺寸,即預測不準的點loss加大懲罰之後還是預測不準,也就沒有什麼用處了。


最後,當然就是這個方法在COCO關鍵點挑戰賽上面的表現了:

結果

72.1的準確率,比第二名高了0.7個點。

總的說來,這篇文章的設計思路是比較巧妙的,用人體關鍵點中存在的一些遮擋嚴重的情況作為切入點,設計了擁有兩個子網路構成的CPN模型,這對於其他的一些CV任務也有一定的參考意義。