[OpenMMLab] MMTools学习-笔记2
MMPose-姿态估计
人体姿态估计(Human Pose Estimation)是计算机视觉领域中的一个重要研究方向,也是计算机理解人类动作、行为必不可少的一步,人体姿态估计是指通过计算机算法在图像或视频中定位人体关键点,目前被广泛应用于动作检测、虚拟现实、人机交互、视频监控等诸多领域。本次课程涵盖人体姿态估计的介绍与应用、2D 姿态估计、3D 姿态估计、DensePose、Body Mesh 以及 MMPose 等内容
文章目录
1. 姿态估计概述
- 什么是姿态估计
定义:从给定的图像中识别人脸、手部、身体等关键点,即输入:图像,输出:人体关键点的坐标 - 关键点数量
通常人脸:68个,手势:21个,人体:18个 - 3D姿态估计
定义:预测关键点在三维空间的坐标,在三维空间中还原姿态 - 人体参数化模型
定义:更进一步,从图像或视频中恢复出运动的3D模型
基于以上基础任务,可以继续进行下游任务:
- 行为识别:基于人体姿态识别行为动作(PoseC3D)
- 生成CG,动画
- 人机交互:比如基于手势识别控制
- 动物行为分析
2. 2D姿态估计相关方法
基本思路
输入:image --> 输出:关键点坐标/关键点热力图
热力图 -->关键点坐标:
- 朴素方法:极大值获取
- 归一化热力图概率,再根据位置算期望(重心)得到(可导)
监督信息:
- 直接用关键点坐标和预测坐标算MSE
- 根据关键点坐标生成对应高斯分布热力图,与预测热力图逐点算
模型预测热力图比直接回归坐标相对容易,模型精度相对更高,因此主流算法更多基于热力图,但预测热力图的计算消耗大于直接回归
以及两种典型解决思路:
自顶向下的方法
先目标检测 --> 再根据检测结果估计单人姿态
相关paper:
-
DeepPose(2014)—基于回归预测
整体上复刻了AlexNet,只变了输出处。从原来的一维向量(长为分类的“类别数“)变成了一维向量(长为“两倍的关键点数“)。而之所以输出的长度改成了两倍的关键点数,是因为每个点有横纵两个坐标要预测。
为了达到更棒的局部观测效果,又对小尺度下的各个关键点额外建立更多的AlexNet来学习。其实相当于针对不同关键点提取出更小的图片框,再对这些提出出来的局部图片框进行标准化(坐标标准化)和DNN(神经网络)的重新计算,这样做的原因是在放大目标位置的过程中有利于精度的提高。 -
Hourglass(2016)—基于热力图预测
提出 “stacked hourglass” 的网络来进行姿态估计,它可以获取到所有尺度图像的信息,因为网络结构的下采样和上采样操作,从结构上看像一个沙漏(hourglass) 而得名。
并且可以多个Hourglass级联形成,每一个级联预测的 heatmaps 都会与真值热力图对比产生一个 loss,最后将这些 loss 都加在一起,进行中间监督。 -
HRNet(2019)
HRNet通过并行多个分辨率的分支,加上不断进行不同分支之间的信息交互,同时达到强语义信息和精准位置信息的目的。
自底向上的方法
先检测出所有关键点 --> 再基于其他辅助信息将关键点聚类(分配给不同对象)
- Part Affinity & OpenPose(2016)
- 基于图像同时预测关节位置和四肢走向,利用肢体走向辅助关键点聚类(若两个关键点由某个肢体相连,亲和度高,则很有可能属于同一人),标注分为两部分,一个是关键点的标注,一个是肢体的标注:关键点的标注和其他论文的一样都是关键点的高斯撒点,肢体标注如果点p在肢体上,那就标注为这个肢体的单位向量,否则就标为(0,0)。
- 于是可以根据预测出的关键点坐标,计算两个点之间的亲和度,然后根据亲和度构建带权重的K部图,图的匹配问题求解关键点归属(匈牙利算法)
单阶段的方法
-
SPM(2019)- 首次提出单阶段方法
该方法可以直接从2D图像扩展到3D图像的人体姿态估计
Reference
- 通常一个人体的姿态是由人体上几个具有代表性的关键点来表征(如下图(b))。作者的思路是首先找到每个人体的中心点,也即root joint(如下图 c),然后再计算需要检测的每个关键点到root joint的偏差量,每一个人体姿态就可以由root joint以及这些每个关键点到root joint的偏差量表示
- 所以CNN网络的任务就是回归出root joint以及这些每个关键点到root joint的偏差量就可以完成人体姿态估计了。由于要回归距离root joint较远的关键点的偏差量较为困难,为了简化这一任务,作者提出了Hierarchical SPR的策略,其核心思想是先计算距离root joint较近的几个关键点的偏差量,再以这几个关键点为下一层的root joint,计算该root joint周围的几个关键点的偏差量,逐层向外围推进,直到计算出所有关键点的偏差量,如下图(d)所示。
基于Transformer方法(TODO)
- PRTP(2021)
- TokenPose(2021)
总结
3. 3D姿态估计相关方法
任务:预测关键点在三维空间的坐标
输入2D图像–>输出关键点的空间坐标
注意是回归相对坐标:关键点相对于骨盆点(pelvis)的坐标
基本思路
-
直接预测:从2D图片直接暴力回归得到3D坐标
- Coarsse-to-Fine Volumetric Prediction(2017)
单张图片输入卷积网络,预测3D热力图,模型是用的Hourglass级联网络,对每个关键点,预测出6464d的3D热力图,d表示深度方向分辨率,逐级增加,如图
- Simple Baseline 3D(2017)
有趣的发现:直接2D坐标–>3D坐标,就可以取得较好的结果
- Coarsse-to-Fine Volumetric Prediction(2017)
-
利用视频信息:
- VideoPose3D(2018)
基于单帧图像预测2D关键点,基于多帧2D关键点结果预测3D关键点位置
- VideoPose3D(2018)
-
基于多视角图片:VoxelPose(2020)
4. 姿态估计评估指标
PCP(Percentage of Correct Parts):肢体的检出率
PDJ(Percentage of Detected Joints):关节点的位置精度,PDJ@0.2-指位置精度在0.2躯干直径范围内的
PCK(Percentage of Correct Key-points):关键点的检测精度
OKS based mAP:以关键点相似度OKS(Object Keypoints Similarity)作为评价指标计算mAP, 这个也是COCO竞赛指定的关键点评价指标
5. DensePose与人体参数化模型(TODO)
人体表面参数化:将人体表面分为24个部分,将每个部分参数化到同样大小256*256的UV平面
- DensePose
- 人体参数化模型
SMPL,SMPLify,HMR