CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark 論文閱讀

一、這是Alphapose的最新工作

       特點,針對的是 “ crowd”場景下的多人姿態估計。

       相對於以往的一些多人姿態估計工作而言,基本上都是不合適應用在“Crowd”場景之下的,比如Mask-RCNN訓練的時候,會直接去除數據中的“Crowd”數據(MSCOCO)有這個標籤,MPII沒有這個標籤。

                                                         

      這是目前幾個主流的開源的姿態估計框架的,對於“crowd”場景的檢測能力對比圖,可以發現對着“crowd”的增加,這三個框架都下降的非常厲害,影響最大的是OpenPose最大下降了0.3左右。

 

二、提出了一個“Crowd”數據集

       想做“CrowdPose”那必須要有,這樣的數據集,光靠着之前的MPII、MSCOCO、AIChallenger2017的哪些數據集是遠遠達不到這個工作的標準的。對比下這些數據集,我們也就不難理解爲什麼要重新提出一個數據集了。

                                          

       這張圖來自於論文中,對於這幾個數據集的比較,可以發現,MPII、MSCOCO、AIChallenger這三個數據集基本上都是針對於“非crowd”場景的。

三、本文方法

       

      上圖是這篇文章方法的閥體框架:

        1、進行human detection

        2、根據proposal box利用SPPE去計算 候選節點(Joint candidate),不過這一次所使用的Loss針對這次任務,和以前的AlphaPose中的“再SPPE”階段所使用的Loss有所不同,之前的Loss方案沒有辦法應用於”Crowd“場景。這裏作者歸結原因“因爲感受野受限於proposal”,因此之前的Loss也只能去計算這個框裏面的(AlphaPose是人體檢測器和SPPE分開的兩個模型,單獨訓練的,SPPE雖然是聯合訓練的,但是是通過檢測器的結果來訓練的)而且以前的loss只計算這個框裏“目標人物”的loss。

             因此這一部分需要一個具有“全局觀念的”Loss,不能夠侷限於proposal的感受野限制。

     思考:一定會有人奇怪爲什麼不直接上手一個針對全圖的全局關鍵點檢測,然後再去進行“Global Association”,這樣的話其實和AE那篇文章差別就不大了。但是作者這樣設計有一定的好處,SPPE是非常依賴於human  detection的結果的,而且如果說“SPPE某一個region檢測關鍵點的時候,右手沒有檢測出來,這種情況在以前的AlphaPose中是無法恢復的,但是在本文中是可以恢復的”,如果這個在region1中SPPE沒有檢測出來的手,在region2中出現了,那麼只要region2的SPPE能檢測出來,通過後續步驟我們依然可以得到完整的姿態但是“直接全圖全局關鍵點檢測,就像之前的region1發生漏檢~~~無法恢復”,這個概念和Hadoop的分佈式存儲概念有點像,某個地方發生了丟失,可以通過別的地方進行回覆。

      Loss Design

      對於每一個proposal出來的region,裏面有兩個類型的loss,分別針對“目標人物”與“region內的其他人的關節點”。從這裏可以看出作者設計的是一個針對“region”的全局關鍵點檢測器,不會針對某個target去迴歸!

   Heatmap Loss

                                                           

        這個Loss依然是經典的“2範數loss”-歐式距離loss。其中T這一類表示的是屬於目標任務,C這一類屬於其他人物的關鍵點。是屬於0~1的一個係數,作者設定爲0.5。P是預測出來的某關鍵點的heatmap。

       在擁擠的場景下,單個SPPE沒有辦法對某些關鍵點給出很高的響應圖,但是如果某個部位能夠出現在多個SPPE的region中的話(這種情況在“crowd”場景下很正常),那麼本文的方法依然能夠對這些關鍵點,產生比較可靠的響應圖。

 

    3、Person-Joint Graph

                                          

       這張圖片展示的是原本AlphaPose的一個錯誤,主要想要說明的就是,如果直接通過region中的heatmap取max得到位置,直接連起來,就會產生上圖的錯誤!

     Joint Node Building

      比較高的overlap的proposal通常會產生相似的真實joint。根據下面的公式,會把兩個挨的很近的joint先看成一個Node。u表示的是heatmap的響應size,另外一個是控制因子。

                      

     我們得到了這個集合,N是所有的Node節點集合,v代表了某個Node節點屬於第K個關鍵點,那麼joint nodes節點總數爲

   Person Node Building

    這個依賴於human detectron,,M是proposal出來的human 總數。但是在“crowd”場景下,proposal出來的很多box是redundant proposals,需要在後面進行消除。

   Person-Joint Edge

    這個person-joint edge就是需要把person-node和joint node 連起來。如果某個包含了某個person-node的”候選關節“,那麼通過把這兩個Node連起來。的權重就是”候選關節“的響應記爲。那麼得到了

      最後的Person-Joint Graph就是

Globally Optimizing Association

                                 

                                

    上圖所示的是目標函數,最大化每個人的edge之和。代表了某一條邊是否存在於我們最終的graph中。從公式8到公式10,我們可以發現解決”Person-Joint Graph“的問題被分成了解決(Gk各自問題),然後利用”圖論中的匈牙利算法“取更新優化每一個子圖,這裏主要涉及到2布圖優化的知識,但是文章中沒有細說,如何利用匈牙利算法優化。

    之前說到的”redundant proposals“也會因爲沒有合適的匹配,而被淘汰刪除。

四、實驗結果

                        

五、再續說下數據集CrowdDataset

1、對於crowd需要進行分級

                                      

    n代表了這張圖中人的總數,Nb代表了某一個boundingbox中肺部表人物的關鍵點數量,Na代表了這個boundingbox中目標任務的關鍵點數量。

2、圖像數據收集

對AI Challenger MSCOCO  MPII這三個數據集進行分析,收集其中的一些正常圖像(作爲遮擋不嚴重的例子),收集了大約3萬張,從crowd index 以步長0.05 從0~1

3、採用14個關鍵點標註,類似於AIChallenger,對30000張圖像進行重新標註(關鍵點+box);完成標註後重新分析crowd index,選取了20000張高質量標註圖像。We further crop each person in the images, and then annotate the interference keypoints in each bounding box.這句話沒看明白啥意思!!!;每張圖像有兩個標註人分別標,取均值,如果兩個人標註結果差異很大,就會重新標註這張圖象。

4、數據集中總共包含20000張圖像,80000個人,訓練集、驗證集、測試集比例爲5:1:4

5、數據集的boundingbox的mIoU爲0.27,然而MSCOCO、MPII、AIChallenger分別爲0.06、0.11、0.12

 

六、其他的一些細節請仔細閱讀文章後,比如訓練細節,模型對比等

https://arxiv.org/pdf/1812.00324.pdf

https://github.com/MVIG-SJTU/AlphaPose/blob/pytorch/doc/CrowdPose.md

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