Hourglass:Stacked Hourglass Networks for Human Pose Estimation
Hourglass 认为识别脸和手是需要局部信息的,而整体的姿态识别需要整个身体的信息。因此,整合各种尺度的信息是必要的。采取重复的自底向上、自顶向下模块学习图片特征,相当于使用不同的感受野观察图片,结合中间监督,加速模型收敛
什么是 Hourglass ?
- Hourglass 是一个单目标的、基于 heatmap 的人体姿态估计网络,因其由众多类似漏斗的模块组成,也称其为漏斗网络
- Hourglass 认为识别脸和手是需要局部信息的,而整体的姿态识别需要整个身体的信息。因此,整合各种尺度的信息是必要的。采取重复的自底向上、自顶向下模块学习图片特征,相当于使用不同的感受野观察图片,结合中间监督,加速模型收敛
Hourglass 的网络结构?
- 下采样:使用卷积层和最大池化层将 feature map 下采样到非常低的分辨率,在最大池化层前使用相对更多的卷积(在原分辨率上进行卷积操作)
- 上采样:使用最近邻上采样和 skip connection(element-add)整合不同尺度的信息。Hourglass 的拓扑结构是对称的
- 输出:在达到网络的输出分辨率后,使用连续两轮 1x 1卷积产生最终的网络预测
Hourglass 的 Hourglass Module ?
- Residual Module:使用 1 x 1 卷积减少通道数,使用 3 x 3 卷积不降低分辨率提取特征,然后再使用 1 x 1 卷积还原通道数,最终和原始特征相加输出
- Hourglass Module:多个残差块的堆叠得到
- Hourglass:不同跨度的 Hourglass Module 堆叠得到
Hourglass 的中间监督?
- 上图右边的蓝色表示中间监督的 heatmap,可以应用 loss 进行监督。然后通过1 x 1 s卷积将 heatmap 重新映射成中间 feature maps,所以所以,第 n 个 hourglass 的输入有三个:(1)第 n-1个 hourglass 的特征输出;(2)第 n-1个 hourglass 的 heatmap 映射的特征;(3)第 n-1个 hourglass 的输入特征
Hourglass 的损失函数?
- 使用 MSE 计算损失
Hourglass 如何解决多人预测的问题?
- Hourglass只能用于单人姿态检测,但是在一张图片中经常有多个人,解决办法就是只对图片正中心的人物进行训练。将目标人物裁剪到正中心后再将输入图片resize到256×256
参考: