3D人体建模
计算机人体仿真 计算机图形学
发展:线框建模 实体建模 曲面建模 物理建模
应用:医学图像 生物医学 手势识别 视频会议 视频游戏 自动新闻播放 电影制作 材料变形 图像压缩
目录
| 相关论文 | SMPL | Demo演示 | 测试 | |:——–:|:——–:|:——–:|:——–:|
相关论文
- Body Model : SMPL: A Skinned Multi-Person Linear Model. SIGGRAPH Asia, 2015. [Page] [Code]
- Body Pose : 人体姿态估计
- Naked Body Mesh
- Clothed Body Mesh
- Human Depth Estimation
- Human Motion
- Human-Object Interaction
- Animation
- Cloth/Try-On
- Neural Rendering
- Dataset
SMPL
SMPL: A Skinned Multi-Person Linear Model. SIGGRAPH Asia, 2015. Page Code
SMPL==>SMPL-x
不管是为了对人体3D模型进行标准化的参数化,从而建模成3D数字人体模型,还是为了对人体3D模型进行渲染,亦或是为了引入人体姿态先验知识,我们都需要想办法设计一个可以数字化表示人体的方法,SMPL模型就是其中一种最为常用的。
A Skinned Multi-Person Linear Model. Skinned表示不仅仅骨架点,还是有蒙皮的 ,蒙皮通过 3D Mesh 表示 3D Mesh 指的是在立体空间里面用三个点表示一个面,可以视为是对真实几何的采样,其中采样的点越多,3D mesh就越密,建模的精确度就越高(这里的由三个点组成的面称之为三角面片)
Multi-person表示的是这个模型是可以表示不同的人的,是通用的。Linear就很容易理解了,其表示人体的不同姿态或者不同升高,胖瘦(我们都称之为形状shape)是一个线性的过程,是可以控制和解释的(线性系统是可以解释和易于控制的)。
在SMPL模型中,我们的目标是对于人体的形状比如胖瘦高矮,和人体动作的姿态进行定义,为了定义一个人体的动作,我们需要对人体的每个可以活动的关节点进行参数化,当我们改变某个关节点的参数的时候,那么人体的姿态就会跟着改变,类似于BJD球关节娃娃的姿态活动。为了定义人体的形状,SMPL同样定义了参数β ∈ R 10 \beta \in \mathbb{R}^{10}β∈R 10,这个参数可以指定人体的形状指标,我们后面继续描述其细节。
总体来说,SMPL模型是一个统计模型,其通过两种类型的统计参数对人体进行描述
形状参数(shape parameters):一组形状参数有着10个维度的数值去描述一个人的形状,每一个维度的值都可以解释为人体形状的某个指标,比如高矮,胖瘦等。 姿态参数(pose parameters):一组姿态参数有着24 × 3 24 \times 324×3维度的数字,去描述某个时刻人体的动作姿态,其中的24 2424表示的是24个定义好的人体关节点,其中的3 33并不是如同识别问题里面定义的( x , y , z ) (x,y,z)(x,y,z)空间位置坐标(location),而是指的是该节点针对于其父节点的旋转角度的轴角式表达(axis-angle representation)(对于这24个节点,作者定义了一组关节点树)
Ref: 以目前的计算机视觉技术能否对一张二维的人体全身照进行3D重建? 人体动作捕捉与SMPL模型 (mocap and SMPL model)
人体模型
AAAI2020 Microsoft:A human body could be represented by a 3D mesh 点线面集合,这个集合定义了3D计算机图形中的多面体对象的形状 计算机图形学,尤其是3D Computer Graphics 和 Geometric Modeling的大子分支large sub-field
3D Human Body?why 基于模型的方法通过拟合特定的body model参数从一个single image 里面估计human body的pose 和 shape
vertex vector 空间法向量计算 visual hull?
坐标系(X,Y,Z)
Geometric Template
Appearance Signatrue
几种典型3D Body Model:
- SARC3D
- SCAPE
- SMPL(Simple yet powerful body model)
SMPL通过计算pose和shape parameters的a linear function来render the body mesh, which enables the optimization of SMPL model by learning from massive data. 为啥?为啥学一个linear function就使得对SMPL的优化就通过from data学习来解决?
SMPL:人体可以认为是一个基础模型和在该模型基础上进行形变的总和,在形变基础上进行PCA,得到刻画形状的低维参数,形状参数(Shape),同时使用运动树表示人体的姿态,即运动树每个关节点和父节点的旋转关系,该关系可以表示为三维向量,最终每个关节点的局部旋转向量构成了smpl模型的姿态参数(Pose)
目前市面上的渲染器,SMPL模型使用的比较多,三维参数化人体模型被广泛使用,它是估计人体三维姿态和形状的有利先验,其主要思想是通过低维度参数对三维人体的变形进行建模 SCAPE–>SMPL–>SMPL-X–>STAR STAR 由发布SMPL模型的研究人员2020成果,对SMPL模型的有效改进
SMPL source code [‘v_template’, ‘weights’, ‘posedirs’, ‘pose’, ‘trans’, ‘shapedirs’, ‘betas’, ‘J’]: basicModel_m_lbs_10_207_0_v1.0.0.pkl SMPL模型的标准形态,加上形状参数后的Mesh,加上姿态参数后影响的肌肉的松紧状态,以及由姿态参数驱动关节动作后的Mesh
(a )中的是由平均顶点集以及权重所描述的人体模型。
(b )中平均顶点集在体态的影响下发生了位移,同时体态对关节也产生了影响。
(c )平均顶点集在体态与动作的两重影响下发生的位移,注意此时的图并未有任何的pose。
(d) shape和pose双重影响下的SMPL模型;总共四项,分别为经过体型与姿势影响的顶点集、经过体型影响的关节,以及姿势和权重。
Linear Blend Skinning
骨骼蒙皮算法
视觉三维重建: SMPL论文解读和相关基础知识介绍 zhihu|weixin public account: 视觉三维重建
基础概念
- 顶点vertex: 动画模型可以看成多个小三角形(四边形)组成,每个小三角形就可以看成一个顶点,定点越多,动画模型就越精细
- 骨骼点:人体的一些关节点,类似于Pose Estimation的key point,每个骨骼点都由一个三元组作为参数去控制(可以查看欧拉角,四元数相关概念)
- 骨骼蒙皮Rig: 建立骨骼点和顶点的关联关系,每个骨骼点会关联很多顶点,并且每个顶点的权重都不同,通过这种关联关系,就可以通过控制骨骼点的旋转向量 来控制整个人运动
- 纹理贴图:动画人体模型的表面纹理,即衣服裤子
- BlendShape: 控制动画角色运动有两种,一种是上面说的Rig,还有一种是利用BlendShape,这种方式相比于Rig,可以不定义骨骼点,比较方便
- 蒙皮:将模型从一个姿态转变为另一个姿态,使用的转换矩阵叫做蒙皮矩阵 (Linear Blend Skinning algorithm)
- 顶点权重(vertex weights):用于变形网格mesh
- uv map:将3D多边形网格展开到2D平面得到UV图像 VR mapping 映射
- texture map: 将3D多边形网格表面的纹理展开到2D平面,得到纹理图像
- 拓扑(topology):重新拓扑 是将高分辨率模型转换为可用于动画的较小模型的过程,两个mesh拓扑相同是指两个mesh上面任一个三角面片的三个顶点的ID是一样的(如某一个三角面片三个顶点是2,5,8,另一个mesh上也必有2,5,8组成的三角面片)
SMPL:</br> 相比传统LBS,人体姿态影像体表形貌方法:可以模拟人的肌肉在肢体运动过程中的凸起和凹陷,因此可以避免人体在运动过程中的表面失真,可以精准地刻画人的肌肉拉伸以及收缩运动的形貌
SMPL总体模型
input args: β:人体高矮胖瘦,头身比例等10个参数,是ShapeBlendPose参数,可以通过10个增量模板控制人体形状变化 Θ:人体整体运动姿态和24个关节相对角度 每个关节点3DoF
符号含义: M:SMPL function
W:Skinning function
B~p~ :Pose blendshapes function
B~s~ :Shape blendshapes function
J: joint regressor :predicts joints from surface
:::info 模型生成的函数
Pose Estimation
根据数据类型可以具体划分为:
- 单人姿态估计(Single-Person Skeleton Estimation)
- 多人姿态估计(Mutil-Person Pose Estimation)
- 人体姿态跟踪(Video Pose Tracking)
- 3D人体姿态估计(3D Skeleton Estimation)
多个人体有重叠,行人关键点有重叠</br> 受到视角影响,衣服影响</br> 受到人体姿态,物理因素影响</br> 光照,人体角度,拍摄角度</br>
数据集与评测 按照单人和多人划分:
- PCK的评价多出现在单人的姿态估计上
- 多人姿态估计评价标准基本上为mAP 按照2D和3D进行划分:
-
MPII/MSCOCO/Human3.6M
姿态估计模型发展
DeepPose(2014年),第一个使用CNN做姿态估计的方法,用关键点回归的方法
2015年之前,直接对关键点坐标做精确回归
2017年开始,有关键点坐标+HeatMap做预测的过程
2018年开始,多人估计占据主流
| 2D Pose Estimation
|--| Single Person
|------| CPM(OpenPose)
|------| Stacked Hourglass
|--| Mutil Person
|------|Bottom-up
|----------| PAF(OpenPose)
|------|Top-down
|----------|G-RMI
|----------|Mask-RCNN
|----------|RMPE
|----------|CPN
OpenPose FashionAI_keypoint_detection</br> Pose Estimation
直接回归坐标改进: 网络学习到多阶段的反馈–>误差迭代反馈模型 先验知识–>双源CNN
Pose Estimation Application: 打分 | 动作指导 |
Demo演示
官网SMPL:
Python | DMPL | Maya | Unity | Unreal: Download |
SMPL for Unity
FBX格式文件: 以Autodesk Filmbox格式保存的三维模型。它可以在各种数字建模和内容创建程序中使用和共享,包括Autodesk的应用程序套件。游戏开发者和动画师经常使用FBX文件。
include:
- Male and female models(Unity-compatible FBX format)
- Default mesh.The average SMPL body.
- Rigged skeleton ,using LBS
- 10 shape blendshapes
- 207 corrective pose blendshapes
- UV map
- Scripts and sample Unity project to help you get started
- if you want to edit body shape or repose the mesh,you need the scripts
- readme.txt for installation and license instructions
- How-to_SMPLinUnity.pdf for step-by-step guide for using SMPL in Unity
System Requirements Unity 5+ (tested on macOS Sierra and Windows 10)
Download Download version 1.0.0 for Unity
How to use SMPL in Unity Download tutorial (PDF)
UP
- : goldstine [x] g