参考

  1. 3D 人体姿态估计简述 - 知乎
  2. 3D人体姿态估计(介绍及论文归纳)
  3. 【2021-CVPR】Graph Stacked Hourglass Networks for 3D Human Pose Estimation
  4. 2D/3D人体姿态估计 (2D/3D Human Pose Estimation)

0 前言

3D Human Pose Estimation(以下简称 3D HPE )的目标是在三维空间中估计人体关键点的位置。3D HPE 的应用非常广泛,包括人机交互、运动分析、康复训练等,它也可以为其他计算机视觉任务(例如行为识别)提供 skeleton 等方面的信息。关于人体的表示一般有两种方式:第一种以骨架的形式表示人体姿态,由一系列的人体关键点和关键点之间的连线构成;另一种是参数化的人体模型(如 SMPL [2]),以 mesh 形式表示人体姿态和体型。

近几年,随着深度学习在人体姿态估计领域的成功应用,2D HPE 的精度和泛化能力都得到了显著提升。然而,相较于 2D HPE,3D HPE 面临着更多的挑战。一方面,受数据采集难度的限制,目前大多数方法都是基于单目图像或视频的,而从 2D 图像到 3D 姿态的映射本就是一个多解问题。另一方面,深度学习算法依赖于大量的训练数据,但由于 3D 姿态标注的难度和成本都比较高,目前的主流数据集基本都是在实验室环境下采集的,这势必会影响到算法在户外数据上的泛化性能。另外,2D HPE 面临的一些难题(例如自遮挡)同样也是 3D HPE 亟待解决的问题。

一、基本概念

1.1 算法改进思路:

  1. 网络设计
  2. 特征流
  3. 损失函数
  4. 把问题黑箱化或者半黑箱化,然后从神经网络结构设计、数据处理、增强以及其他机器学习数学方法去暴力式的解决。
  5. PersonLab和PifPaf引入复合场(Composite Field)的概念,预测人为设计好的高维度向量来处理人体姿态预测问题,让模型预测更加巧妙的监督信息, 并且能降低量化误差,设计保持期望的一致性的关联肢体得分公式,再加之快速贪心算法,利用人体的连通特性就能得到多人姿态
  6. 提出无监督的方式处理人体部件

1.2 数据集

目前,3D姿态估计的主要瓶颈是缺少大型的室外数据集,并缺少一些特殊姿态的数据集(如摔倒, 打滚等)。这主要由于3D姿态数据集是依靠适合室内环境的动作捕捉(MOCAP)系统构建的,而MOCAP系统需要带有多个传感器和紧身衣裤的复杂装置,在室外环境使用是不切实际的。因此数据集大多是在实验室环境下建立的,模型的泛化能力也比较差。

1.2.1 类型

  • RGB图像
    • 特征:形状、颜色和纹理
    • 用途:提取兴趣点和光流
  • 深度图像
    • 深度信息对光照变化不敏感
    • 深度信息对颜色和纹理不变性
    • 可靠地估计人体轮廓和骨架
    • 提供场景中丰富的三维结构信息
  • RGB+D图像
    • 骨骼数据
    • 包含人体关节位置

在这里插入图片描述

 不同数据类型的识别方法

1.2.2 可用信息

  • 空间信息 (spatial information)
  • 时间信息(temporal information)
  • 结构信息(structural information)

1.2.3 姿态数据集

1、PoseTrack:人体及关键点的跟踪数据集

2、CrowdPose

3、Human3.6M

数据集链接
处理数据方式:
Toolbox
fetch

1.3 人体姿态估计

  • 集成新一代AutoML技术,降低算法试错成本
  • 人体姿态估计(Human Pose Estimation):指图像或视频中人体关节的定位问题。即,在所有关节姿势的空间中搜索特定姿势。
  • 2D姿态估计(2D Pose Estimation):从RGB图像估计每个关节的2D Pose (x, y) 坐标。
  • 3D姿态估计(3D Pose Estimation):从RGB D图像中估计每个关节的3D Pose (x, y, z) 坐标。
  • Human Pose Estimation 又被称为 Human Keypoint Detection
  • 人体位姿:
    • 位姿中的每一个坐标点被称为一个“部分 (part) ”或关节 (joint) 或关键点 (keypoint)
    • 两个部分之间的有效连接被称为一个“对 (pair) ”或肢体
    • 不是所有的关节之间的两两连接都能组成有效的pair(肢体)
  • 基于判别的方法:把姿态估计当做一个回归问题

1.3 人体结构化特性

  1. 身体部位比例
  2. 左右对称性
  3. 互穿性约束
  4. 关节界限(例如肘部不能向后弯曲)
  5. 身体的连通性(例如手腕与肘部刚性相关)

姿态估计难点

  • 小且几乎看不到的关节
  • 部分遮挡 (partial occlusion)
  • 不同视角 (view-point)
  • 衣服颜色 (black is bad) 及材质
  • 光照变化 (lighting change)
  • 背景杂乱 (background clutter)

1.4 2D 姿态估计

  • 单人姿态估计
    • Benchmark: MPII (2014)
    • 代表作: CPM (CVPR 2016), Hourglass (ECCV 2016)
  • 多人姿态估计
    • Benchmark: COCO (2016), CrowdPose (2018)
    • 自下而上: OpenPose (CVPR 2017), Associative Embedding (NIPS 2017)
    • 自上而下: CPN (CVPR 2018), MSPN (Arxiv 2018), HRNet (CVPR 2019)
  • 挑战 : 遮挡、复杂背景、特殊姿态
  • 在这里插入图片描述

1.5 3D 姿态估计

1.5.1 问题

从图片或视频中估计出关节点的三维坐标 (x, y, z) (回归问题)

  • 输入:包含人体的图片
  • 输出:N*3个人体关节点

1.5.2 挑战

  • 巨大的3D姿态空间、自遮挡
  • 单视角2D到3D的映射中固有的深度模糊性、不适定性(一个2D骨架可以对应多个3D骨架)
  • 缺少大型的室外数据集(主要瓶颈)
    • 缺少特殊姿态的数据集(如摔倒,打滚等)
    • 由于数据集是在实验室环境下建立的,模型的泛化能力较差
    • 3D姿态数据集是依靠适合室内环境的动作捕捉(MOCAP)系统构建的,系统需要带有多个传感器和紧身衣裤的复杂装置,在室外环境使用是不切实际的

1.5.3 应用

  • 动画、游戏 、运动捕捉系统、行为理解、姿态估计可以作为其他算法的辅助环节
  • 人体姿态估计与人体相关的其他任务一起联合学习(人体解析)

1.5.4 方法

1、从2D图片直接暴力回归得到3D坐标

  • 3D Human Pose Estimation from Monocular Images with Deep Convolutional Neural Network (ACCV 2014)
  • Coarse-to-Fine Volumetric Prediction for Single-Image 3D Human Pose (CVPR 2017)
  • 通过深度学习模型建立单目RGB图像到3D坐标的端到端映射,虽然能从图片中获取到丰富的信息,但没有中间监督的过程,模型受到图片的背景、光照和人的穿着影响较大,对于单一模型来说需要学习的特征也太过复杂。

2、先获取2D信息,然后再“提升”到3D姿态

  • 联合2D,3D共同训练(2D信息通常以heatmap来表示)
    • Towards 3D Human Pose Estimation in the Wild (ICCV 2017)
    • 3D Hand Shape and Pose Estimation from a Single RGB Image (CVPR 2019)
    • 需要复杂的网络架构和充足的训练样本。
  • 直接用预训练好的2D姿态网络,将得到的2D坐标输入到3D姿态估计网络中(得益于2D姿态估计较为成熟)
    • Simple Yet Effective Baseline (ICCV 2017)
    • 3D human pose estimation in video with temporal convolutions (CVPR 2019)
    • 2D姿态网络: Hourglass (ECCV 2016), CPN (CVPR 2018)
    • 优点:
      • 减少了模型在2D姿态估计上的学习压力
      • 网络结构简单,轻量级
      • 实时性,快速
      • 训练快,占用显存少
    • 缺点
      • 缺少原始图像输入,可能会丢失一些空间信息
      • 2D姿态估计的误差会在3D估计中放大
  • 为什么要从2D姿态估计到3D姿态估计
    • 因为基于检测的模型在2D的关节点检测中表现更好,而在3D空间下,由于非线性程度高,输出空间大,所以基于回归的模型比较流行。

在这里插入图片描述

1.6 当前主流研究的基本问题与难点

在神经网络结构的设计。目前的研究方法可以分成两大种类:

1.6.1 Top-Down 自上而下

先通过目标检测检测到人体,再做人体姿态估计的两阶段方法。
(G-RMI, RMPE, CPN, SimpleBaseline, HRNet, …)

  • 优缺点:
    • 受到了目标检测任务的限制
    • 基于 bounding box 的单人姿态估计问题,在面对遮挡问题容易受到挫折
    • 精度高,实时性较差
    • 小尺寸图像限制
    • 计算资源有限
    • 量化精度问题:量化精度问题实际上是一种工程问题, 它的本质来源在于, 计算机图像像素位置处于离散空间, 但是真实关键点位置位于连续空间,很多数据变换公式只能近似到离散的像素位置, 所以很多估计都是有偏的, 也有论文19-arXiv-The Devil is in the Details: Delving into Unbiased Data Processing for human pose estimation 在讨论姿态估计中数据变换出现的偏差问题.

1.6.2 Bottom-Up 自下而上

针对整副图像的多人关键点检测,检测所有关键点候选位置的同时,一般会有一定的算法关联或匹配到相似人体(openpose动态规划, associative embedding的tag匹配, personlab的贪婪算法等等Deepcut, OpenPose, Aassociative Embedding, PersonLab)。
Bottom-up方法是一种更值得研究的方法, 是走向实时姿态估计的主要途径。
相关论文:ICCV-19, 也提出了single-stage multi-person pose machine;19-arxiv-objects as points;19-arxiv-DirectPose: Direct End-to-End Multi-Person Pose Estimation

  • 优缺点:
    • 精度不如Top-down的更加精准,但是实时性更好
    • bounding box free
    • 面对拥挤问题、遮挡问题仍然容易受到挫折
    • 图像上的人体的尺度大小,未经归一化,分布很不均匀,关键点特征的提取难大于Top-down的方法
    • 小尺寸图像的量化精度问题 (PersonLab, Pifpaf的offset预测)

1.7 发展(CVPR论文归纳——2D/3D姿态估计)

  • 发迹于2014年, CVPR: Google的DeepPose,同年出现了MPII数据集(Max-Planck )以及MS-COCO数据集。NeurIPS还出现了纽约大学LeCun等人将CNN和Graphical Model联合训练,并使用了heatmap的表示方法。
  • 2016年: CVPR:CMU的Convolutional Pose Machine (CPM)和德国的马克斯普朗克研究所Deepcut以及Stacked Hourglass 网络结构设计的出现。
  • 2017年: CVPR:Google的G-RMI开启基于目标检测的人体姿态估计方法。CMU的OpenPose系统出现,致力于打造实时姿态估计系统。Deepcut的改进版DeeperCut出现。同年ICCV上,Mask RCNN、上海交通大学的RMPE以及随后的AlphaPose崭露头角, NeurIPS2017也出现了 Associative Embedding 以新的端到端的方式来避免人体姿态估计多阶段不连续学习的问题。
  • 2018年:CVPR上出现了旷世的CPN拿下了2017年COCO挑战赛的冠军, ECCV上微软亚洲研究院的SimpleBaseline用自上而下的方法为姿态估计打造最简单的baseline,并刷新了COCO数据集的新高。ECCV上还出现了来自中东技术大学的Muhammed Kocabas提出了MultiPoseNet,以及Google的自下而上多任务的新作PersonLab, 值得一提的是还有一些开辟新的研究角度的方法如ECCV上美国西北大学part-based的姿态估计方法Deeply learned compositional models 。2018年的另外一个趋势就是,新问题新任务的出现,比如CVPR18的DensePose标志着密集关键点人体姿态估计任务的出现, 2D pose track 任务(CVPR2018 PoseTrack数据集)的提出, 以及3D 姿态估计问题的兴起…
  • 2019年CVPR, 姿态估计再次呈现一个小爆发. HRNet的出现, 成为了姿态估计任务中更强的baseline模型, 其结构本身也具备较强的泛化性, 可以作为backbone的候选. 2019 CVPR上还有 PIFPAF,针对小尺度的姿态, Enhanced Channel-Wise and Spatial Information Pose加入了attention的模块到神经网络结构中 ,Related Parts Help 探讨了将人体部件划分为多个group进行学习的好处,Crowded Pose 针对拥挤场景, Fast Human Pose 使用大模型的知识蒸馏,Pose2Seg 引入像素分割等等, ICCV2019 上也有了 single-stage multi person pose machines, 大量的研究在探讨姿态估计的问题, 并且3D 姿态估计即将成为主流。 当然, 2D姿态估计任务仍然是值得去深入探讨的问题, 因为一些本质上的难题目前还没有完全的洞察和有效的解决方案, 比如严重遮挡,多人重叠问题等等。另外, 数据集MPII, COCO数据集上的"刷性能" 也依然是大家孜孜不倦的追求,性能再次来到了新高。

2020年CVPR:

  • Distribution-Aware Coordinate Representation for Human Pose Estimation
    主页:https://ilovepose.github.io/coco/
    论文地址:https://arxiv.org/abs/1910.06278
    代码:https://github.com/ilovepose/DarkPose
  • Cascaded Deep Monocular 3D Human Pose Estimation With Evolutionary Training Data
    论文地址:https://arxiv.org/abs/2006.07778
    代码:https://github.com/Nicholasli1995/EvoSkeleton
  • Bodies at Rest: 3D Human Pose and Shape Estimation from a Pressure Image using Synthetic Data
    论文地址:https://arxiv.org/abs/2004.01166
    代码:https://github.com/Healthcare-Robotics/bodies-at-rest
    数据集:https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/KOA4ML
  • Self-Supervised 3D Human Pose Estimation via Part Guided Novel Image Synthesis
    主页:http://val.cds.iisc.ac.in/pgp-human/
    论文地址:https://arxiv.org/abs/2004.04400
  • Compressed Volumetric Heatmaps for Multi-Person 3D Pose Estimation
    论文地址:https://arxiv.org/abs/2004.00329
    代码:https://github.com/fabbrimatteo/LoCO
  • Cross-View Tracking for Multi-Human 3D Pose Estimation at over 100 FPS
    论文:https://arxiv.org/abs/2003.03972
    数据集:暂无
  • Back to the Future: Joint Aware Temporal Deep Learning 3D Human Pose Estimation
    论文地址:https://arxiv.org/abs/2002.11251
    代码:https://github.com/vnmr/JointVideoPose3D
  • VIBE: Video Inference for Human Body Pose and Shape Estimation
    论文地址:https://arxiv.org/abs/1912.05656
    代码:https://github.com/mkocabas/VIBE

2021年CVPR:

  • Pose Recognition with Cascade Transformers
    论文地址:https://arxiv.org/abs/2104.06976
    代码:https://github.com/mlpc-ucsd/PRTR
  • DCPose: Deep Dual Consecutive Network for Human Pose Estimation
    论文地址:https://arxiv.org/abs/2103.07254
    代码:https://github.com/Pose-Group/DCPose
  • HybrIK: A Hybrid Analytical-Neural Inverse Kinematics Solution for 3D Human Pose and Shape Estimation
    主页:https://jeffli.site/HybrIK/
    论文地址:https://arxiv.org/abs/2011.14672
    代码:https://github.com/Jeff-sjtu/HybrIK
  • Monocular 3D Multi-Person Pose Estimation by Intergrating Top-Down and Bottom-Up Networks
    论文地址:https://arxiv.org/abs/2104.01797
    github地址:https://github.com/3dpose/3D-Multi-Person-Pose(暂未开源)

1.8 评估指标

  • Mean Per Joint Position Error (MPJPE): Protocol 1,关节点坐标误差的平均值
    • 网络输出的关节点坐标与ground truth的平均欧式距离(通常转换到相机坐标)
  • Procrustes analysis MPJPE (P-MPJPE): Protocol 2,基于Procrustes分析的MPJPE
    • 先对网络输出进行刚性变换(平移,旋转和缩放)向ground truth对齐后,再计算MPJPE
  • Percentage of Correct Key-points (PCK),正确关键点的百分比
    • 如果预测关节与ground truth之间的距离在特定阈值内,则检测到的关节被认为是正确的
    • PCKh@0.5:阈值=头骨连接的50% (head bone link)
    • PCK@0.2:预测关节和真实关节之间的距离<0.2*躯干直径 (torso diameter)
    • 有时采用150mm作为阈值, 由于较短的肢体具有较小的躯干和头部骨骼连接,因此可以缓解较短肢体的问题
    • PCK可用于2D和3D
  • Percentage of Correct Parts (PCP),正确部件的百分比
    • 如果两个预测的关节位置与ground truth之间的距离小于肢体长度的一半,则认为肢体被检测到
    • 如果两个预测关节位置和真实关节位置之间的距离小于肢体长度的一半(通常表示为PCP@0.5),则认为检测到肢体(正确的部分)
    • 测量肢体的召回率。缺点是,由于较短的肢体具有较小的阈值,因此它对较短的肢体的惩罚更大
    • PCP越大,模型越好
  • Percentage of Detected Joints - PDJ,检出关节的百分比
    • 如果预测关节和真实关节之间的距离在躯干直径的某一比例范围内,则认为检测到的关节是正确的
    • PDJ@0.2=预测关节和真实关节之间的距离<0.2*躯干直径
  • Object Keypoint Similarity (OKS) based mAP
    • 用于COCO关键点检测挑战赛中
      在这里插入图片描述

1.8 代码

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐