論文:Stacked Hourglass Networks for Human Pose Estimation
ECCV2016,密歇根大學(xué)的研究團隊,Hourglass。
后續(xù)的很多人體姿態(tài)估計方法都借鑒了hourglass網(wǎng)絡(luò)結(jié)構(gòu),并進行了改進,可以說hourglass的網(wǎng)絡(luò)結(jié)構(gòu)算是受到了業(yè)界的認(rèn)可。
一. 簡介
本文使用全卷積神經(jīng)網(wǎng)絡(luò),對給定的單張RGB圖像,輸出人體關(guān)鍵點的精確像素位置,使用多尺度特征,捕捉人體各關(guān)節(jié)點的空間位置信息。網(wǎng)絡(luò)結(jié)構(gòu)形似沙漏狀,重復(fù)使用top-down到bottom-up來推斷人體的關(guān)節(jié)點位置。每一個top-down到bottom-up的結(jié)構(gòu)都是一個stacked hourglass模塊。

1. 基本塊
使用Residual Module 作為基本的網(wǎng)絡(luò)單元,1x1 的卷積降維256->128 ,3x3 的卷積,1x1的卷積升維128->256。

2. 單個沙漏網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)是對稱的
最終一共使用了8個沙漏網(wǎng)絡(luò)。每個沙漏網(wǎng)絡(luò)的輸入都為 64x64。
輸入圖片大小為256x256,一開始經(jīng)過一次7x7 stride2 的conv ,緊接著跟隨一個residual module和 max pooling將像素值從156下降到64(較少hourglass內(nèi)部計算量)。其中所有的殘差模塊輸出256個特征圖。

如圖3,在每次pooling之后都會有1個basic building block 加到之后 upsampling中相同大小的map中。(這里可以看出每個pooling前的feature map都是256 channel的,up sampling的時候也是256 channel的)
3.中繼監(jiān)督
Hourglass網(wǎng)絡(luò)輸出heatmap的集合(藍色),將這與ground truth進行誤差計算,其中使用1x1的卷積層進行處理是為了保證通道數(shù)相同,這是一種保證通道數(shù)相同很常見的方法,對每一個hourglass網(wǎng)絡(luò)都添加loss,這就相當(dāng)于是8個loss一起監(jiān)督。

二. 模塊詳細(xì)解讀
1. Residual模塊
本文使用的初級模塊稱為Residual Module,旁路相加結(jié)構(gòu)。

第一行為卷積路,由三個核尺度不同的卷積層(白色)串聯(lián)而成,間插有Batch Normalization(淺藍)和ReLU(淺紫);
第二行為跳級路,只包含一個核尺度為1的卷積層;如果跳級路的輸入輸出通道數(shù)相同,則這一路為單位映射。
所有卷積層的步長為1,pading為1,不改變數(shù)據(jù)尺寸,只對數(shù)據(jù)深度(channel)進行變更。
Residual Module由兩個參數(shù)控制:輸入深度M和輸出深度N??梢詫θ我獬叽鐖D像操作。
設(shè)計原則:channel大的卷積,kernel要??;kernel大的卷積,channel要??;模塊化思想。
作用:Residual模塊提取了較高層次的特征(卷積路),同時保留了原有層次的信息(跳級路)。不改變數(shù)據(jù)尺寸,只改變數(shù)據(jù)深度(channel)??梢园阉醋鲆粋€保尺寸的高級“卷積”層。
2. Hourglass網(wǎng)絡(luò)
Hourglass是本文的核心部件,由Residual模塊組成。根據(jù)階數(shù)不同,有不同的復(fù)雜程度。
一階Hourglass

上下兩個半路都包含若干Residual模塊(淺綠),逐步提取更深層次特征。但上半路在原尺度進行,下半路經(jīng)歷了先降采樣(紅色/2)再升采樣(紅色*2)的過程。
降采樣使用max pooling,升采樣使用最近鄰插值。
注:另一種進行升采樣的方法是反卷積層(Deconv)
二階Hourglass
把一階模塊的灰框內(nèi)部分替換成一個一階Hourglass(輸入通道256,輸出通道N),得到二階Hourglass:

兩個層次的下半路組成了一條兩次降采樣,再兩次升采樣的過程。兩個層次的下半路則分別在原始尺寸(OriSize)和1/2原始尺寸,輔助升采樣。
四階Hourglass
本文使用的是四階Hourglass:

每次降采樣之前,分出上半路保留原尺度信息;
每次升采樣之后,和上一個尺度的數(shù)據(jù)相加;
兩次降采樣之間,使用三個Residual模塊提取特征;
兩次相加之間,使用一個Residual模塊提取特征。
由于考慮了各個尺度的特征,本文不需要像CPM3方法一樣獨立地在圖像金字塔上多次運行,速度更快。
作用:n階Hourglass子網(wǎng)絡(luò)提取了從原始尺度到尺度1/2n1/2n的特征。不改變數(shù)據(jù)尺寸,只改變數(shù)據(jù)深度。
三. 完整網(wǎng)絡(luò)結(jié)構(gòu)
1. 一級網(wǎng)絡(luò)
以一個Hourglass(深綠色)為中心,可以從彩色圖像預(yù)測K個人體部件的響應(yīng)圖:

原始圖像經(jīng)過一次降采樣(橙色),輸入到Hourglass子網(wǎng)絡(luò)中。Hourglass的輸出結(jié)果經(jīng)過兩個線性模塊(灰色),得到最終響應(yīng)圖。期間使用Residual模塊(淺綠)和卷積層(白色)逐步提取特征。
更正:兩個Linear應(yīng)該是卷積操作,輸出應(yīng)該是H/4xW/4xK。
2. 二級網(wǎng)絡(luò)
本文使用的完整網(wǎng)絡(luò)包含兩個Hourglass:

相比圖9,二級網(wǎng)絡(luò)重復(fù)了一級網(wǎng)絡(luò)的后半結(jié)構(gòu)。第二個Hourglass的輸入包含三路:
- 第一個Hourglass的輸入數(shù)據(jù)
- 第一個Hourglass的輸出數(shù)據(jù)
- 第一級預(yù)測結(jié)果
這三路數(shù)據(jù)通過串接(concat)和相加進行融合,它們的尺度不同,體現(xiàn)了當(dāng)下流行的跳級結(jié)構(gòu)思想。
對于H×W×3的輸入圖像,每一個hourglass級都會生成一個H/4×W/4×K的響應(yīng)圖。對于每個響應(yīng)圖,都比較其與真值的誤差作為代價。體現(xiàn)了中繼監(jiān)督(intermediate supervision)的思想。
總結(jié)
本文的設(shè)計基于模塊到子網(wǎng)絡(luò)再到完整網(wǎng)絡(luò)的思想。一階hourglass網(wǎng)絡(luò)就是一個最簡單的旁路相加,上半路在原尺度進行,下半路先經(jīng)歷下采樣再進行上采樣。對于二階hourglass網(wǎng)絡(luò),就是在一階的基礎(chǔ)上將一階網(wǎng)絡(luò)嵌套進來。至于之后的高階hourglass就是一層一層嵌套,從本質(zhì)上說子模塊都是一樣的。
特點:
- 使用模塊進行網(wǎng)絡(luò)設(shè)計
- 先降采樣,再升采樣的全卷積結(jié)構(gòu)
- 跳級結(jié)構(gòu)輔助升采樣
- 中繼監(jiān)督訓(xùn)練
整個hourglass不改變特征的尺度,只改變特征的深度。
轉(zhuǎn)自:https://blog.csdn.net/u013841196/article/details/81048237