Smpl

2023-05-16

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

Meetup

SMPL==>SMPL-x

SMPL-X

不管是为了对人体3D模型进行标准化的参数化,从而建模成3D数字人体模型,还是为了对人体3D模型进行渲染,亦或是为了引入人体姿态先验知识,我们都需要想办法设计一个可以数字化表示人体的方法,SMPL模型就是其中一种最为常用的。

A Skinned Multi-Person Linear Model. Skinned表示不仅仅骨架点,还是有蒙皮的 ,蒙皮通过 3D Mesh 表示 3D Mesh 指的是在立体空间里面用三个点表示一个面,可以视为是对真实几何的采样,其中采样的点越多,3D mesh就越密,建模的精确度就越高(这里的由三个点组成的面称之为三角面片)

Skinned

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)


人体模型

多边形网格Polygon_mesh

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 SMPL Model

(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组成的三角面片)

CPP实现Ref

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

Github

  • : goldstine [x] g