[Stacked Hourglass Networks for Human Pose Estimation] 论文笔记

沥川 bio photo By 沥川

Stacked Hourglass Networks for Human Pose Estimation, 在单人姿态估计上的表现亮眼, 与我们的比赛更加接近

Abstract

  • 重复使用自下而上 / 自上而下, 结合 中间监督
  • 关键词 Human Pose Estimation

Introduction

  • 理解图片或视频人类的行为, 一个关键是姿势预测
  • 在动画和人机交互领域起到重要作用
  • 一个好的姿态预测系统需要在闭包/变形/遮挡, 还有在衣服和光线变化下具有鲁棒性
  • 卷积神经网络取代过去手工或者图形合成方法, 有了巨大的进步
  • 将多个低分辨率的模型进行结合
  • 汤姆森等人算法的关键是卷积网络和图形模型联合使用
  • 图形模型学习关节间典型的空间关系
  • 我们没有使用任何图形模型或任何显式的人体建模, 便获得了卓越的性能

Network Architecture

Hourglass Design

  • 沙漏的设计是因为需要在每一个尺度上捕捉信息
  • 神经网络需要有一些机制是的进程有效且固定特征
  • 我们使用一个带有跳过层的管道来保存每个分辨率的空间信息
  • 沙漏建立的步骤
    • 利用卷积和最大池化层得到一个非常低的分辨率图像
    • 到达最低分辨率后, 通过上采样的方发和原图进行合并
    • 沙漏的结构是对称的, 所以每次下降都有一个向上
    • 到达输出分辨率后, 连续两个 1×1 卷积用于生成最终的网络预测
    • 网络的输出是一组热力图

Layer Implementation

  • 我们使用一些其他网络模型如残差学习模型和”Inception” 替换后, 效果进一步提升
  • 其他的方法并未得到进一步提升
  • 最后扩展了残差模型(residual modules)
  • 没有使用超过 3×3 以上的 filter
  • 图像需要处理成 256x256
  • 最终输出 256 个特征

Stacked Hourglass with Intermediate Supervision (中间监督)

  • 通过堆叠的方式, 让模型自底向上和自顶向下反复预测图像机制
  • 这种方法的关键, 是中间的热力图上我们可以应用损失预测
  • 每个沙漏后都会产生一个预测, 然后这个预测会在本地和全局进行展示
  • 然后下面的沙漏会再次处理这些高阶特征, 然后输出更多的高阶特征
  • 多次迭代和中间监督
  • 如果想理解整体姿势含义, 独立关键点是没用的, 还需要知道他们之间的联系
  • 反复的 top-down, bottom-up 可以缓解这个问题
  • 上一个阶段的结果, 作为输入传递到下一个阶段
  • 不同阶段对整体理解不同层面
  • 这种方法在不同范围内向后和向前很重要, 因为是最终输出是所有关键点的结合
  • 最终的模型使用了 8 组 hourglass
  • 值得注意的是, 这些 hourglass 并不共享权重
  • 但是使用同一个真实预测作为损失函数

Training Details

  • 我们在两个基准(benchmark) 数据集上测试 FLIC 和 MPII 测试了我们的模型
  • 我们将所有图片处理成 256x256
  • 数据增强 旋转(+-30°) 缩放(+-0.25)
  • 我们避免了平移增强, 因为目标任务的位置是决定谁应该被网络注释的关键线索
  • 使用 torch7 , 优化器选择 rmsprop, 学习率 2.5e-4
  • 当精度没有下降后, 将学习率下降了 5 倍
  • 使用了 batch 归一化, 来提升训练
  • 在输出最后结果时, 将原始输入和反转版本结合, 得到平均热力图, 效果提升 1%
  • 使用均方差 (MSE) 作为损失函数, 由预测 和 2D高斯中点组成

Results

Evaluation

  • 评估指标使用 PCK (Percentage of Correct Keypoints)
  • 所谓 PCK 就是误差范围除以一个固定距离, 比如头部尺寸

Ablation Experiments

  • 我们主要有两个设计: Hourglass 的堆叠和中间监督的影响
  • 最后发现堆叠加上中间监督的效果最好

Further Analysis

Multiple People

  • 在多人情景中, 我们以中心和范围来确定某人
  • 容易出现混淆情况
  • 单人效果较好, 多人注释超出了这个工作的范围

Occlusion

  • 阻塞性能评估容易失败有两个原因
    • 第一是关节不可见, 但是给出了位置
    • 第二是关节的位置不出现, 比如只出现上半身, 非全身
  • 不可见和遮挡会影响模型的效果
  • 遮挡是一个显著的挑战
  • 使用热力图可以有效提升遮挡情况下的表现

Conclusion

  • 说明了 hourglass/ Intermediate supervision / stacked 在模型表现中的作用
  • 在多人和遮挡情况下, 仍有不错的表现

Changelog

  • 18.4.12 init.