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