Stacked Hourglass Networks简析
引言
Stacked Hourglass Networks,提出于ECCV2016,主要用于人体姿态检测(human pose estimation)。
在数据集MPII Human Pose上,以PCKh-0.5为指标,Stacked Hourglass Networks大约排名第7,其变种Stacked Hourglass + Inception-resnet排名第5。
相关的官方资料链接如下:
结构框图
Stacked Hourglass Networks,得名于结构形似堆叠起来的沙漏,如下图所示:
核心思想
Top-down与Bottom-up结合
多人姿态估计分为Bottom-Up方法和top-down方法两个方向。
Bottom-Up方法:先检测图像中人体部件,然后将图像中多人人体的部件分别分配到不同的人体实例上,因此这类方法在测试推断的时候往往更快速,模型Size更小,但因为没能更细致的对人体关键点建模,所以往往准确度稍低。
Top-Down方法:将人体检测和关键点检测分离,在图像上首先运行一个人体检测器,找到所有的人体实例,对每个人体子图再使用关键点检测,这类方法往往极其慢,但姿态估计准确度较高。
Stacked Hourglass Networks:Hourglass模块是对称结构,bottom-up过程将图片从高分辨率降到低分辨率,top-down过程将图片从低分辨率升到高分辨率,这种网络结构包含了许多pooling和upsampling的步骤,pooling用于提取特征减少冗余,upsampling可以结合多个分辨率的特征。
降采样使用max pooling,升采样使用最近邻插值。
网络基本模块
Residual Module
Residual模块提取了较高层次的特征(卷积路),同时保留了原有层次的信息(跳级路)。不改变数据尺寸,只改变数据深度。可以把它看做一个保尺寸的高级“卷积”层。
一阶Hourglass Module
Hourglass Module由Residual Module组成,由于它是一个递归的结构,定义一个阶数来表示递归的层数,一阶的Hourglass Module如图所示:
上下两个半路都包含若干Residual模块(蓝色),逐步提取更深层次特征。但上半路在原尺度进行,下半路经历了先降采样(绿色)再升采样(红色)的过程。
四阶Hourglass Module
将一阶Hourglass Module中的虚线框替换为下一级Hourglass Module,就可以递归实现高阶Hourglass Module。论文中使用的是四阶Hourglass Module。
单个四阶Hourglass Module计算过程中的特征图大小变化如下:
完整的一级Hourglass Networks
以一个Hourglass(深绿色)为中心,可以从彩色图像预测K个人体部件的响应图:
原始图像经过一次降采样(橙色),输入到Hourglass子网络中。Hourglass的输出结果经过两个线性模块(灰色),得到最终响应图。期间使用Residual模块(浅绿)和卷积层(白色)逐步提取特征。
中继监督**(Intermediate Supervision**)
作者在整个网络结构中堆叠了许多hourglass模块,从而使得网络能够不断重复自底向上和自顶向下的过程,作者提到采用这种结构的关键是要使用中间监督来对每一个hourglass模块进行预测,即对中间的heatmaps计算损失。
关于中继监督的位置,作者在文中也进行了讨论。大多数高阶特征仅在较低的分辨率下出现,除非在上采样最后。如果在网络进行上采样后进行监督,则无法在更大的全局上下文中重新评估这些特征;如果我们希望网络能够进行最佳的预测,那么这些预测就不应该在一个局部范围内进行。
由于hourglass模块整合了局部和全局的信息,若想要网络在早期进行预测,则需要它对图片有一个高层次的理解,即使只是整个网络的一部分。最终,作者将中间监督设计在如下图所示位置:
二级Hourglass Networks
由于引入了中继监督思想,Hourglass Networks可以进行级联,二级的Hourglass Networks示意如下:
八级Hourglass Networks
在整个网络中,作者共使用了8个hourglass模块,这些hourglass模块的权重不是共享的,并且所有的模块都基于相同的ground truth添加了损失函数。
对于不同的Hourglass Module,中继loss是单独计算的,这样使得后面的Hourglass Module能够更好地再评估。
逻辑关系
模块从底层到顶层的关系式:
Residual Module -> 一阶Hourglass Module -> 高阶Hourglass Module -> 单级Hourglass Networks -> Stacked Hourglass Networks
模型亮点
- 使用模块式网络设计
- 采用先降采样,再升采样的结构
- 借鉴resnet思想,使用跳级链接(skip connection)辅助升采样
- 中继监督训练(intermediate supervision)
与Resnet/Densenet的联系与区别
Resnet
相同点
这篇文章借鉴了Resnet的跳级连接思想,这有助于训练过程中计算梯度的反向传播,使得网络深度可以大大提高。
跳级连接(skip connection)思想主要体现在:
- 单个Residual Module的实现与Resnet类似
- 一阶Hourglass Module分为两个支路,一路采用沙漏型结构,一路采用单个Residual Module
- 中继监督也体现了跳级连接的思想
不同点
Stacked Hourglass Networks采用了先降采样再升采样的方式,提取不同层次的特征,并利用跳级连接和中继监督重用特征。Resnet中没有利用前级网络帮助升采样,结合不同分辨率特征的思想。
Densenet
相同点
与Resnet相比,都进一步重用了特征。
不同点
Densenet利用所有层之间的相互连接来重用特征,而Stacked Hourglass Networks利用前级特征来帮助升采样恢复图像来重用特征。
参考资料
1.Newell, Alejandro, Kaiyu Yang, and Jia Deng. “Stacked hourglass networks for human pose estimation.” arXiv preprint arXiv:1603.06937 (2016).
2. [email protected]【人体姿态】Stacked Hourglass算法详解
3. [email protected] 论文笔记Stacked Hourglass Networks