论文解读-Stacked Hourglass Networks for Human Pose Estimation
文章目录
-
-
1 动机
-
2 网络结构
-
- 2.1 单一沙漏模块
- 2.2 intermediate supervision
- 2.3 堆叠沙漏模块
-
3 实验结果
-
4 总结
-
5 参考资料
-
在上一篇文章中,笔者解释了对OpenPose人体关键点检测算法的思考,它是一种“bottom-to-up”的人体姿态估计算法。为了对人体姿态估计这个方向有更加深刻的认识,笔者查阅了2018年的三大顶会(CVPR/ICCV/ECCV)的文章,发现很多新的论文都是基于“Stacked Hourglass Networks”所做的改进,于是笔者认真阅读了这篇经典文章,有了一些自己的理解,故这里记录下来。
1 动机
对于人体姿态估计任务,也即检测人体的骨骼关键点,显然需要获取图像的local 细节信息,但是对于下面这张图,由于梅球王的右腿膝盖位置被遮挡了,导致局部细节信息丢失,这个时候怎么办呢?考虑人眼的视觉系统,我们是基于身体其它部位推断出右腿膝盖位置的,从理论角度来讲,是基于被遮挡点的全局上下文信息(global context) ,推断当前被遮挡点的位置的。
因此,应对人体姿态估计任务,需要同时利用局部信息和全局信息 。

2 网络结构
浅层特征对应了图像的局部信息,深层特征对应了图像的全局信息。为了获取不同尺度的特征信息,借鉴目标检测任务的思路,有两种常用的做法,图像金字塔和特征金字塔。论文中采用了特征金字塔的方式,将浅层和深层特征做融合,来预测人体关键点。
2.1 单一沙漏模块
单个沙漏模块的网络结构如下图,

大家看该网络的结构,第一印象是不是感觉很美呢?因为整个网络结构是对称的,输入图像先经过"bottom-up"过程做特征提取 ,后经过“top-down”过程做特征融合 ,最后基于融合后的特征图预测骨骼关键点。下面这张图是笔者在百度上找的沙漏图像,和网络结构很像吧,这就是“Hourglass Network”名字的由来。
顺便提及一下,(1)“hourglass module”采用了最近邻上采样的方法,却没有使用可学习的transpose convolution操作,理论上来说,后者定位出来的关键点更精确(欢迎大家留言讨论?);(2)采用的网络结构图类似于图像分割中的Unet网络,大家感兴趣也可以去阅读原论文。

2.2 intermediate supervision
“intermediate supervision”,这里将其翻译成中间约束 。这里的中间约束,是指在网络结构的中间过程,增加优化目标,引入中间约束的好处 有两点:(1) 使低层学习到的特征也有很好地区分能力,(2) 加速整个网络的收敛 。其实很多网络都会采用这种做法,比如经典的Googlenet,网络结构图如下,

2.3 堆叠沙漏模块
单一的沙漏模块能够提取出图像中的local ** 和global contexts** ,若将单一的沙漏模块进行堆叠,则后面的沙漏模块能对high level特征进一步处理,从而得到higher level空域结构关系。

简略图如下,

3 实验结果

4 总结
(1)它是一种经典的"top-to-down"的人体姿态估计算法,被设计用来处理single person姿态估计;
(2)采用多阶段和中间约束 的组合策略,使模型学习到高阶的空域结构关系;
5 参考资料
https://arxiv.org/abs/1603.06937
