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

article/2025/9/28 4:55:33

论文地址: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. 定性结果

  1. 和 SMPL,SMPL-H 相比,表现能力明显增强;图A1

  2. 和一些仅重构 head 或 hand 的部分重构模型相比,整体模型的推理更具鲁棒性,全身的环境稳定了头部对遮挡或非正面视图的估计(见图 A.3)。整体 SMPL-X 在顶点到顶点误差方面比我们的 EHF 数据集的仅头部拟合提高了 17%。
    图A3

  3. 图 A4 显示了一些有代表性的错误案例;由于简单的 2D 重投影数据项,深度模糊可能导致躯干姿势的错误估计或身体部位的错误顺序深度估计。此外,遮挡的关节使某些身体部位不受约束,这目前会导致错误。我们计划在未来的工作中通过在目标中使用可见性术语来解决这个问题。
    图A4

    在左边的例子中,2D 关键点是合理的,但是由于深度模糊,躯干姿势是错误的,而且头部形状被低估了。右边的例子,手臂和手被遮挡,由于缺乏约束,手臂和手的姿势是错误的。脚的顺序深度也被错误地估计,而类似于左边的情况,躯干姿势和头部形状没有被正确地估计。左:输入 RGB 图像。中间:来自 OpenPose 的 2D 关键点。右图:叠加在 RGB 图像上的 SMPL-X 结果。

2. 碰撞惩罚项

\quad\quad 对于技术细节和可视化,读者可以阅读[4,28],但为了完整起见,我们也在这里包括数学公式。
……

3. 优化器

\quad\quad 为了使优化易于处理,我们采用 PyTorch 实现并使用拟牛顿法之 L-BFGS优化器。设置学习率为 1.0,最多迭代 30 次。
\quad\quad 退火方法使用以下三步:
\quad\quad 从高正则化开始,主要细化全局躯干姿态,( Υ b = 1 , Υ h = 0 , Υ f = 0 \Upsilon_b=1,\Upsilon_h=0,\Upsilon_f=0 Υb=1,Υh=0,Υf=0)逐渐增加手关键点的影响来细化手臂的姿态( Υ b = 1 , Υ h = 0.1 , Υ f = 0 \Upsilon_b=1,\Upsilon_h=0.1,\Upsilon_f=0 Υb=1,Υh=0.1,Υf=0)。在收敛到一个更好的姿态估计后,我们增加双手和面部关键点的影响来捕捉表情( Υ b = 1 , Υ h = 2 , Υ f = 2 \Upsilon_b=1,\Upsilon_h=2,\Upsilon_f=2 Υb=1,Υh=2,Υf=2)。在上述步骤中,目标函数 E E E中的权重 λ α 、 λ β 、 λ ε λ_α、λ_β、λ_ε λαλβλε从高正则化开始,该高正则化逐渐降低以允许更好的拟合。唯一的例外是 λ C λ_C λC逐渐增加,同时手和面部关键点在 E J E_J EJ的影响变得更强,因此会有更大的姿态变化和更多的碰撞被预测。
\quad\quad 关于优化的权重,它们是根据经验设置的,优化每个阶段的确切参数将随我们的代码一起发布。为了更直观,我们通过将每个权重 λ λ λ分别扰动高达 ± 25 \pm25 ±25%来进行灵敏度分析。这导致顶点间误差度量的相对变化小于 6%,这意味着我们的方法对重要的权重范围是稳健的,对微调不敏感,见图 A.7。
[图 A.7]

4. “Total Capture”数据集上的定量评价

\quad\quad 在主论文中,我们提出了一个数据集,称为Expressive hands and faces dataset(EHF),同时表达了身体,手和脸的真实形状。
\quad\quad 由于最相关的模型是[13],我们还使用了作者的“Total Capture”数据集[8],重点是“点云数据库”部分,其中包括所有身体、面部和手的伪真实。这种伪真实数据是通过使用 OpenPose 从多视角进行三角化 3D 联合检测来创建的[23]。我们根据图像中身体的遮挡程度、有趣的手部姿势和面部表情,精选了 200 幅图像。在下文中,我们将该数据称为“total hands and faces”(THF)数据集。图 A.8 显示了 THF 上的定性结果。
图A.8
第一行:参考 RGB 图像。第二行:使用伪真实 OpenPose 关键点(从多视角估计并投影到 2D 的 3D 关键点[8])的SMPLify-X结果。第三行:使用 2D OpenPose 关键点估计的 SMPLify-X 结果[23]。灰色表示自信的性别检测结果对应的模型,蓝色表示性别分类器不确定时使用的性别中性模型。
该数据集的定量结果见表 A.1
表A.1
在 CMU 全景摄影棚选取的帧上的定量结果,使用 SMPLify-X 对伪真实 3D 关节的 2D 重投影,以及分别由 OpenPose 检测的 2D 关节。这些数字是 Procrustes alignment (谁和谁对齐???)后的平均 3D 关节误差。第一行:仅仅使用 body 对齐,仅仅计算 body 的关键点误差。第二行:仅仅使用 body 对齐,但是评估所有身体+手+脸关键点的关节误差。第三行:使用所有的身体+手+脸关键点对齐,并计算所有关键点的平均误差。

5. Human3.6M 数据集上的定量评价

\quad\quad 在表 1 中,我们证明了使用 3D 身体关节计算的重建精度并不能代表一种方法重建的精度和细节。然而,许多方法确实基于 3D 身体关节度量进行定量评估,因此在这里我们将我们的结果与 SMPLify [5]进行比较,以证明我们的方法不仅更自然、更具表现力和更详细,而且在常见的度量中结果也更准确。在表 A.2 中,我们使用 Human3.6M [10]数据集展示了我们的结果。我们遵循与[5]相同的评估方案,并在伪真实 3D 姿势 Procrustes alignment 后报告结果。尽管有几个因素改进了我们对 SMPLify 的方法,并且这个实验没有说哪个更重要,但是我们仍然优于最初的 SMPLify,使用这个基于 3D 关节的粗略度量。
表A.2
Human 3.6M 数据集的定量结果[10]。这些数字是 Procrustes alignment 后的平均 3D 关节误差。我们使用[5]的评估方案。

6. MPII 数据集上的定量评估

图A.14

7. 方法

\quad\quad 在主论文的第 3.1 节中,我们描述了 SMPL-X 模型。SMPL-X 模型的 shape space 是在 CAESAR 数据库上训练得到的[26]。图 A.9 计算累计相对方差,解释了所有网格模型都可以用 10 个主成分解释 95%以上的差异。
\quad\quad 我们进一步评估了一组 180 个不同姿势的男性和女性受试者的模型。男性模型根据男性比对进行评估,女性模型根据女性比对进行评估,而中性模型根据男性和女性比对进行评估。我们报告了模型顶点对顶点平均绝对误差,作为所用主成分数量的函数,如图 A.10 所示。
所以 SMPL-X 使用了 300 个 shape 系数。
图A.10

8. VPoser

\quad\quad 在主论文第 3.3 节中,我们介绍了一种新的人体姿态参数化,以及这种参数化的先验知识,称为 VPoser。在本节中,我们将进一步介绍数据准备和实施的细节。

\quad\quad 我们使用从 CMU [7]、Human 3.6M [10]和 PosePrior [2]的人体运动序列中提取的 SMPL 姿态参数作为数据集。这些参数最初由[19,21]发布。随后,我们将 Human 3.6M 的受试者 9 和 11 的参数作为我们的测试集。我们随机选择 5%的训练集作为我们的验证集,并以最小的验证损失来制作模型的快照(什么是模型快照,我理解是保存最小验证损失对应的模型)。我们为我们的姿态参数化选择矩阵旋转。
\quad\quad 使用 TensorFlow 训练,然后将训练好的模型和权重移植到 PyTorch。图 A.11 显示了训练和测试期间的网络架构。我们仅使用全连接层,具有 LReLU [20]非线性,并保持编码器和解码器对称。编码器有两个 dense layer,分别有 512 个单元,其中一个 dense layer 用于均值,另一个 dense layer 用于 VAE 后验正态分布的方差。解码器权重的 shape 与编码器相同,只是顺序相反。使用 Adam 求解器[15],更新网络的权重,以最小化损失。根据经验选择损失权重值为: c 1 = 0.005 , c 2 = 1.0 − C 2 , c 3 = 1.0 , c 4 = 1.0 , c 5 = 0.0005 c_1= 0.005,c_2 = 1.0- C_2,c_3= 1.0,c_4= 1.0,c_5= 0.0005 c1=0.005c2=1.0C2c3=1.0c4=1.0c5=0.0005。以下每个学习率进行了 60 轮训练:[5e−4,1e−4,5e−5]。
\quad\quad 经过训练后,潜在空间描述了一系列看似合理的人体姿势,可用于有效的 2D-3D 提升。图 A.13 显示了从模型的潜在空间中抽取的一些随机样本。
图A13_part.

来自 VPoser 潜在空间的随机姿态样本。我们从一个 32 维正态分布中采样,并将该值馈送给 VPoser 的解码器:如图 A.11b 所示。然后,在转换成轴角表示后,SMPL 以解码器输出设定 pose。


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

相关文章

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

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

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

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

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

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

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