[Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields] 论文笔记

沥川 bio photo By 沥川

背景

正在参加天池举办的 FashionAI全球挑战赛——服饰关键点定位, 做一些技术储备, 了解人体姿态估计(Human Pose Estimation) 相关技能点, 读一些论文并做笔记, 方便事后学习回忆.

Open-Pose:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields, 在 2016 年的 COCO 数据集上取得 61% 的成绩(TOP1), 在 MPII 上取得 75% 的好成绩.

Abstract

- 自底向上 (bottom-up)
- 人数不限
- 两个分支学习同一个部件的位置和关联

Introduction

- 人体二维姿态估计 (Human 2D pose estimation) 问题集中在确定身体的各个部位上
- 推断多人姿势, 特别是交叉重叠人群的多人, 会带来挑战.问题有三
    - 人可以出现在图片的任何地方
    - 人与人直接交叉重叠
    - 实时性
- 目前解决方法是, 先检测到人, 然后对人进行姿势估计 (top-down)
- 从上至下方法的问题是, 如果人分离器失灵, 那么后面的操作就失效了; 且对每个人都要进行一次单人分离, 当人数增大的时候, 运算资源消耗增大.
- 自下而上的方法, 提供了早期的鲁棒性和对多人分离不增加复杂性
- 以前的自下而上的方法不能保持效率的提高, 是因为分析需要昂贵的 - 全局推断.
- 我们使用自下而上的 Part Affinity Fields 的方法 (PAFs)
- 对应位置和肢体方向两个分支, 同时进行, 然后结合

Method

- input 是 w × h 的图片
- output 是 每个人的解剖关键点
- 步骤
    - 首先, 前馈神经网络预测身体部位位置的一组 2D 置信图 S
    - 同时, 生成一组 2D 矢量字段 L, 编码了部件之间的关联程度
    - 最后, 通过贪婪推理对置信图和置信域进行解析
- Simultaneous Detection and Association
    - 一开始使用 vgg19 并且进行了微调
    - 生成 F 到每个分支的起点
    - 使用 L2 正则作为损失函数
    - 损失函数乘以权重 W
    - 在每个 stage 中通过补充梯度, 来避免梯度消失的问题
- Confidence Maps for Part Detection
    - 如何寻找到关键点
    - 采用置信图的最大值而不是平均值
- Part Affinity Fields for Part Association
    - 需要对关键部位关联进行置信测量
    - 一种测量关联的方法是, 没对部分之间加重点, 并检查关联 (f5a)
    - 然后当人们聚集在一起时, 这些中点会提供错误的关联 (f5b)
    - 这个错误是由两个限制产生的
        - 它只编码了每个肢体的位置, 而不是方向
        - 它将肢体的支撑区域缩小到一个点.
    - 中点应该落在四肢上
- Multi-Person Parsing using PAFs
    - 使用 non-maximum suppression 来获取关键点预测
    - 得到一个很多可能肢体的集合
    - 解析最优解问题对应 K-dimensional matching problem 和 NP-Hard 问题
    - 使用 greedy relaxation 算法不断产生高质量的匹配
    - 增量了两个 two relaxations to the optimization
        - 首先, 选择最小的边来生成人体姿态的生成树骨架
        - 其次, 将匹配问题分解为一组二分匹配子问题, 独立确定相邻树节点的匹配 ## Results
- 在 MPII human multi-person dataset 和 the COCO 2016 keypoints challenge dataset 都取得了很好的成绩
- Results on the COCO Keypoints Challenge
    - open-pose 的方法比自上而下的方法, 在小规模人群中, 有更低的精度
    - 大多数误差来自于关键点定位

Runtime Analysis

- 自上而下的方法, 随着人数增加而时间增加, 成正比
- 而这个方法, 随着人数增加, 运行时间增加缓慢

Discussion

- 让机器理解重大时刻, 人们在干什么
- 这样可以让机器能够做出及时反应, 并参与其中

Changelog

  • 18.4.9 init.