人體姿勢識別,Convolutional pose machines文獻閱讀筆記。


開源實現

https://github.com/shihenw/convolutional-pose-machines-release(caffe版本)
https://github.com/psycharo/cpm (tensorflow版本,但是只有用pre-trained model做predict,沒有training)

論文原文下載地址:https://www.researchgate.net/publication/301880946_Convolutional_Pose_Machines

論文閱讀筆記:

 

思路通過關鍵點的連線判斷四肢的方向和位置(比如,手肘,肩膀,手腕,膝蓋,腳踝,臀部等14個關鍵點)。(但是我覺得關鍵點的難度應該是在人體的姿勢變化大,關鍵點不清晰和被遮擋等問題上)

 

摘要姿勢識別即關鍵點定位技術, a sequential architecture(序列化結構。把一個網絡分成幾個序列化的模塊)組成卷積的網絡,在特征圖上進行一系列的操作。解決組合序列化的模塊,一旦網絡過長,可能會出現梯度消失的現象,可能會殺死前面的序列的問題。將訓練結果在多個數據庫上進行評估。

 

方法:

 

1. 序列化網絡:

  詳見核心和特色:sequential網絡架構。

 

2.Keypoint Localization

 

第一個Stage14個特征圖,就對應14個關鍵點,特征圖預測每個點在圖像中每一個部位的概率。

 

 

 

3.Sequential prediction

 

感受野大小9*9,26*26,60*60..........,400*400(經過卷積之后,能看到的區域越來越大,可以更好地得到上下文信息,能看到更大的感受野,就有更高的准確率)分多個stage的好處就在於加卷積的時候,感受野越來越大。

 

 

 

 

 

 

糾錯:關鍵點之間是互相影響的,要分辨出不同的關鍵點,需要更大的感受野通過其他關鍵點信息判斷關鍵點。

 

如何得到更大的感受野:

 

  1)加更多的卷積層,網絡越深,最后一層卷積層看到的越向前,獲得的感受野更大。

  2)增大kernel size

 

4.關於梯度下降的問題:

 

卷積層多了,就會出現梯度消失的問題。

 

 Intermediate Supervision方法:

 

紅色是正常傳,epoch是每一次迭代,傳到Stage2梯度就無法再變化了。

 

我理解的Intermediate Supervision:每一個階段的Stage都已經有一個結果了,得出每個Stage的Loss,Loss1,Loss2.Loss3,每一層都有一次監督,每一層都能有參數的更新。

 

 

 

5.訓練:

 

1.Loss Function:

 

 

 

 

Grand Truth:一個點的坐標與標准的歐氏距離。

 

在每一個關鍵點的真實位置上,放置一個高斯響應。標定后生成label數據。

 

2.數據拓展:

 

為了豐富訓練樣本,對原始圖片進行隨機旋轉縮放鏡像。

 

 

 

 

 

論文核心思想和特色:

 

一.Sequential網絡的架構:

 

 

 

 

1. 在每一個尺度下,計算各個部件的響應圖
2. 對於每個部件,累加所有尺度的響應圖,得到總響應圖
3. 在每個部件的總響應圖上,找出相應最大的點,為該部件位置

 

六個Stage

 

第一個Stage:輸入圖像,經過卷積得到46*46*1514+114為關鍵點,1為背景)的特征圖。

 

第二個Stage:輸入圖像,經過卷積46*46*32(紋理特征,之后綜合前一個Stage的結果進行連接。得到46*46*4835+15+1(中心約束))之后再卷積得到,46*46*15.

 

第三個Stage之后:直接拿到第二個Stage的中間結果,卷積成46*46*128.分成四個46*46*32和前一個階段性預測結果進行卷積。

 

Center Map:在人的周圍加上一個高斯響應。Stage2之后都會有一個Center map的聚攏。提前生成的高斯函數模板,用來把響應歸攏到圖像中心

 

二:.各部件響應圖來表達各部件之間的空間約束

 

響應圖和特征圖一起作為數據在網絡中傳遞。

 

三:中繼監督:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM