RMPE 论文读书笔记
原文链接 https://hsfzxjy.github.io/2018-03-08-RMPE-Notes/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
论文地址:https://arxiv.org/pdf/1612.00137
<!--more-->
现有的 Pose Estimation 解决方案
Single Person Pose Estimation (SPPE)
只尝试估计一个人的姿势。早期曾使用诸如随机森林等机器学习方法,近几年采用深度学习方案,大致有如下几种:
- 基于 DNN 的
- 基于 CNN 的(如 RMPE 使用的 Hourglass)
- 其他架构,如 DeepPose
局限:
要求人能被精准定位,对人的位置十分敏感。
Multi Person Pose Estimation (MPPE)
可以估计多人的姿势,不同架构的框架对噪音(如 人的重叠、人的鲜有姿态)有不同的敏感度。
part-based MPPE
将人看做若干 part 的组合,先对特定的 part 进行识别,再组合起来得到人的完整姿态。
局限:
检测 part 时只考虑了局部的小区域,在某些情况下表现不好。
two-step MPPE
先检测每个人的 bounding box,再在每个 box 中独立地估计姿势。由于 bounding box 中仅有一人(而且可以做到占据 box 的一大部分),估计姿势可以采用现成的 SPPE 方案。但 SPPE 普遍对人的位置依赖较高,因此 two-step MPPE 对 bounding box 的性能有较高的要求。
RMPE 基于此。
RMPE
思想
尽可能精确地识别出每个人的 bounding box,并做适当变换使其便于被 SPPE 处理;再交给 SPPE 进行估计姿势。为了增强 RMPE 的鲁棒性,应该用一些手段从有限的训练集中生成尽量多的样本。
Pipeline
两条分支:
(Object Detector) -> (STN) -> (Proposals Generator) -> (master SPPE) -> (SDTN, STN 的逆操作) -> Pose NMS -> Output
(Object Detector) -> (STN) -> (Parallel SPPE)
细节
- 有别于传统的 Object Detector,RMPE 在其后增加了 STN 作为图像正规化手段。这是因为 SPPE 对人的位置非常敏感,倘若能固定住人的位置(如居中),则可最大化 SPPE 的性能。
- RMPE 中有两条 SPPE 分支,其中的 parallel SPPE 的参数是固定的,它将 STN 后的图像直接与正规化后的 label (即将原 label 做适当变换使人处于正中)比较得到误差并由此进行训练。训练的结果可使 STN 正确地将人变换至中间位置,从而最优化 master SPPE。
- 考虑到对于一个人,Object Detector 只能产生一个 bounding box,RMPE 在 STN 后面又安插了 Proposals Generator 用于生成更多的样本。Proposals Generator 会对 Object Detector 产生的 bounding box 做一定的偏移,再传入 master SPPE。
- 考虑到 Proposals Generator 会对一个人生成多个 bounding box,而对于不同的 bounding box,master SPPE 会做出不同的姿态估计,RMPE 引入 Pose NMS(Pose Non-Maximum Suppression)对这些姿态进行合并。Pose NMS 综合考虑了姿态的位置与置信度因素。
实现(测试期)
在 Pipeline 中,有两个组件 Object Detector 和 SPPE 是被泛化,可以使用任何解决方案。在测试时,作者使用了 VGG-based SSD-512 作为 Object Detector,及 Stacked Hourglass Model 作为 SPPE 的实现,以达到最大的性能。
新组件的必要性
较于传统的架构,RMPE 引入了 STN (及附属的 Parallel SPPE)、Proposals Generator 及 Pose NMS 这三个新组件。在作者分别移除了它们后,RMPE 的性能显著下降。可见这些组件引入的必要性。
相关组件
Spatial Transformer Network (STN)
原始论文:https://arxiv.org/abs/1506.02025
由 Localization Net、Grid Generator、Sampler 三部分组成,其中 Localization Net 为一个传统的 CNN。STN 可以被嵌入在具体任务的 CNN 中以增强其性能。STN 不需要额外的监督学习,随着原来的网络一起训练即可。
Stacked Hourglass Network
原始论文:https://arxiv.org/abs/1603.06937
Hourglass 是一个基于 CNN 的 SPPE。采用若干“沙漏状”模块(先自上而下降低分辨率,再自下而上采样)堆叠,相比其他 CNN 有更好的性能。
相关数据集
MPII Human Pose Dataset: http://human-pose.mpi-inf.mpg.de/