SMPL-论文解读

article/2025/9/27 14:03:52

文章目录

  • 创新点
  • 算法
    • shape blend shape:
    • pose blend shape
    • Joint location
    • SMPL model
  • 训练过程
    • Pose Parameter Training
    • joint regressor
    • Shape Parameter Training
    • Optimization summary
  • DMPL
  • 实验
  • 结论

论文: 《SMPL: A skinned multi-person linear model》
github: https://smpl.is.tue.mpg.de/

创新点

作者提出一个可学习模型SMPL,其可准确表示各种体型、各种自然姿势下的人体。
LBS、DQBS在膝盖、肘部、肩膀和臀部产生严重的伪影,如图2;
在这里插入图片描述

算法

SMPL模型如图3所示,
在这里插入图片描述

SMPL解耦body shape为identity-dependent shape和non-rigid pose-dependent shape;创建mesh包括N=6890个顶点、K=23个关键点;
在无姿态 θ ⃗ ∗ \vec\theta^* θ 下平均模板shape T ‾ ∈ R 3 N \overline T \in R^{3N} TR3N,blend weight, w ∈ R N × K w \in R^{N \times K} wRN×K,如图3a所示;
依靠身材的blend shape函数 B s ( β ⃗ ) : R ∣ β ⃗ ∣ → R 3 N B_s(\vec \beta):R^{|\vec \beta|} \rightarrow R^{3N} Bs(β ):Rβ R3N,其中 β ⃗ \vec\beta β 为输入形状参数向量,输出a blend shape sculpting the subject identity;
预测K个关键点函数 J ( β ⃗ ) : ( β ⃗ ) : R ∣ β ⃗ ∣ → R 3 K J(\vec \beta):(\vec \beta):R^{|\vec \beta|} \rightarrow R^{3K} J(β ):(β ):Rβ R3K,如图3b;
依靠姿态的blend shape函数 B p ( θ ⃗ ) : R ∣ θ ⃗ ∣ → R 3 N B_p(\vec \theta):R^{|\vec \theta|} \rightarrow R^{3N} Bp(θ ):Rθ R3N,输入姿态参数 θ ⃗ \vec\theta θ ,该模块解释姿势变形的影响,如图3c所示;
最后标准蒙皮函数 W ( . ) W(.) W(.)将blend weight w w w应用于 J ( β ⃗ ) J(\vec \beta) J(β )估计的关键点周围顶点进行旋转变化,如图3d;

SMPL模型 M ( β ⃗ , θ ⃗ ; Φ ) : R ∣ θ ⃗ ∣ × ∣ β ⃗ ∣ → R 3 N M(\vec \beta,\vec \theta;\Phi):R^{|\vec \theta|\times|\vec \beta|}\rightarrow R^{3N} M(β ,θ ;Φ):Rθ ×β R3N如式5、顶点可经过式7进行变形;
在这里插入图片描述
在这里插入图片描述

shape blend shape:

如式8, β ⃗ \vec \beta β 为输入形状参数; S S S为可学习参数;输出a blend shape sculpting the subject identity;

在这里插入图片描述

pose blend shape

如式9,输入姿态参数theta,解释姿势变形的影响;
在这里插入图片描述

Joint location

J J J为变换顶点到关键点的矩阵;其建模哪些顶点重要及如何将它们与关键点位置结合,如式10;
在这里插入图片描述

SMPL model

SMPL模型可学习参数定义为 Φ = { T ‾ , w , S , J , P } \Phi=\{\overline T,w,S,J,P\} Φ={T,w,S,J,P},通过 β ⃗ \vec\beta β θ ⃗ \vec\theta θ 控制人体身材及姿态变化;SMPL模型 M ( β ⃗ , θ ⃗ ; Φ ) M(\vec\beta,\vec\theta;\Phi) M(β ,θ ;Φ)定义如式11,
在这里插入图片描述
mesh上每个顶点变换如式12,
在这里插入图片描述
其中 t P , i ( β ⃗ , θ ⃗ ; T ‾ , S , P ) t_{P,i}(\vec\beta,\vec\theta;\overline T,S,P) tP,i(β ,θ ;T,S,P)=
在这里插入图片描述
表示应用于blend shape后的顶点 i i i;

训练过程

首先在多姿态数据集训练参数 { J , w , P } \{J,w,P\} {J,w,P},在多体态数据集训练参数 { T ‾ , S } \{\overline T,S\} {T,S}

Pose Parameter Training

E D E_D ED使用平方损失函数,计算registration(表示mesh对齐)顶点与模型顶点距离, s ( j ) s(j) s(j)为与registration j对应的目标人体index
在这里插入图片描述
E Y E_Y EY用于惩罚左右不对称;
在这里插入图片描述
E J E_J EJ计算回归器 J I J_I JI预测关键点到真实关键点距离;
在这里插入图片描述
E P E_P EP防止姿态blend shape过拟合,对它们正则化到0;
在这里插入图片描述
E w E_w Ew正则化blend weight到初始化权重,如图6所示;
在这里插入图片描述
在这里插入图片描述
训练 { W , P } \{W,P\} {W,P}的总损失函数如公式14;
在这里插入图片描述

joint regressor

关键点回归器 J J J使用非负最小二乘损失,包含正则项,使得使用稀疏顶点预测关键点位置,如图7所示;
在这里插入图片描述

Shape Parameter Training

姿态归一化将原始对齐mesh, V j S V^S_j VjS转换到无姿态下对齐mesh, T ^ j S \hat T^S_j T^jS;归一化使得姿态和体态可分开建模;
最小化变换后模型的边与真值边(相邻顶点的差)之间差值, θ ⃗ j = \vec \theta_j= θ j=
在这里插入图片描述
θ ⃗ \vec \theta θ 确定后,确定 T j S T^S_j TjS,如下式,
在这里插入图片描述
{ T ^ j S } \{\hat T^S_j\} {T^jS} j = 1 S s u b j ^{S_{subj}}_{j=1} j=1Ssubj进行PCA获得 { T ‾ , S } \{\overline T,S\} {T,S};

Optimization summary

1、式14中姿态参数 θ ⃗ j \vec \theta_j θ j首先初始化,通过式15最小化模型边与对齐mesh边之间差异;
2、如式14,进行估计 { T ^ P , J ^ P , w , P , Φ } \{\hat T^P, \hat J^P,w, P,\Phi\} {T^P,J^P,w,P,Φ}
3、进行回归器J的估计;
4、对姿态归一化目标进行PCA降维获得 { T ‾ , S } \{\overline T,S\} {T,S}

DMPL

因为目标间体型差异大,为了抓住这个信息,DMPL增加动态项,如式16,17
在这里插入图片描述
在这里插入图片描述

实验

在这里插入图片描述

结论

我们的目标是创建骨骼驱动人体模型,可以捕获身体形状和姿态变化,与现有的图形计算和软件兼容;训练模型最小化顶点重构误差,包括the rest template, joint regressor, body shape model, pose blend shapes, and dynamic blend shapes;


http://chatgpt.dhexx.cn/article/leYcg2wN.shtml

相关文章

SMPL模型进阶

SMPL模型是一种参数化人体模型,是马普所提出的一种人体建模方法,该方法可以进行任意的人体建模和动画驱动。这种方法与传统的LBS的最大的不同在于其提出的人体姿态影像体表形貌的方法,这种方法可以模拟人的肌肉在肢体运动过程中的凸起和凹陷。…

SMPL源代码实现和模型解读

对于SLAM的工作已经告一段落了,传统的人体动态三维重建也要告一段落了,由于课题研究的方向是基于图像\视频的人体三维重建,三维shape、pose的恢复:所以今天和大家交流的是SMPL模型,对于SMPL模型的理论部分欢迎大家交流…

SMPL简析

SMPL模型是一种参数化人体模型,是马普所提出的一种人体建模方法。这种方法可以模拟人的肌肉在肢体运动过程中的凸起和凹陷。因此可以避免人体在运动过程中的表面失真,可以精准的刻画人的肌肉拉伸以及收缩运动的形貌。 该模型可以通过身体形状参数和姿势参…

SMPL学习笔记

文章目录 前言一、SMPL概述1.形状参数( β \beta β)2.姿态参数( θ \theta θ) 二、体姿转换过程原理1.基于形状的混合成形(Shape Blend Shapes)2.基于姿态的混合成形 (Pose Blend Shapes)3.蒙皮 (Skinning) 三、具体过程分析1.基于形状的混合成形2.基于姿态的混合成形3.骨骼点…

Java的生产者消费者模型

前言 学完了线程后,我又去找了一些线程相关的练习题来练手,其中印象最深的就是生产者消费者模型这一块,为什么呢,因为它每一篇练习题里都有,开始没看懂,后面就去仔细研究了一下,哦,…

多线程之生产者消费者模型

生产者消费者模型 1.为什么要使用生产者和消费者模式2.案例 1.为什么要使用生产者和消费者模式 在线程开发中,生产者就是生产线程的线程,消费者就是消费线程的线程。在多线程开发中,如果生产者如理数据很快,消费者处理数据很慢&am…

生产者消费者模型(多线程工作)

目录 1.模型前提 2.阻塞队列(消费场所) 3. 实验 4.有关效率 1.模型前提 以单生产者对单消费者为例子: 前提一:有一个缓冲区作为消费场所。 前提二:有两种功能不同的线程分别具有消费与生产的能力。 前提三&…

生产者消费者模型的实现(线程通信)

✅作者简介:我是18shou,一名即将秋招的java实习生 🔥系列专栏:牛客刷题专栏 📃推荐一款模拟面试、刷题神器👉 [在线刷题面经模拟面试](在线面试刷题) 目录 实现一: 实现二: 实现一…

生产者消费者模型【新版】

目录 啥是生产者消费者模型? 生产者消费者模型存在问题??如何进行解决呢?? 生产者消费者模型导致的问题 什么是阻塞队列 生产者消费者模型优点 生产者消费者模型实现 Message MessageQueue 获取消息get方法 生产消息take方法 测试生产者消费者模型 啥是生产者消…

【Linux】生产者消费者模型

文章目录 一. 什么是生产者消费者模型1. 基本概念2. 三种关系3. 再次理解生产者消费者模型 二. 生产者消费者模型的优点三. 基于BlockingQueue的生产者消费者模型1. 准备工作2. 阻塞队列实现3. 测试阻塞队列4. 阻塞队列完整代码5. 关于改进阻塞队列的几点补充5.1 多生产者多消费…

生产者与消费者模型

1、【什么是生产者与消费者模型呢?】 一种重要的模型,基于等待/通知机制。生产者/消费者模型描述的是有一块缓冲区作为仓库,生产者可将产品放入仓库,消费者可以从仓库中取出产品,生产者/消费者模型关注的是以下几个点&…

生产者消费者模型——C语言代码详解

概念 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据…

【Java总结】生产者消费者模型

生产者消费者模型主要结构如下,是一个典型的线程同步的案例。下面就来使用java做几种线程同步的方式来实现以下该模型 确保一个生产者消费者模型的稳定运行的前提有以下几个 生成者应该具备持续生成的能力消费者应该具备持续消费的能力生产者的生成和消费消费有一定…

【设计模式】生产者消费者模型

带你轻松理解生产者消费者模型!生产者消费者模型可以说是同步与互斥最典型的应用场景了!文末附有模型简单实现的代码,若有疑问可私信一起讨论。 文章目录 一:为什么要使用生产者消费者模型?二:生产者消费者…

模拟生产者消费者模型

生产者消费者是多线程很经典的一个模型 牵涉三个对象:仓库、生产者、消费者 仓库代表共享变量 生产者表示在仓库生产货物 消费者表示从仓库拿出货物 实现思路:利用synchronizedwait()notify() 对生产者消费者对应的操作用synchronized关键字保证线程安全…

生产者消费者模型java实现

做题的时候遇到了生产者消费者问题,这个问题可以说是线程学习的经典题目了,就忍不住研究了一波。它描述是有一块缓冲区(队列实现)作为仓库,生产者可以将产品放入仓库,消费者则可以从仓库中取走产品。在Java…

生产者消费者模型详解以及实现

生产者消费者模式 我们先来看看什么是生产者消费者模式,生产者消费者模式是程序设计中非常常见的一种设计模式,被广泛运用在解耦、消息队列等场景。在现实世界中,我们把生产商品的一方称为生产者,把消费商品的一方称为消费者&…

Java生产者消费者模型的五种实现方式

转自:https://juejin.im/entry/596343686fb9a06bbd6f888c 前言 生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品&#xff0c…

生产者消费者模型---详解及代码实现

概念 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据…

生产消费者模型

生产消费者模型中包含三个部分,生产者、消费者和交易场所。其中涉及如下的关系: (1)生产者和生产者之间的关系:由于生产者的生产面向的都是交易场所,所以生产者之间是存在竞争关系的,就像一家超…