SMPL经典论文

2023-05-16

摘要

  1. 模型参数从这些数据中学习:
    休息姿势模板、混合(blend)权重、与姿势相关的混合形状、与身份相关的混合形状、从顶点到关节位置的回归器
  2. 与姿势相关的混合形状是姿态旋转矩阵的线性函数,这个简单设定 允许从大量对齐了3D网格的不同姿态下不同人体中训练整个模型
  3. 使用线性混合蒙皮或者双四元数混合蒙皮-DQBS 来生成SMPL
    (线性权重混合会造成糖果包装问题,胳膊会像拧糖纸那样畸形,而四元数旋转可以在旋转路径的圆弧上插值)

1. 介绍
目的:创建逼真的动画人体,表现不同的身体形状,通过姿势自然变形,像真人一样呈现软组织运动,能够快速渲染,易于部署,并与现有的渲染引擎兼容。
特点:目标函数通过惩罚注册网格和本模型的逐顶点误差(per-vertex disparities)来进行训练。
方式:

  1. 为了解人如何随姿势变形,使用1786种不同姿势的不同对象的高分辨率3D扫描,将模板网格与每次扫描对齐,以创建训练集,根据对齐扫描自动估计所有参数;
  2. 使用主成分分析(PCA)从CAESAR数据集中学习男性和女性体型的线性模型。为每次扫描注册一个模板网格,并对数据进行姿势规范化;
  3. 以各种形式训练SMPL模型,并将其与用完全相同的数据训练的BlendSCAPE模型进行量化比较;
  4. 我们扩展了SMPL模型,通过调整Dyna model来捕捉软组织动力学。我们计算SMPL和Dyna训练网格之间的顶点误差,转换为静止姿态,并使用PCA降低维数,生成动态混合形状。然后根据部件的角速度和加速度及动态变换的历史来训练软组织模型,使用不同身体质量指数的身体训练DMPL,并学习身体形状对模型的影响。动画显示DMPL更逼真;
  5. 使用标准渲染引擎,SMPL模型可以比CPU上的实时动画制作速度快得多。SMPL具有低多边形数、简单的顶点拓扑、干净的四边形结构、标准拟合以及合理的面部和手部细节(尽管在这里没有拟合手部或面部)。SMPL可以表示为可以导入动画系统的Autodesk Filmbox(FBX)文件。SMPL模型可以在Maya、Blender、Unreal Engine和Unity中驱动。

2. 相关工作

  1. 混合蒙皮-骨架子空间变形方法,将网格的表面附着到骨骼结构。网格曲面中的每个顶点都使用其相邻骨骼的加权影响进行变换(LBS),大量试图解决变换问题的方法如四元数或双四元数蒙皮、球形蒙皮等,然而,这些方法通常会产生不自然的结果,这里我们重点学习如何纠正混合蒙皮的局限性
  2. 自动匹配-现有方法不能解决LBS的问题是因为他们没有学习修正了的混合形状( corrective blend shapes-没有关注体型空间的变化),我们假定运动结构已知,现有方法主要局限性在于模型没跨越身体形状的空间。Miller等人[2010]将蒙皮权重从已知模型转移和调整到新模型,而没生成混合形状,产生标准LBS伪影,目标函数也不清晰。
  3. 混合形状- 姿态空间变形模型(PSD)定义了相对于基本形状的关节姿态变形(即顶点位移),也被称为“散乱数据插值”和“纠正包络”。本文类似WPSD, 为特定的关键姿态定义修正形状,以便在添加到基本形状中并通过混合剥皮(如LBS)进行转换时,产生正确的形状。在修正时使用如径向基核(RBF),计算距离和权重,对样本进行非线性的加权。
  4. 学习姿态模型-最开始是采集特定的关键帧,保存他们的蒙皮变换模板,然后插入到需要估计的模型中,但这种方法只有在接近所存储的姿态模型时才有效果。目前还不清楚需要多少这样的形状来模拟完整的人体姿势。随着模型复杂性的增加,控制所有这些形状以及它们如何相互作用的复杂性也在增加。|| 为了解决这个问题,Kry等人学习了每个关节变形的低维PCA基础。与姿态相关的变形用基向量的系数来描述。Kavan等人使用使用非线性剥皮方法生成的示例网格来构造线性近似。James和Twigg结合了学习骨骼(非刚性、仿射骨骼)和直接从注册网格中学习混合权重的想法。|| 另一种解决混合剥皮局限性的方法是通过多重包络(MWE),不是通过骨变换矩阵的加权组合来计算每个顶点的权重,而是学习这些矩阵的元素的权重。这就增加了模型的容量(更多的参数)。就像[James和Twigg 2005]一样,他们对骨骼转换进行了过度参数化,以提供更多的表达能力,然后使用PCA来去除不必要的自由度。他们的实验通常涉及到用户交互,而目前的游戏引擎并不支持MWE方法。

有位大佬把主体部分解释的很清楚,鄙人跟着学习了一遍,在此放上链接
https://blog.csdn.net/JerryZhang__/article/details/103478265

剩下的部分略做翻译:

6. DMPL: Dynamic SMPL

虽然SMPL用pose模拟静态软组织变形,但它并没有模拟由于身体运动和与地面的作用力而发生的动态变形。给定包含软组织动力学的四维配准,我们只通过只优化具有个性化模板形状的SMPL模型的姿态来拟合它们。SMPL和观察到的网格之间的位移对应于动态的软组织运动。为了建模这些,我们引入了一组新的附加混合形状dynamic blend shapes。这些额外的位移与身体和四肢的速度和加速度而非姿势有关。将这些想法应用到基于顶点的附加模型中。


输入t时刻的动态控制向量和shape相关系数β,输出预测的rest pose中的顶点偏移

7. Discussion

  • 高质量的培训数据是很重要的
  • 训练所有参数(模板形状、混合权重、关节回归器、形状/姿态/动态混合形状)来最小化顶点重建误差对于获得一个好的模型很重要。在这里,该模型的简单性是一个优势,因为它能够使用大量的数据来训练所有内容。与径向基函数相比,学习的线性函数的更大支持允许模型推广到任意姿态;此外,简单的线性形式使它在游戏引擎中快速动画,而无需在权重中烘烤。由于旋转矩阵的元素是受约束的,因此模型在训练集外泛化时不会“爆炸”
  • 理想情况下,一个人应该有足够多来自不同的人的姿势数据来学习一个真正的身体形状依赖的姿势变形空间
  • SMPL性能的关键是使混合形状成为R*(θ)的线性函数。这一公式、足够的训练数据和良好的优化策略使学习模型成为可能
  • 最接近我们的工作是Allen等人的开创性工作[2006]。他们的模型更复杂,使用径向基函数进行散射数据插值、形状相关的姿态变形和一组固定的承载角。因此,训练它也是复杂的,需要一个良好的初始化。他们的数据有限,难以过拟合,所以限制了他们的体型PCA空间。因此,该模型不能很好地推广到新的形状和姿态。我们更简单的模型让我们从大型数据集学习它,并拥有更多的数据使简单的模型
  • 我们的姿态混合形状函数也非常不同于分散的数据插值方法,如WPSD使用离散数量的姿态,并使用rbf在它们之间进行插值。在实践中,可能需要大量的姿势来很好地覆盖姿态空间。这使得动画变慢,因为必须在运行时找到最近的关键姿态。
  • 局限性:
    1. 如果我们建立一个非真实的动画角色空间,身体部位变化很大的空间,或者包括婴儿和成人的人类空间,那么一般的方法可能会不起作用。这一限制可以通过训练一个更一般的函数来解决,它将R(θ)和β一起预测混合形状系数。请注意,动态混合形状系数确实取决于身体形状,因此应该可以对姿态混合形状做同样的操作。这不会使模型或运行时行为显著复杂化,但可能需要更多的训练数据
    2. SMPL模型仅是关节角度和形状参数的函数:它不模拟呼吸、面部运动、肌肉张力,或任何独立于骨骼关节角度和整体形状的变化。如果有适当的分解数据可用,这些数据可以作为附加的混合形状(如DMPL)学习
    3. 虽然我们学习了大多数模型参数,但我们并没有全部学习它们。我们手动定义模板分割成部分,mesh的拓扑和静息姿态。理论上,这些也可以学习,但可能重大的努力只有微小的改进
  • 未来工作
    SMPL使用了207个pose blend shapes,可以通过对混合形状进行PCA来减少。这将减少乘法的数量,从而提高渲染速度。
    我们的动态模型使用PCA来学习动态混合形状,但我们可以直接学习这些混合形状的元素,就像我们对姿态混合形状所做的那样。
    我们将我们的模型拟合到注册网格,但可以将SMPL拟合到mocap标记数据、深度数据或视频。我们预计,优化SMPL-LBS模型的姿态和形状将比优化类似质量的SCAPE模型要快得多

8. 结论
我们的目标是创建一个骨骼驱动的人体模型,可以捕捉身体形状和姿势的变化,或者更好地优于以前最好的模型,同时与现有的图形管道和软件兼容。
为此,SMPL使用了标准的剥皮方程,并定义了可以修改基本网格的体型和姿态混合形状。我们对不同姿势和不同姿势的人进行数千次对齐扫描来训练模型,可以从大量数据中学习参数,同时直接最小化顶点重构误差。
具体地说,我们学习rest template、关节回归器、身体形状模型、姿态混合形状和动态混合形状。
令人惊讶的结果是,当BlendSCAPE和SMPL在完全相同的数据上进行训练时,基于顶点的模型比基于变形的模型更准确,渲染效率也明显更高。
同样令人惊讶的是,一组相对较小的经训练的混合形状在纠正LBS的错误方面和它们在DQBS中所做的一样好。利用四维配准网格,我们扩展了SMPL,以使用自回归模型来建模动态软组织变形,作为姿态随时间变化的函数。
SMPL可以导出为一个FBX文件,我们提供脚本在公共渲染系统中使模型动画。这将允许任何人真实生成动画人体。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SMPL经典论文 的相关文章

  • minikube 学习笔记 -- service && HPA 详解

    按照下面的文档完成 service 实验 https www cnblogs com backups p k8s 1 html service Service 的作用 xff1a 提供服务的自动发现和负载均衡 因为 Pod 随时会被销毁和重
  • ROS :process has died

    项目场景 xff1a ROS编译报错 问题描述 xff1a 有的时候自己在ROS的框架下写代码会遇到如下的问题 xff1a 以前遇到这种问题基本上心里就觉得凉了 xff0c 因为这种编译之后的运行报错不好定位位置 xff0c 所以之前遇到这
  • PX4无人机-Gazebo仿真实现移动物体的跟踪

    原文链接PX4无人机 Gazebo仿真实现移动物体的跟踪末尾有演示视频 这个学期我们有一个智能机器人系统的课设 xff0c 我们组分配到的题目是 仿真环境下使用无人机及相机跟踪移动物体 xff0c 本文主要记录完成该课设的步骤以及内容 我们
  • nohup 和>/dev/null 2>&1

    一 用途 xff1a nohup表示永久运行 amp 表示后台运行 在应用Unix Linux时 xff0c 我们一般想让某个程序在后台运行 xff0c nohup start mysql sh amp 该命令的一般形式为 xff1a no
  • 【ROS学习笔记10】ROS中配置自定义Cpp头文件和导入自定义Python库

    ROS学习笔记10 ROS中配置自定义Cpp头文件和导入自定义Python库 文章目录 ROS学习笔记10 ROS中配置自定义Cpp头文件和导入自定义Python库一 ROS中的头文件和源文件1 1 自定义头文件调用1 2 自定义源文件调用
  • 【ROS学习笔记13】ROS中的TF坐标变换

    ROS学习笔记13 ROS中的TF坐标变换 文章目录 ROS学习笔记13 ROS中的TF坐标变换前言1 静态坐标变换2 动态坐标变换3 多坐标变换4 坐标系关系查看5 TF坐标变换实操Reference 写在前面 xff0c 本系列笔记参考
  • Android---bitmap优化

    目录 Bitmap 占用内存大小计算 Bitmap Drawable InputStream Byte 之间进行转换 Bitmap 相关方法 BitmapFactory 工厂类 Bitmap 占用内存大小计算 Bitmap 作为位图 xff
  • Linux的基础命令

    一 切换用户 su 用户名 1 切换管理员用户root 需要输入登录时的密码password 密码不显示 2 切换回普通用户 不需要输入密码password 二 目录操作 1 切换目录 1 cd 切换到系统根目录 2 cd 切换到当前用户的
  • uC/OS_II操作系统移植,亲测可用

    uC OS II简介 uC OS II由Micrium公司提供 xff0c 是一个可移植 可固化的 可裁剪的 占先式多任务实时内核 xff0c 它适用于多种微处理器 xff0c 微控制器和数字处理芯片 xff08 已经移植到超过100种以上
  • 树莓派开机出现正确密码循环输入的问题

    树莓派开机出现正确密码无限循环输入的问题 问题状况 树莓派开机后在登录界面输入正确密码后 xff0c 屏幕闪了一下然后还要输入密码 无限循环该现象 问题出现背景 在上一次关机之前进行了Tomcat等环境变量的配置 问题原因 就是最近的一次操
  • 机器人技术(RoboCup 2D)如何进行一场球赛

    合工大RoboCup 2D主要函数注释 以及 机器人技术实验五十题代码已更新 博文连接如下 博文连接点这里 进行一场球赛 xff1a 畅所欲言 欢迎交流 1 启动服务器 打开终端 xff0c 输入rcssserver xff08 tab键自
  • React几种传递参数的方法

    1 父组件向子组件传参 回调函数也是参数的一种 xff0c 也可以传给子组件 xff0c 达到子组件控制父组件的目的 import React from 39 react 39 import ReactDOM from 39 react d
  • Git拉取项目,拉取git更新后的项目

    1 首次拉取git上的项目 这里以idea2020 1展示 1 首先在git上找到克隆链接 2 复制链接之后 回到idea 找到VCS gt Get from Version Control Clone就可以 2 拉取git更新后的项目 第
  • 如何轻松的完成属于自己的一架无人机(免费领取PCB)

    64 翼风室内有刷F1飞控教程 本篇博客的目的 为了让各位无人机爱好者轻松的制作一架属于自己的无人机 xff0c 本篇文章基于翼风室内有刷F1飞控板 xff0c 围绕接口介绍以及使用教程展开介绍 xff0c 希望大家喜欢 xff0c 废话不
  • linux下jps命令找不到的问题

    jps是用来查看进程的命令 搭建rocketmq时 xff0c 常常要用jps来查看名称服务是否已启动 xff0c 但是某些机器报错如下 xff1a bash jps command not found 解决办法如下 xff1a 一 检查基
  • 如何轻松的完成属于自己的一架无人机下篇——调参(免费领取PCB)

    如何轻松的完成属于自己的一架无人机下篇 调参 xff08 免费领取PCB xff09 64 翼风室内有刷F1飞控教程 xff08 QQ群 xff1a 708260375 xff09 本篇博客的目的 上篇主要针对需要的材料以及硬件教程进行了教
  • copy outerHTML、python爬取csdn文章、一键打包个人csdn文章保存到本地

    文章目录 1copy outerHTML复制网站源码法1 1复制源码1 2 遇到的问题 2 python爬取CSDN博客文章 xff08 保存为html xff0c txt xff0c md xff09 2 1 安装依赖2 2 完整代码 3
  • 一、视觉SLAM基础概述

    视觉SLAM主要是以视觉为传感器 xff0c 解决定位与建图的问题 xff0c 其主要可以分为前端 后端 回环检测和建图等四个部分 xff0c 其中各个部分的作用分别为 xff1a xff08 1 xff09 前端 xff1a 前端也称为视
  • HAL库 MPU6050的使用

    HAL库 amp amp MPU6050 HAL库 MPU6050的使用 xff1a 今天在本教程中 xff0c 我们将使用STM32接口MPU6050 xff08 GY 521 xff09 加速度计陀螺仪 同时 xff0c 我将在PC上利
  • HAL库 AB相编码器

    HAL库 AB相编码器 文章涉及Cube MX的配置 Keil代码的编写以及模板存放之BaiDu Pan 用到的软件 xff1a STM32CubeMX amp Keil 5 用到的硬件 xff1a 光电式编码器 F411RE NUCLEO

随机推荐

  • CUBLI 简化 一维模型(有bug)

    CUBLI 简化 一维模型 xff08 有bug xff09 文章目录 CUBLI 简化 一维模型 xff08 有bug xff09 前言一 CUBLI是什么 xff1f 二 制作步骤1 MPU6050 amp amp 编码器操作2 什么是
  • 阻滞增长模型--Logistic模型

    文章目录 写在前面一 思路二 原始数据三 源代码四 结果 写在前面 做了一个作业 xff0c 觉得挺有意思 xff0c 有空就发上来了 阻滞增长模型 Logistic模型的部分推导 思路 xff0c 并给出参考代码 参考书籍 xff1a 数
  • Linux 图形化Git客户端

    Linux用户主要可以通过命令行来管理Git xff0c 不过外面有几种图形化用户界面 xff08 GUI xff09 Git客户软件 xff0c 它们便于用户在Linux桌面上高效 可靠地使用Git xff0c 即便提供不了所有命令行操作
  • .yml文件语法

    项目里用到yml文件作为配置文件 xff0c 了解下其实挺简单 xff0c 它的基本语法如下 大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键 xff0c 只允许使用空格 缩进的空格数目不重要 xff0c 只要相同层级的元素左侧对齐即
  • 嵌入式总线协议(二)——RS232、RS485

    定义 RS232 RS485为电气层 xff08 物理层 xff09 协议 xff0c 依赖于串口 xff08 UART xff09 存在 xff0c 在电气层进行优化处理 xff0c 达到提高抗干扰能力 提高传输速度 增大传输距离的效果
  • 测试TensorFlow的GPU版本安装成功方法

    程序如下 xff1a import tensorflow as tf print 39 GPU 39 tf test is gpu available a 61 tf constant 2 b 61 tf constant 4 print
  • 深度学习数据集下载

    猫狗识别数据集 链接 xff1a https pan baidu com s 1vQcmQts1jIi5 oA6O411aA amp shfl 61 sharepset 提取码 xff1a 5si6 MNIST数据集 链接 xff1a ht
  • PyTorch版本检测及GPU是否安装成功检测

    PyTorch GPU版本安装方法 xff0c 请看anaconda虚拟环境下镜像安装PyTorch 利用jupyter notebook访问虚拟环境 检测程序如下 xff1a span class token keyword import
  • 树莓派 | 摄像头模块的使用方法

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa 在此项目中 xff0c 将了解如何使用树莓派摄像头模块进行拍照 xff0c 录制视频等
  • 树莓派小实验 | 制作一个带快门的照相机 & 录像机

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa x1f4aa 在此项目中 xff0c 通过连接GPIO引脚的按钮控制拍照 xff0c
  • Jetson Nano 关机、重启命令

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa 1 重启命令 xff1a span class token function sudo
  • python保存虚拟环境requirement.txt

    保存 pip freeze span class token operator gt span requirement txt 安装 pip span class token function install span r requirem
  • python虚拟环境移植到另一台电脑

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa 本篇文章为python环境打包离线安装移植的所做笔记 xff0c 一是为了日后查找方便
  • python安装jupyter lab和使用插件

    如果觉得本篇文章对您的学习起到帮助作用 xff0c 请 点赞 43 关注 43 评论 xff0c 留下您的足迹 x1f4aa x1f4aa x1f4aa 本篇文章为python安装jupyter lab和使用插件的所做笔记 xff0c 一是
  • Bean的初始化和销毁(java配置方式)

    bean生命周期管理 spring对bean的生命周期的操作提供了支持 xff0c java配置和注解配置分别使用如下方式 xff1a 1 java配置 xff1a 使用 64 Bean 的initMethod和destoyMethod 2
  • UWB使用教程

    前言 本篇文章主要对淘宝商家给的UWB资料进行整理 xff0c 方便大家快速入门 注重UWB定位模块的使用 xff0c 不解释具体的原理 实现功能 xff1a 搭建UWB基站使用上位机配置参数ROS接受UWB的定位信息修改IMU的STM32
  • 【Tiva_C系列】一、ARM Cortex-M4F 处理器

    ARM Cortex M4F 处理器 0 引言1 Cortex M4处理器和基于Cortex M4的MCU2 Cortex M4F处理器结构3 存储器映射4 处理器模式和软件执行的权限级别5 内核寄存器6 异常和中断处理6 1 优先级6 2
  • Windows11解决无法设置移动热点

    文章目录 前言1 解决办法 前言 今天装了个Win11 xff0c 回头发现移动热点无法打开 xff0c 在网上找了好久 xff0c 才找到解决方案 xff0c 这里分享下解决方案 1 解决办法 打开设备管理器 找到网络适配器 启用这两个设
  • python实现aruco的生成和检测

    OpenCV aruco的生成 import cv2 as cv import numpy as np if name 61 61 39 main 39 Load the predefined dictionary dictionary 6
  • SMPL经典论文

    摘要 模型参数从这些数据中学习 xff1a 休息姿势模板 混合 xff08 blend xff09 权重 与姿势相关的混合形状 与身份相关的混合形状 从顶点到关节位置的回归器与姿势相关的混合形状是姿态旋转矩阵的线性函数 xff0c 这个简单