摘要
一種新型的網絡結構,主要用在人體姿态識别中。在FLIC和MPII上面實作了state of the art
背景介紹
從2014年Toshev等為人體姿态識别算法引入“DeepPose”以來,有很多人都将神經網絡這一個特征提取方式帶入進來産生了各種各樣的算法。
如Tompson用神經網絡産生heatmap,并且為了獲得更好的joints之間的位置關系,使用graphical model來拟合關節之間的位置關系。如Deepcut。
相關算法
Carreira的算法通過使用iterative error feedback來對一些輸入的prediction進行優化進而實作更好的結果。
Wei的算法是基于multi-stage pose machine with ConvNets for feature extraction。
Hu的算法和本算法相似,可以參考[這篇論文](https://ieeexplore.ieee.org/document/7780973)來比較算法
算法詳解
模型overview(請參考圖例)

算法特點
- 沒有unpooling or deconv layer
- 代替為nearest neighbor upsampling
- 重複的bottom-up(前半部分) 和top-down(後半部分)結構
Hourglass Module
為了盡可能地捕捉各個尺度的特征,并且将他們合并在一起并産生pixel-wise prediction
- Convolution Layer and Max pooling Layer 用來将feature縮減到小尺寸
- 在Max Pooling Layer,在輸入會被分支出去,并加上更多的Conv,同樣的輸入會經過Pooling 操作
- 在達到最低的Resolution時候,開始top down部分。
- 為了将bottom up和top down的部分能夠合并起來,對于兩部分的features進行elementwise addition。并且不使用unpooling 和deconv操作,而代以nearest neighbor upsampling
- 在網絡的結尾,添加兩層kernel大小為1*1的卷積層。
- 網絡的輸出是一個heatmaps,一個heatmap預測了每個關鍵點在每個像素出現的機率(是否需要添加激活層?)
Residual Module
這個就是之前overview中的每個小盒子
關于網絡和輸入
- 網絡開始于kernel 7 * 7 , stride 2的卷積和一個residual module可以把輸入值縮小到合适範圍
- 輸出的最大像素是64 * 64
- 網絡是由多個hourglass module通過end-to-end的方式連接配接起來的
- 通過添加intermediate supervision來提高performance
Data Augmentation
- rotation(+/- 30 degrees)
- scaling(.75 - 1.25)
Training Configuration
- rmsprop
- learning rate: 2.5e-4
- 3 days on 12GB NVIDIA Titan X
- drop learning rate by a factor of 5 after each epoch
- Loss function: MSE(mean squared error)
- Ground truth heatmap: 2D gaussian (std:1px)centered on the joint location.
trick
- run prediciton on original input and a flipped version of the image, then average the heatmaps
Evalutaiton result
請參見論文描述