人体姿态估计有不同的分类,比如:
- 2D/3D/mesh
- 单人/多人
- 自顶向下(top-down)/自底向上(bottom-up)--多人姿态估计,分为自顶向下和自底向上,代表作分别是AlphaPose和OpenPose。
- 图像(image)/视频(video)
- 坐标/热图(heatmap)
- 检测(detection-based)/回归(regression-based)
- 单阶段(single-stage)/多阶段(multi-stage)
其中:
- 自顶向下的多人姿态估计=检测网络+单人姿态估计网络(SPPE, Signle Pensor Pose Estimation)
- 3D姿态估计=2D姿态估计+refineNet(2D->3D)
- 基于视频的姿态估计=基于图像的姿态估计+时序网络
- 基于热图的姿态估计=坐标回归+高斯核转换 (其中热图方法大多即基于检测的)
目录
开山之作:《Smpl: A skinned multi-person linear model》
SMPLify (Optimization-based method)
SPIN (both optimization & regression)
3D姿态估计
问题本质:
3D人体姿态估计是从图片或视频中估计出关节点的三维坐标 (x, y,z),它本质上是一个回归问题。
![](https://i-blog.csdnimg.cn/blog_migrate/b934b33a3dcfad8c0c8de91356238036.png)
3D形态重建
旨在恢复人体的三维网格
![](https://i-blog.csdnimg.cn/blog_migrate/30a361765161e10e3f8d91e5968ff6cd.png)
一般分为三类:
- Optimization-based Paradigm 【根据2D检测结果,优化生成3D mesh】
代表作:SMPLify(ECCV' 2016) Smplify
- Regression-based Paradigm 【直接处理图像像素-->生成3D mesh】
代表作:HMR(CVPR' 2018) Human Mesh Recovery
- 两者结合的 代表作:SPIN(ICCV'2019)(相当于HMR+SMPLify)
开山之作:《Smpl: A skinned multi-person linear model》
Michael J Black 实验室的工作一
SMPL模型学习,可参考:
SMPL(Skinned Multi-Person Linear Model)是一种裸体的(skinned),基于顶点(vertex-based)的人体三维模型,能够精确地表示人体的不同形状(shape)和姿态(pose)。
SMPL适用于动画领域,可以随姿态变化自然的变形,并伴随软组织的自然运动。SMPL与现有的许多图形渲染管线都是兼容的。
SMPL是一种可学习的模型,通过训练可以更好地拟合人体的形状和不同姿态下的形变。
它将身体形状分为identity-dependent shape和non-rigid pose-dependent shape。
人体可以理解为是一个基础模型和在该模型基础上进行形变的总和,在形变基础上进行PCA,得到刻画形状的低维参数——形状参数(shape);同时,使用运动树表示人体的姿势,即运动树每个关节点和父节点的旋转关系,该关系可以表示为三维向量,最终每个关节点的局部旋转向量构成了SPML模型的姿势参数(pose)。
这种方法与传统的LBS的最大的不同在于其提出的人体姿态影像体表形貌的方法,这种方法可以模拟人的肌肉在肢体运动过程中的凸起和凹陷。因此可以避免人体在运动过程中的表面失真,可以精准的刻画人的肌肉拉伸以及收缩运动的形貌。
Parameters:
在SMPL文章中介绍了SMPL的总体模型,这个模型是通过训练得到,就是一些参数, 该模型中β和θ是其中的输入参数,其中β代表人体高矮胖瘦、头身比等比例的10个参数,是一个10-D的vector。θ是代表人体整体运动位姿和24个关节相对角度的75(24*3+3;每个关节点3个自由度,再加上3个根节点)个参数,是一个3K-D的vector(代表pose,其中K为骨架节点数,3是每个关节具有的3个自由度)。
- β参数是Shape Blend Pose参数,可以通过10个增量模板控制人体形状变化: 具体而言:每个参数控制人体形态的变化可以通过动图来刻画。
-
核心思想就是将通过网络回归输出的姿态参数θ(_∈24×3_)和形态参数β(_∈10×1_)送入一个基础人体模板(Template mesh)T(_∈6480×3_),然后形成各种姿态和体型的人体姿态。
-
姿态参数控制(23+1)个关节点。与之前的3D关节点坐标回归不同,每个关节点由3个旋转参数控制,一共有23个,还有一个控制全局旋转,相当于根关节点(root),所以姿态参数θ共有[(23+1)×3]=72个参数;
-
形态参数控制人的体型,每个参数分别控制包括高矮、胖瘦、身体的局部比例等。1.0版本共有10个参数,后来的1.1版本拓展到300个参数,但是影响明显的仍然是前10个;
-
基本模板是个固定姿态的人体mesh,也就是[θ=0 和β=0]的情况,因此这个姿态也被称为“zero pose”[零姿态]。
-
SMPL还训练了一个关节矩阵J ,可以从生成的人体mesh映射得到23个人体关节点坐标(x,y,z),所以基于SMPL的方法通过J 得到关节点坐标和3Dpose的方法对比,例如评价指标MPJPE。
-
后续论文方法均是致力于恢复更准确的3D Human mesh.
SMPLify (Optimization-based method)
Michael J Black 实验室工作二 【ECCV' 2016】
-
SMPLify https://smplify.is.tue.mpg.de/:基于优化的方法。给定一个图像,使用基于 CNN 的方法来预测 2D 关节位置。然后将 3D 身体模型拟合到此,以估计 3D 身体形状和姿势。
-
SMPLify奠定了SMPL重建算法的基石,它从单张图像中重建人体的SMPL姿态;
-
流程分为两步:1)单张图像经过DeepCutc恢复人体的2D关键点,2)然后利用2D关键点恢复SMPL姿态(这有点类似于2D->3D的提升)
提出了SMPL重建的损失函数(objective function),由5部分组成,包括:1)a joint-based data term and 2)several regularization terms including an interpenetration error term(这个互穿项在SPIN中舍弃了,因为它使得拟合变慢,而且性能并没有提高多少), 3)two pose priors, and 4)a shape prior。后续的方法基本都使用该损失函数或对其进行改进。
HMR (Regression-based method)
Michael J Black 实验室工作三 【CVPR' 2018】
基于回归的方法。Backbone model: GAN
图像 I 通过卷积编码器传递。输入到迭代 3D 回归模块,该模块推断人类的潜在 3D 表示,以最小化联合重投影误差。
3D 参数也被发送到鉴别器 D,其目标是判断这些参数是来自真实的人类形状和姿势。
SPIN (both optimization & regression)
-
SPIN:基于优化+回归的方法。这篇文章主要是将基于迭代优化的方法(SMPLify)和基于网络回归的方法(HMR)进行结合。
网络预测的结果作为优化方法的初始值,加快迭代优化的速度和准确性;迭代优化的结果可以作为网络的一个强先验。两种方法相互辅助,使整个方法有一种自我提升的能力,称之为SPIN(SPML Optimization IN the loop)。
SPIN算是HMR和SMPLify的结合,分别作为回归网络和优化网络,与SMPLify的区别(改进)如下:
SPIN舍弃了损失函数中的互穿项;
SPIN使用HMR的回归结果作为初始化结果,然后迭代优化一次;SMPLif使用0姿态初始化,迭代优化了4次;
SPIN使用HMR回归的相机参数,SMPLify使用了三角形相似;
SPIN的2D关节点使用了OpenPose, SMPLify使用了DeepCut;
SPIN提供了GPU并行处理图片,SMPLify延时较高不适合处理单张图像。
Others
科研方法论:从一篇文献中追根溯源,并总结流派和方法,然后再继续关注当前的最新进展,逐步完善自己的领域。(按照时间线整理)
References
万字长文!人体姿态估计(HPE)入门教程https://mp.weixin.qq.com/s/PorJ2qv4vN_dnNtQ33W3_Q (主要对这篇文章根据个人兴趣进行了摘记!全文链接如上☝🏻 感谢这篇文章,总结地很全面👍🏻)
[1] SMPLify(ECCV'2016):《Keep it SMPL: Automatic Estimation of 3D Human Pose and Shape from a Single Image》https://smplify.is.tue.mpg.de/
[2]SMPLify-X (CVPR'2019):《Expressive Body Capture: 3D Hands, Face, and Body from a Single Image》https://smpl-x.is.tue.mpg.de/
[3]HMR(CVPR'2018) :《End-to-end Recovery of Human Shape and Pose》
https://link.zhihu.com/?target=https%3A//akanazawa.github.io/hmr/
[4] SPIN(ICCV'2019):《 Learning to Reconstruct 3D Human Pose and Shapevia Model-fitting in the Loop 》https://www.seas.upenn.edu/~nkolot/projects/spin/
[5] VIBE(CVPR'2020):《 Video lnference for Human Body Pose and Shape Estimation》
https://github.com/mkocabas/VIBE