如何評價卡內基梅隆大學的開源項目 OpenPose?

其實在openpose還沒有出來之前就一直關注CMU的工作,他們模型的效果很好,並且取得了較好的魯棒性,特別是人被遮擋了一部分還是能夠估計出來,我想這一點其實也說明較大的數據所取得的魯棒性真的很好,但是計算量也很可觀。

openpose中包含了對人臉關鍵點的定位,人手的關鍵點的定位以及人身體的各個關節的定位

openpose是基於CVPR 2016 Convolutional Pose Machine(CPM)和CVPR2017 realtime multi-person pose estimation以及CVPR2017 Hand Keypoint Detection in Single Images using Multiview Bootstrapping這3篇paper的模型做出來的(臉的沒看到有相關的論文)。

下面可以給大家粗略地講講這些模型:

(1)CPM的算法思想(單人姿態估計)

CPM的模型採用的大卷積核來獲得大的感受野,這對於推斷被遮擋的關節是很有效的。網絡結構如下

如何評價卡內基梅隆大學的開源項目 OpenPose?

整個算法的流程是:

1)首先對圖像的所有出現的人進行迴歸,迴歸各個人的關節的點

2)然後根據center map來去除掉對其他人的響應

3)最後通過重複地對預測出來的heatmap進行refine得到最終的結果

在進行refine的時候,需要引入中間層的loss,從而保證較深的網絡仍然可以訓練下去,不至於梯度彌散或者爆炸。

這種思路很好,通過coarse to fine來逐漸提升迴歸的準確度。

(2)realtime multi-person pose estimation的算法思想(多人姿態估計)

該算法其實是基於CPM來構造的,所以計算量也很可觀這就是為什麼在上述回答中有些人說那麼吃顯卡。網絡的結構如下

如何評價卡內基梅隆大學的開源項目 OpenPose?

該網絡的結構與CPM其實很類似,也是通過CPM的方式先將一幅圖中所有人的關節點都回歸出來,此外還同時迴歸出part affine field(PAF),什麼是part affine field?看了下面的圖你就明白了。

如何評價卡內基梅隆大學的開源項目 OpenPose?

實際上就是兩個關節之間的連接所產生的heatmap。

為什麼要提PAF?因為本文的方法使用的是自底向上的方法即先回歸出所有人的關節點,然後再對這些關節點進行劃分,這樣就可以把關節分配到每個人。至於怎麼劃分,就是通過PAF來進行劃分,具體的劃分算法這裡不細講,感興趣的可以看論文。

(3)Hand Keypoint Detection in Single Images using Multiview Bootstrapping(手的姿態估計)

CMU自己建了一個採集人的姿態的球(當然他們手的姿態也在裡面採集),看看下面的圖你就知道了

如何評價卡內基梅隆大學的開源項目 OpenPose?

他們手的姿態的數據集就是在這個球裡面採集(CMU Panoptic Dataset)

這玩意有厲害,看看下面的參數,你們可以感受一下:

Massively Multiview System

  • 480 VGA camera views

  • 30+ HD views

  • 10 RGB-D sensors

  • Hardware-based sync

  • Calibration

看完之後,其實我想說,對DL來說數據真的很重要,這麼魯棒的模型,全是數據訓出來的。。

PS:這裡還沒更 hand是怎麼具體做的。

(4)其他的單人姿態估計方法

其實除了CPM還有其他的比較好的姿態估計方法,最經典的就是ECCV 2016的stacked hourglass模型,該模型也取得了較為不錯的效果。

此外還有一些腦洞大開的方法:

比如對關節與關節之間的關係進行建模的ECCV 2016 Chained Predictions Using Convolutional Neural Networks。這裡並沒有使用圖模型來進行建模,而是直接用CNN來進行建模。

比如使用GAN來對關節進行建模的方法,國立清華大學的這篇paper:Self Adversarial Training for Human Pose Estimation,該方法是基於hourglass和BEGAN來進行對抗訓練,取得了較好的結果。

(5)總結

總的說來其實姿態估計的玩法還是很多樣,目前的方法其實算法複雜度還是太高,距離使用還有一點點距離要走。此外,從2D到3D的姿態估計也是未來的一個趨勢,2017的SIGGraph有一篇VNect: Real-time 3D Human Pose Estimation with a Single RGB Camera,這篇還是很靠譜的。

不過這個方向對於研究者而言,面對的挑戰也越來越大。

其實姿態估計一直面臨一個無法解決的問題那就是遮擋,不管怎麼樣,這是一個很大的挑戰。我相信隨著GAN的發展,遮擋問題肯定是可以被解決的。

(6)很多人都在用OpenPose,如果想使用Python版本的 Openpose可以參考我的文章:PyOpenPose編譯與使用 - 一畝半分地 - CSDN博客

編譯這玩意著實碰了不少坑,希望後來人少走彎路,這玩意對opencv的版本和protobuf的版本有要求。

關於姿態估計可以看我的另外一個回答:

目前姿態估計(pose estimation)有哪些主流方法?

做姿態估計的同行可以加群討論,自己一個人做研究沒有人討論也是挺苦逼的。。。


分享到:


相關文章: