关于FLAME和SMPL模型

news2024/9/28 17:30:38

英文参考文献:https://medium.com/offnote-labs/3d-face-and-body-reconstruction-95f59ada1040

一个训练好的FLAME模型的输入是一个参数向量,包括形状参数、姿势参数和表情参数¹。这些参数分别控制人脸的身份特征、头部的旋转和平移、面部的表情变化²。一个训练好的FLAME模型的输出是一个三维人脸网格,它是由模板网格和混合形状函数相加并经过皮肤函数变换得到的²。这个三维人脸网格可以用来表示不同的人脸形状和姿势,也可以用来拟合三维扫描数据或二维图像数据¹²。

“人脸形状、头部姿态和面部表情的参数”是指FLAME模型的输入参数,它们是一些实数向量,用来控制模型的输出网格的形状和姿势。具体来说:

- 人脸形状参数是一个300维的向量,它表示人脸的身份特征,例如性别、年龄、种族等。这个向量是从3800个人的头部扫描数据中学习得到的一个线性形状空间的系数。不同的人脸形状参数可以生成不同的人脸形状。
- 头部姿态参数是一个6维的向量,它表示头部的旋转和平移。这个向量是由欧拉角和平移向量组成的,用来描述头部相对于世界坐标系的变换。不同的头部姿态参数可以生成不同的头部姿势。
- 面部表情参数是一个100维的向量,它表示面部的表情变化,例如微笑、皱眉、张嘴等。这个向量是由全局表情参数和姿态相关表情参数组成的,用来描述面部相对于中性状态的变化。不同的面部表情参数可以生成不同的面部表情。

举个例子,如果我们想要生成一个年轻女性的微笑面孔,我们可以设置人脸形状参数为[0.5, 0, 0, ..., 0](表示性别为女性,其他特征为中性),头部姿态参数为[0, 0, 0, 0, 0, 0](表示头部没有旋转和平移),面部表情参数为[0.2, 0, 0, ..., 0](表示有微笑表情,其他表情为中性)。然后将这些参数输入FLAME模型,就可以得到一个年轻女性的微笑面孔的三维网格。

FLAME模型是一种用来表示人脸的三维模型,它基于SMPL模型,并增加了表情混合形状的功能。FLAME模型包括以下几个部分:

  • 模板网格T,表示中性姿势下的人脸。
  • 形状混合形状函数S(),处理与身份相关的形状变化,例如性别、年龄、种族等。
  • 姿势混合形状函数P(),修正头部的姿势变形,例如转头、点头等。
  • 表情混合形状函数E(),捕捉面部的表情变化,例如微笑、皱眉、张嘴等。

这些函数都是从SMPL模型中派生出来的,它们都是用参数向量作为输入,并输出与模板网格的偏差。将这些函数与模板网格线性地相加,就可以得到一个描述人脸形状和姿势的网格。然后,将这个网格作为输入传递给皮肤函数W(),它会生成最终的三维人脸。皮肤函数也会根据关节J和混合权重W来旋转人脸的顶点,并保证输出的三维人脸是平滑无缝的。这样就完成了带有表情的三维人脸重建。

表情混合形状函数E()是用来表示面部表情变化的函数,它可以分为全局表情变形和姿态相关表情变形两部分。全局表情变形表示不依赖于头部姿态的表情变化,例如微笑、皱眉等;姿态相关表情变形表示由于头部姿态的变化而产生的表情修正,例如转头时眼睛的微调等。

 

对FLAME模型的表情混合形状函数E()的训练过程:

“正交表情基”E表示表情空间E的列向量构成的基,满足:1) 列向量之间互相垂直,即〈Ei, Ej〉 = 0, i ≠ j。这意味着不同的表情混合形状对应的形状偏移是相互独立的。2) 每个列向量的长度为1,即〈Ei, Ei〉 = 1。这产生单位长度的表情混合形状。

正交表情基E可以通过主成分分析(PCA)从表情扫描数据中学习得到。具体步骤是:1) 收集多个人物在不同表情下的面部扫描数据。每个扫描包含一个模板形状T以及表情导致的形状偏移ΔT。2) 对所有这些形状偏移ΔT进行PCA分析,提取其主成分。这些主成分对应的特征向量组成初始的E。3) 对E的每个列向量单位化,使之满足上述条件2)。这得到正交表情基E。4) E的列向量按对应特征值的大小排序,取前多少个(如10个)列向量构成表情空间E。特征值较大的列向量表示表情变化更加显著的方向。所以总之,正交表情基是一个从表情扫描数据中学习到的、用于参数化和表示表情形状变化的基。通过在这个基上投影,我们可以用较低维度的表情参数ψ⃗来表示丰富的表情变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/546382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法设计与分析:线性规划问题和单纯形算法(作业-必做)(头歌实验)

第1关:单纯性算法解一般线性方程组 任务描述 本关任务:编写一个利用两阶段单纯性算法求一般线性规划的程序。 相关知识 单纯形算法的第1步:选出使目标函数增加的非基本变量作为入基变量。 查看单纯形表的第 1 行(也称之为z行…

UnityVR--Managers--对象池1

本篇中使用的API&#xff1a;gameObject.CompareTag("标签")、UnityEvent()事件管理、ObjectPool<GameObject>&#xff08;&#xff09;对象池 参照unity官方教程&#xff1a;Hi ObjectPool 目录 1. 应用场景 2. 对象池的原理 3. 查看资源消耗情况 4. 不使用…

mysql 备库延迟问题

备库延迟原因&#xff1a; log传送开销小&#xff0c;消费relay log 超时 备库性能不如主库 备库承担更多SQL分析 主库是多线程执行&#xff0c;备库是单线程执行解析relay log 处理方法&#xff1a; 主备使用相同的机器 备库关闭log实时落盘 增加从库数量&#xff0c;…

Sentinel-2数据下载及处理

数据下载网站&#xff1a;欧空局官网&#xff08;需注册并登录&#xff09; https://scihub.copernicus.eu/dhus/#/home 哨兵2 L1C数据波段信息 哨兵2 L1C数据时间&#xff1a;2015-06-23至now 由于数据量大&#xff0c;考虑服务器压力&#xff0c;哨兵2号数据直接下载的时间跨…

[web安全原理分析]-XXE漏洞入门

前言 XXE漏洞 XXE漏洞全称(XML External Entity Injection)即xml外部实体注入漏洞&#xff0c;XXE漏洞发生在应用程序解析XML输入时&#xff0c;没有禁止外部实体的加载&#xff0c;导致可加载恶意外部文件&#xff0c;造成文件读取、命令执行、内网端口扫描、攻击内网网站、…

头歌计算机组成原理实验—运算器设计(10) 第10关:补码一位乘法器设计

第10关&#xff1a;补码一位乘法器设计 实验目的 学生掌握补码一位乘法运算的基本原理&#xff0c;熟练掌握 Logisim 寄存器电路的使用&#xff0c;能在 Logisim 平台中设计实现一个8*8 位的补码 Booth一位乘法器。 视频讲解 ####实验内容 在 alu.circ 文件中的补码一位乘法…

Linux基础——权限

1. Linux下的用户 在 Linux 操作系统中&#xff0c;有两种主要类型的用户账户&#xff0c;分别是普通用户账户和超级用户账户&#xff08;也称为 root 用户账户&#xff09;。 普通用户账户&#xff08;user&#xff09;是在 Linux 系统上创建的普通账户&#xff0c;可以用于日…

图片隐写(一)

文件隐藏 binwalk binwalk -e filename foremost foremost filename steghide & stegseek Install sudo apt-get install steghidestegseek Use steghide extract -sf filename -p passwordtime stegseek secret.file aaa.txt dd 文本隐藏 二进制文件末尾 or 文…

ffmpeg rtsp解析

一、 rtsp 协议说明 rtsp的协议层级 rtsp 属于应用层&#xff0c; 使用tcp传输&#xff0c;主要是传递服务器的一些信息&#xff0c;实现流连接。播放 暂停 销毁等控制 rtp 实现音视频数据包的发送&#xff0c;通过RTSP等协议的SDP信息协商好了RTP数据包的发送目的和传输方式…

UNIX网络编程卷一 学习笔记 第十四章 高级I/O函数

有3种方式可在涉及套接字的IO操作上设置超时方法&#xff1a; 1.调用alarm&#xff0c;它在指定超时期满时产生SIGALRM信号。此方法涉及信号处理&#xff0c;而信号处理在不同的实现上存在差异&#xff0c;且此方法可能干扰进程中已经执行过的alarm调用&#xff0c;可能使之前已…

【LLM系列之Tokenizer】如何科学地训练一个LLM分词器

1 背景与基础 1.1 为什么需要分词 对于人而言&#xff0c;在我们学会阅读之前&#xff0c;仍然可以理解语言。比如当你开始上学时&#xff0c;即使你不知道名词和动词之间的区别&#xff0c;但是你已经可以和你的同学交谈了&#xff0c;比如“我喜欢吃香蕉”&#xff0c;孩子…

vmware ubuntu突然无法联网的一种解决方案

记录一下vmware突然无法联网的一种解决方案。此法未必适用所有无法联网情形。Good Luck then. 今天使用vmware的ubuntu 18.04时&#xff0c;突然无法联网。Firefox在访问百度时显示“The proxy server is refusing connections”&#xff0c;随即检查了浏览器的proxy设置&#…

详解Jetpack Compose中的状态管理与使用

前言 引用一段官方描述&#xff0c;如下 由于 Compose 是声明式工具集&#xff0c;因此更新它的唯一方法是通过新参数调用同一可组合项。这些参数是界面状态的表现形式。每当状态更新时&#xff0c;都会发生重组。因此&#xff0c;TextField 不会像在基于 XML 的命令式视图中那…

头歌计算机组成原理实验—运算器设计(9)第9关:原码一位乘法器设计

第9关&#xff1a;原码一位乘法器设计 实验目的 学生掌握原码一位乘法运算的基本原理&#xff0c;熟练掌握 Logisim 寄存器电路的使用&#xff0c;能在 Logisim 平台中设计实现一个 8*8位的无符号数乘法器。 视频讲解 ####实验内容 在 alu.circ 文件中的原码一位乘法器子电…

分布式消息中间件RocketMQ概述

RocketMQ 概述 MQ概述 MQ简介 ​ MQ&#xff0c;Message Queue&#xff0c;是一种提供消息队列服务的中间件&#xff0c;也称为消息中间件&#xff0c;是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。 MQ用途 在网络上上可以查…

React学习笔记五-props

此文章是本人在学习React的时候&#xff0c;写下的学习笔记&#xff0c;在此纪录和分享。此为第五篇&#xff0c;主要介绍react中的props。 目录 1.props的基本使用 2.props的批量传递 2.1展开运算符的复习 2.1.1数组中的展开运算符 2.1.2函数中的展开运算符 2.1.3构造字面…

部署图的画法

部署图画法 1.部署图 1.1含义 部署图是把软件制品装配到计算机节点以及配置软件环境的工作 软件部署包含环境部署和软件制品部署 1.2软件部署 软件部署通过部署图对软件进行建模 1.3部署图 部署图常见的有制品 节点 设备 运行环境和部署规范 1.4部署图关系 在UML&…

UnityVR--Managers--对象池2

目录 前言 基本结构 对象池代码 对象池管理器代码 使用 总结 前言 经过上一篇对象池1的了解&#xff0c;已经做到了使用Unity自带的ObjectPool进行内存优化。本篇自己构建一个对象池管理器&#xff08;Manager&#xff09;&#xff0c;实现对象池的创建、删除、加载资源…

机器视觉工程师很苦吗?年轻人不怕苦,就怕学不到东西,机器视觉销售>项目经理>视觉>电气>机械>老板

年轻人不怕苦&#xff0c;就怕学不到东西。 对于年轻人来说&#xff0c;需要规划&#xff0c;更需要发展。如果学不到东西&#xff0c;就会限制其发展&#xff0c;最重要的体现就是限制待遇上限。 一个非标自动化公司出差的频次&#xff08;各个公司略有差别&#xff0c;大多…

062:cesium设置泛光折线材质(material-6)

第062个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中设置泛光折线材质,请参考源代码,了解PolylineGlowMaterialProperty的应用。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共89行)相关API参考:专…