【人体姿态估计1】Convolutional Pose Machines_2016
文章目錄
- 1. Introduction
- 2. 網絡結構簡介
- 3. Method
- 3.1 Pose Machines
- 3.2 Convolutional Pose Machines —— CPMs
- 3.2.1 Keypoint Localization Using Local Image Evidence
- 3.2.2 Sequential Prediction with Learned Spatial Context Features
- 3.2.3 CMP的學習過程
- 4. 實驗
- 4.1 分析
參考博客:
https://www.aiuai.cn/aifarm176.html
https://blog.csdn.net/shenxiaolu1984/article/details/51094959
代碼鏈接:
caffe
tensorflow
該論文展示了如何將卷積網絡嵌入到人體姿態估計框架中,來學習圖像特征和與圖像無關的空域特征。
貢獻點:
使用序列化的卷積結構來表達圖像信息和空間信息。
序列化的卷積結構表現在網絡分為多個階段,每個階段都有監督訓練的部分,前面階段使用原始圖片作為輸入,后面階段使用之前階段的特征圖作為輸入,產生對局部位置越來越精細的估計。主要是為了融合空間信息,紋理信息和中心約束。另外,對同一個卷積架構同時使用多個尺度來處理輸入的特征和響應,能夠在保證精度的同時,不失其空間結構信息。
1. Introduction
本文提出了一種針對人體姿態估計任務的 Convolutional Pose Machines (CPMs)
CPMs的特點:
- 能夠從數據中直接學到圖像和空間信息的特征表達
- 能夠使用BP進行端到端的學習
- 能夠解決大量數據的高效訓練
CPMs組成結構:序列化的卷積網絡,能夠不斷的提取每個局部位置的2D特征圖
每個stage的輸入: 來自前一stage的圖像特征+響應圖
每個響應圖(belief maps)可以提供:為下一階段的stage提供每個部件的表達性強的非參數化編碼。
網絡學習的東西: 沒有使用圖形化模型[28,38,39]或專門的后處理步驟[38,40]來顯式解析這種響應圖,而是學習直接作用于中間響應圖的卷積網絡,并學習每個部分之間依賴于圖像的隱式空間模型間的關系。
每個部件響應的空間信息可以提供很強的二義性消除線索,所以,CPM的每個stage都可以提供對每個部件的位置信息越來越精確的估計,如下圖所示:
為了捕捉每個部件間的 long range 的關系,每個stage的設計都是為了實現在圖像上和響應圖上的大的感受野。并且,經過實驗,我們發現響應圖上大的感受野對學習 long range 空間關系非常重要。
CPM中將多個卷積網絡組合起來帶來的問題: 訓練過程會有梯度消失現象
CMP中如何解決: 使用對稱的網絡結構來修正梯度,并通過網絡定期執行中間監督來引導網絡生成越來越精確的響應圖。
主要貢獻:
- 通過有序的組合卷積結果來學習隱式空間模型
- 利用對稱的網絡來同時學習圖像特征和依賴于圖像的空間模型
2. 網絡結構簡介
網絡結構:
網絡輸入彩色圖像(綠色ori image)。以半身模型為例,分為四個階段(stage)。每個階段都能輸出各個部件的響應圖(藍色score),使用時以最后一個階段的響應圖輸出為準。
center map(綠色)是一個提前生成的高斯函數模板,用來把響應歸攏到圖像中心。
第一階段:
第一階段是一個基本的卷積網絡1(白色convs),從彩色圖像直接預測每個部件的響應。半身模型有9個部件,另外包含一個背景響應,共10層響應圖。
第二階段:
第二階段也是從彩色圖像預測各部件響應,但是在卷積層中段多了一個串聯層(紅色concat),把以下三個數據合一:
- 階段性的卷積結果(4646*32)→→ 紋理特征
- 前一階段各部件響應(464610)→→ 空間特征
- 中心約束(46461)
串聯后的結果尺寸不變,深度變為32+10+1 = 43。
第三階段:
第三階段不再使用原始圖像為輸入,而是從第二階段的中途取出一個深度為128的特征圖(feature image)作為輸入。同樣使用串聯層綜合三種因素:紋理特征+空間特征+中心約束。
原始圖像和128層中的部分特征圖層:
后續階段:
第四階段結構和第三階段完全相同。在設計更復雜的網絡時(例如全身模型),只需調整部件數量(從10變為15),并重復第三階段結構即可。
數據擴展:
為了豐富訓練樣本,對原始圖片進行隨機旋轉縮放鏡像。
這部分由一個新定義的caffe層cpm_data實現。僅在訓練時使用。
標定:
姿態數據集中標定的是各個部件的位置,可以通過在每個關鍵點的真實位置上放置一個高斯響應,來構造響應圖的真值。
對于包含多個人的圖像,生成兩種真值響應:
a. 在每個人的相應部件位置,放置高斯響應。(下圖左)
b. 只在標定的人的相應部件位置,放置高斯響應。(下圖右)
由于第一階段只能考慮局部特征,故將a用于第一階段網絡訓練,b用于后續階段網絡訓練。
中間監督優化:
每層輸出都計算loss
多尺度:
訓練時,已經通過cpm_data層對數據進行了尺度擴充。在測試時,直接從原圖生成不同尺度的圖像,分別送入網絡。將所得相應結果求和。下圖示出第1,4,8,12尺度:
3. Method
3.1 Pose Machines
每個位置的坐標 (u,v)(u,v)(u,v),YPY_PYP? 是第 p 個 part 的像素位置
本文的目標: 預測 PPP 個 parts 在圖像中的位置 Y=(Y1,...,YP)Y=(Y_1,...,Y_P)Y=(Y1?,...,YP?).
Pose Machine組成部分: 一系列的多類別預測器 gt(.)g_t(.)gt?(.),這個預測器分別被用來預測每個尺度特征圖中 part 位置。
在每個stage t∈1,...,Tt \in{1,...,T}t∈1,...,T中, gt(.)g_t(.)gt?(.) 會預測響應圖,用來給每個 part分配位置。
上述位置怎么得到:
- 1、每個位置 zzz 上所抽取的圖像特征 xzx_zxz?
- 2、前一個stage ttt 的分類器得到的 YPY_PYP? 附近的上下文信息
stage t=1 時,分類器 gtg_tgt? 預測的響應值為:
其中,b1p(Yp=z)b_1^p(Y_p=z)b1p?(Yp?=z) 是分類器 g1g_1g1? 的第一個stage中預測的第p個部件在位置 z 上的得分。
記在圖片中每個位置 z 的部件p的所有置信得分為 bt∈Rw×hb_t \in R^{w\times h}bt?∈Rw×h,其中,w和h分別為寬和高。
則:
方便起見,將所有部件(關鍵點)的響應圖(belief maps)集合標記如下,p個關鍵點+1個背景類
stage>1時,分類器基于兩種輸入來預測關鍵點位置的置信(belief):
- 圖片特征 xztx_z^txzt?
- 前一stage分類器輸出的每個關鍵點周圍的上下文信息
其中,?t>1(.)\phi_{t>1}(.)?t>1?(.) 是置信 bt?1b_{t-1}bt?1? 到上下文特征的映射。
每個stage計算的置信(beliefs)對每個關鍵點的位置估計越來越精細。
這里,第一個stage之后的所有stage用到的圖像特征 x′x'x′ 和 stage=1時所用到的圖像特征 xxx 是不同的。
pose machine 使用 boosted random forests 來作為分類器 g(t)g(t)g(t),手工設計每個stage的所有圖像特征 (x’=x),手工設計特征圖來學習所有stages的空間信息。
3.2 Convolutional Pose Machines —— CPMs
本節描述如何利用CPM來代替PM來實現直接從數據來學習圖像和上下文的特征表示。
根據源碼給出的 deploy.prototxt,CPM 部署時是 multi-scales 的,處理流程:
[1] - 基于每個 scale,計算網絡預測的各關節點 heatmap;
[2] - 依次累加每個關節點對應的所有 scales 的 heatmaps;
[3] - 根據累加 heatmaps,如果其最大值大于指定閾值,則該最大值所在位置 (x,y) 即為預測的關節點位置.
3.2.1 Keypoint Localization Using Local Image Evidence
stage=1時的關鍵點定位
stage=1時,CPM僅僅根據局部圖像信息(Local image evidence)來預測關鍵點。
局部圖像信息:stage=1時,網絡的感受野被約束到輸出像素位置的small patch(小的塊兒),如圖所示:
輸入圖像經過一個全卷積網絡:5 個卷積層和 2 個1x1 卷積層
為了得到較好的precision,文中將輸入crop到368x368大小,上述全卷積網絡的感受野就是160x160大小。
該網絡結構可以被看做:大小為368x368的圖像,經過一個卷積網絡的滑動提取特征,從每個在160x160大小的patch 中的局部圖像信息中回歸一個p+1個輸出向量,表示每個位置上每個關鍵點出現的得分。
卷積層不改變圖像大小,經過三次pooling,輸出46x46大小的特征圖,共p+1個特征圖。
t>=2時,網絡的輸出是一致的,都是46x46x(p+1)的特征圖。
3.2.2 Sequential Prediction with Learned Spatial Context Features
檢測外觀始終比較一致的landmarks會比較容易,比如頭和肩膀。但一些低于人體固件鏈接的 landmarks 的準確率會很低,由于這些的結構和外觀很多變。
盡管關鍵點鄰域內的響應圖會有一定的噪聲,但是同樣可以提供很多的信息。
如圖3所示,當檢測類似于右手手肘這些有挑戰性的關鍵點時,右肩膀的響應圖會有一個尖銳的峰值,這可以被看做一個強線索。
也就是容易檢測的關鍵點可以為難以檢測的關鍵點提高有用的信息。
容易檢測的關鍵點隊友后續stage的響應圖來說,有助于消除其錯誤的估計(紅色),提升其正確的估計(綠色)。
stage>1時,所有 stage 的預測器(gt>1g_{t>1}gt>1?)都可以使用圖像位置 zzz 鄰域內的噪聲響應圖的空域信息,因為一個關鍵點肯定出現在一個固定的幾何關系空間。
t=2時,分類器 g2g_2g2? 的輸入如圖,包括:
- 原始圖像特征圖像特征 xz2x_z^2xz2?
- 卷積結果:前面的stage對每個關鍵點的belief,通過特征函數 ?\phi? 計算得到的特征
- 生成的center 的Gaussian中心約束(caffe代碼)
t>2時,分類器 gt>2g_{t>2}gt>2?的輸入,不再包括原始圖片特征,而是替換為上一層的卷積結果,其它的輸入與 t=2 相同. 也是三個輸入.
特征函數 的作用是對先前 stage 不同關節點的空間 belief maps 編碼.
CMP中,不需要用函數計算上下文特征,而是定義 ?\phi? 作為分類器在前一stage的belief上的感受野。
設計網絡的靈感:為了實現第二個stage的輸出足夠大,能夠保證可以學習到關鍵點間的潛在信息和 long-range 聯系。
大的感受野可以通過很多方法來得到:
- pooling,會犧牲精度
- 大的kernel size,會使參數量增加,訓練時出現梯度消失的風險
- 提升卷積層數量
該文章中使用如圖2(d)中的方法來提升感受野:
- 使用多個卷積層來實現在8x下采樣的heatmap上的大的感受野
- 作者發現步長為8的網絡可以和步長為4的網絡 表現效果相當,大步長帶來了大的感受野
3.2.3 CMP的學習過程
將pose machine換成深度的結構,會導致參數量增加,也會出現梯度消失的現象。
pose machine 的每個stage 都會產生每個關鍵點的預測結果,重復的輸出每個關鍵點位置的belief maps,以逐漸精細化的方式估計關鍵點。
所以,每個stage輸出后都計算loss,作為中介監督loss避免梯度消失的問題。
loss函數:最小化每個關鍵點的預測和真實 belief map 的 l2l_2l2? 距離
關鍵點p的ground truth belief map 記為 b?p(Yp=z)b_*^p(Y_p=z)b?p?(Yp?=z),是通過在每個關鍵點 p 的真實為(x,y) 放置gaussian函數模板的方式得到的。
如:
loss函數是最小化每個level中每個stage的輸出,所以:
每個stage的loss函數:
最終的loss函數:
所有的 stage t>=2,共享特征圖x‘(caffe實現中 T=6)’
4. 實驗
4.1 分析
梯度消失:
證明使用中間loss對梯度消失的作用:
圖5中是不同深度的結構,有/無中間監督的梯度情況
early epoch:沒有中間監督時,由于有梯度消失,所以梯度的分布在0周圍
有中間監督時,每個層的梯度分布方差都較大
端到端訓練的效果: Fig6(a)
中間監督的效果: Fig6(b)
每個stage的結果: Fig6?
實驗結果:
總結
以上是生活随笔為你收集整理的【人体姿态估计1】Convolutional Pose Machines_2016的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xls文件怎么转成xlsx文件
- 下一篇: 论文写作专题记录