Stacked Hourglass Networks 人体姿态检测
本文是人體關(guān)鍵點中非常經(jīng)典的一篇文章:Stacked Hourglass Networks for Human Pose Estimation
論文地址:
https://arxiv.org/abs/1603.06937?arxiv.org
?
代碼地址:
wbenbihi/hourglasstensorlfow?github.com
論文框圖:
摘要:
正如論文名稱所說,我們提出的網(wǎng)絡(luò)是漏斗形狀,通過多次對網(wǎng)路的上采樣和下采樣,我們在多個尺度上得到了人體關(guān)鍵點的位置特征。
method:
1:Hourglass Design
對于人體特征而言,我們既需要能夠區(qū)分局部特征如人臉和人手,又需要能夠區(qū)分全身的特征,這就要求我們在圖片的各個尺度上都能夠捕捉足夠多的特征,這也是我們漏斗網(wǎng)絡(luò)設(shè)計的初衷。一種實現(xiàn)在各個尺度上都捕捉特征的方式是先單獨地獲得多個分辨率的特征,然后在網(wǎng)絡(luò)后面幾個階段中將他們combine起來,而我們使用的是單個網(wǎng)絡(luò),網(wǎng)絡(luò)分辨率最低能夠降到4*4,然后通過skip connection來保持空間分辨率。
網(wǎng)絡(luò)的backbone使用卷積層和max pooling層來實現(xiàn)分辨率的降低,在每一層max pooling之前,我們額外的接出一個分支,在其后接上更多的卷積層,當(dāng)網(wǎng)絡(luò)的分辨率到達(dá)最低尺寸之后,我們使用最近鄰插值法來把小尺寸的特征進(jìn)行上采樣,然后和skip layer進(jìn)行 elementwise addition。在得到最終的pixel級別的feature map輸出之后,我們使用兩個1*1的卷積層來得到最后的pixel wise的heatmaps。
2:Layer Implementation
我們也使用的經(jīng)過驗證非常有效的一些layer design,如殘差結(jié)構(gòu)和inception結(jié)構(gòu),以及使用多個小的卷積核來替代大的卷積核,如用2個3*3來替代一個5*5的卷積核,最終的layer結(jié)構(gòu)如下:
由于在全部分辨率256*256上面進(jìn)行計算需要太多的GPU資源,因此我們將最后的輸出維度限制在了64*64的分辨率上。
3:Stacked Hourglass with Intermediate Supervision
就兩點,多個網(wǎng)絡(luò)疊加,將上一個hourglass的輸出作為下一個hourglass的輸入,同時對每個輸出加一個中間監(jiān)督信號,GT和最后一層監(jiān)督信號的GT是一樣的,圖4中藍(lán)色的feature map就是中間監(jiān)督信號的heatmap,然后再將它用1*1的卷積核擴(kuò)增channel,再加回原來的feature中去。
train:
數(shù)據(jù)集用的比較老的數(shù)據(jù)集,就不講了。訓(xùn)練的GT還是用的2D的高斯核來生成的,loss使用的是MSE。
result:
作者特別指出了觀察不同的層次的hourglass的輸出結(jié)果,從左圖可以看到第二層的輸出在第八層里面得到了微調(diào),更加精確了。從右圖的評估指標(biāo)也可以看到同一種顏色的層數(shù)越深,結(jié)果越好。
總結(jié)
以上是生活随笔為你收集整理的Stacked Hourglass Networks 人体姿态检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jetson Nano安装pytorch
- 下一篇: 【TensorFlow】 基于视频时序L