SMPL模型及源码解读

article/2025/9/28 4:52:57

Contents

  • Preface
  • 一、模型解读
  • 二、源码解读
  • Citation

Preface


SMPL主要是人体三维重建常用模型,本文主要对模型及源码进行了解读(自己的理解不一定正确),为以后更好的利用此模型进行人体重建打好基础!

一、模型解读

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、源码解读

  SMPL模型网格顶点数N=6890,关节点数K=23,关节点具体位置如图所示
在这里插入图片描述

  SMPL源码的结构在上一篇源码实现中已经进行了说明,这里就不再赘述!
1、hello_smpl.py
  这个文件主要是举了一个应用SMPL实例,包括加载模型、编辑pose和shape参数产生一个新的人体模型以及保存模型为.obj文件格式。为我们利用smpl模型做了一个很好的示范!输入主要是m.pose以及m.betas(pose和shape参数):
m.pose共计72个参数(23X3+3,23个三维关节点,加上根关节点的3个参数);
m.betas共计300个参数(等于线性形状系数的个数);
我们将得到得的pose和shape参数送入模型即可得到三维人体重建的模型。当设置参数为:

m.pose[:] = 0
m.betas[:] = 0

这就是论文中所述的零姿态(zero pose)如图所示:
在这里插入图片描述

2、serialization.py
这是模型的序列化函数,主要功能是加载SMPL模型和保存SMPL模型。其中一些参数分别代表
v_template:顶点模板
J:关节坐标
weight:关节权重
kintree_table:关节树
f:相机参数
bs_type:蒙皮方法LBS还是DQBS
3、 posemapper .py
主要实现关节点角度Θ到姿态混合形状的映射。
Rodrigues类利用Rodrigues’ rotation formula计算每个关节点轴线角的旋转矩阵;
lrotmin函数将Pose矢量映射到连接相关部分旋转矩阵的矢量。
4、LBS.py
这个文件主要是实现文中所述的线性蒙皮(LBS)的。定义了骨骼和混合形状对模板网格顶点的影响。
global_rigid_transformation函数计算模型的全局刚体变换,包括旋度和平移量,实现了论文里的公式4。
verts_core:计算关节点影响后每个顶点的位置,实现了论文里的公式2。
5、vert.py
这个文件主要定义骨骼和混合形状对模板网格顶点的影响。
verts_decorated:创建了继承SMPL模型属性的另一个SMPL模型。
verts_core:计算蒙皮中关节点对每个顶点的影响。

现在对模型的理解还十分肤浅,后续会持续更新,望志同道合的朋友来一起学习!


Citation

[1]https://blog.csdn.net/nbxuwentao/article/details/100177159
[2]https://52zju.cn/?p=471
[3]Matthew Loper, Naureen Mahmood, Javier Romero, Gerard Pons-Moll, and Michael J. Black. 2015. SMPL: a skinned multi-person linear model. ACM Trans. Graph. 34, 6, Article 248 (November 2015), 16 pages. DOI:https://doi.org/10.1145/2816795.2818013


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

相关文章

SMPL:数据增强之处理pose和3d点

SMPL 是一个低维度的参数化人体模型,SMPL系数有pose和shape,在训练基于SMPL的3Dmesh重建任务时候,一般需要进行数据增强 例如旋转,镜像等,那当GT 中有pose和3d点的时候,怎么处理? 一 &#xff1…

SMPL源码实现及相关问题

SMPL源码实现及相关问题 SMPL模型代码结构SMPL实现具体步骤一、环境的配置二、相关库的安装三、运行SMPL CITATION SMPL模型 SMPL模型官网http://smpl.is.tue.mpg.de/,里面可以下载模型和观看演示视频,只不过要先注册一个账号。SMPL由Michael J. Black团…

smpl-x论文学习-部分翻译

论文地址:Expressive Body Capture: 3D Hands, Face, and Body from a Single Image 知乎大佬的讲解:https://zhuanlan.zhihu.com/p/137235901 另一位大佬的讲解:https://posts.careerengine.us/p/5f23a5898988c12b4302afb6 1. 定性结果 和 …

人体动作捕捉与SMPL模型 (mocap and SMPL model)

人体动作捕捉与SMPL模型 (mocap and SMPL model) FesianXu 2020.7.5 前言 笔者最近在做和motion capture动作捕捉相关的项目,学习了一些关于人体3D mesh模型的知识,其中以SMPL模型最为常见,笔者特在此进行笔记,希望对大家有帮助&a…

blender 绘制离散顶点, SMPL骨架绘制

给定一些点,如何绘制出来,借助 blender 看下效果。纠结于 unity 还是 blender, 最终还是 blender 了。 目前还都不太满意,思路一比较靠谱,但是需要更复杂的计算 思路一,第二版,已完成&#xff…

SMPL-CN

paper-reading 为方便理解smpl文章的主要实现思想,此文为论文中文解读,资料来源zju。 日后有空,会写出论文的主要推导过程以及值得注意的重点。 摘要: 我们提出了一个人体形状和姿势相关的形状变化的学习模型,它比以前…

SMPL源码解读

这是源码的整体结构,先简单说一下各个文件里面是什么。 一、models文件 包含3个模型的.pkl文件,.pkl文件是python提供的可以以字符串的形式记录对象、变量的文件格式。这个模型里面包括了: 1.J_regressor_prior:关节回归矩阵的先验,保存形…

SMPL 人体模型简要

smpl是指2015 马普的一篇文章“SMPL: a skinned multi-person linear model”中构建的人体参数化三维模型,人体可以理解为是一个基础模型和在该模型基础上进行形变的总和,在形变基础上进行PCA,得到刻画形状的低维参数——形状参数&#xff08…

SMPL-论文解读

文章目录 创新点算法shape blend shape:pose blend shapeJoint locationSMPL model 训练过程Pose Parameter Trainingjoint regressorShape Parameter TrainingOptimization summary DMPL实验结论 论文: 《SMPL: A skinned multi-person linear model》…

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