MultiPoseNet:人體檢測、姿態估計、語義分割一「網」打盡

  • 2019 年 12 月 27 日
  • 筆記

又准又快還開源,恐怕沒有比這個更好的事情了。

來自中東科技大學在ECCV2018會議上已錄用的文章「MultiPoseNet: Fast Multi-Person Pose Estimation using Pose Residual Network」,使用姿態殘差網路Pose Residual Network (PRN)進行快速多人姿態估計。

文中提出了一種新的自底向上(Bottom-Up)模式的多人姿勢估計架構,它將多任務模型(multi-task model)與新穎的分配演算法(assignment method)相結合。MultiPoseNet可以聯合處理人體檢測,關鍵點檢測,人體分割和姿態估計問題。新穎的分配演算法由姿態殘差網路(PRN)實現,該網路接收關鍵點和人體檢測的結果,通過將關鍵點分配給人體實例來產生準確的姿態。在COCO關鍵點數據集上,該姿態估計方法在準確性(比之前最好的結果要高4個點的mAP)和速度方面均優於所有之前的自下而上(Bottom-Up)方法; 它在準確性上也可以與最好的自頂向下(Top-Down)方法相媲美,但速度至少快4倍。MultiPoseNet方法是目前最快的實時姿態估計系統,在GTX1080TI顯示卡上速度是23幀/秒。

多人姿態估計分為Bottom-Up方法和top-down方法兩個方向。

Bottom-Up方法 先檢測影像中人體部件,然後將影像中多人人體的部件分別分配到不同的人體實例上,因此這類方法在測試推斷的時候往往更快速,模型Size更小,但因為沒能更細緻的對人臉關鍵點建模,所以往往準確度稍低。

Top-Down方法 將人體檢測和關鍵點檢測分離,在影像上首先運行一個人體檢測器,找到所有的人體實例,對每個人體子圖再使用關鍵點檢測,這類方法往往極其慢,但姿態估計準確度較高。

MultiPoseNet多任務學習架構,同時高效地實現人體關鍵點檢測、人體檢測、語義分割:

Pose Residual Network (PRN)姿態殘差網路示意圖,PRN網路用來分配每個關鍵點屬於哪個人體

特徵提取用的骨幹網路(Backbone)使用了帶有兩個Feature Pyramid Networks (FPN)的ResNet,一個輸出到keypoint Estimation subnet,另一個輸出到Person Detection Subnet。

keypoint Estimation subnet示意圖,它將層疊的CNN特徵作為輸入,然後輸出關鍵點和語義分割熱圖(keypoint and segmentation heatmaps)

Person Detection Subnet人體檢測子網路直接使用了修改的RetinaNet,即僅讓網路檢測人體。

Pose Residual Network (PRN)姿態殘差網路是對每一個檢測到的人體區域的關鍵點集合,學習從關鍵點集合到正常分布的關鍵點的映射。作者稱這一步叫做殘差校正(residual correction),文中使用殘差多層感知機(residual multilayer perceptron)來實現。

在COCO驗證數據集上的精度-召回率曲線:

COCO test-dev數據集上的結果,BU是Bottom-Up方法,TD是Top-Down方法

使用不同的骨幹網路性能比較

不同的PRN模型(N:nodes, D: dropout and R: residual connection)在COCO validation上的實驗結果,可以看到採用殘差連接的模型性能大幅提高

COCO dataset上人體檢測的結果,原RetinaNet模型有80類,因為處理後只有人體一類,所以性能大幅提高

人體分割只是在關鍵點網路的輸出層再加一層網路,所以時間代價很小,但已經達到DeepLab v2的水平

COCO test-dev dataset上圖片運行結果示例

運行速度分析,模型參數量與隨著人數增多檢測時間變化

在1080TI顯示卡上,Keypoint and person detections只需要35ms,因為PRN非常快,只需要2ms,所以每增加一個實例僅多增加2ms。當圖片中僅有1個人運行27幀每秒,即使有20個人,也可以達到15幀每秒。

整體上感覺這篇文章是更偏工程的,對這篇文章你有什麼想法也歡迎留言。

程式碼已經開源:

https://github.com/mkocabas/pose-residual-network/

點擊原文閱讀可以在52cv.net查看本文。

歡迎訪問www.52cv.net,獲取更多電腦視覺與機器學習技術資訊。