[23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians

[paper | proj]

  • 给定FLAME,基于每个三角面片中心初始化一个3D Gaussian(3DGS);当FLAME mesh被驱动时,3DGS根据它的父亲三角面片,做平移、旋转和缩放变化;
  • 3DGS可以视作mesh上的辐射场;
  • 为实现高保真的avatar,本文提出一种蒙皮(binding)继承策略,在优化过程中,保持蒙皮对3DGS的控制;
  • 本文贡献如下:
    • 提出GaussianAvatars,通过将3DGS绑定至FLAME模型,实现可驱动的head avatars;
    • 设计了一种蒙皮继承策略,使得在保持蒙皮控制的情况下,3DGS的新增和移除。

近期工作

静态场景表征

  • NeRF用神经网络,以辐射场的形式存储场景;
  • 后续工作将场景表征为voxel grids、使用voxel hashing、或使用tensor decomposition,加速渲染;
  • PointNeRF使用点云表征场景;
  • 3D Gaussian Splatting使用各向异性3D Gaussian,实现实时渲染和优异的视觉效果;
  • Mixture of Volumetric Primitives使用surface-aligned volumes实现高视觉保真度的快速渲染;

动态场景表征

  • Basic Design:基于NeRF的方法,输入4D坐标(x, y, z, t),输出密度和颜色。例如:K-Plane、4K4D等。这类方法虽然效果不错,但是无法显式控制内容;
  • Deformation MLP:学习静态标定空间,通过MLP将其他时间下的空间映射回标准空间;
  • Proxy geometry:
  • Liu等人 [25] 基于SMPL移动后的最近三角面片,将观察空间中的点warp回标定空间;
  • Peng等人 [34] 基于SMPL的骨架和神经蒙皮系数(neural blending weights)变形点;
  • 前向变形(forward deformation)[13, 18, 20, 23, 48] 和cage-based deformation [54];
  • 不同于上述方法,本文将3DGS附着在三角面片上,并显式地移动他们,避免使用标定空间,并可使用mesh finetuning。

头像重建与驱动

  • Thies等人 [41] 实现了数字人的实时人脸跟踪和面部重现(face reenactment);
  • Gafni等人 [8] 从单目视频中以表情系数作为控制信号,学习NeRF;
  • Grassal等人 [10] 向FLAME中添加偏移量,增强几何,通过基于表情控制的纹理域,实现动态纹理;
  • IMavatar [51] 基于神经隐式方程学习3D可形变数字人,通过iterative root-finding实现标定空间到观察空间的映射;
  • HeadNeRF [11] 学习一个基于NeRF的参数化头模;
  • INSTA [55] 通过寻找FLAME上最近三角面片,将查询点映射回标定空间;
  • Zheng [52] 探索了基于点的表征和可导的点渲染方法,在标定空间中定义点集,学习受FLAME表情系数控制的形变场,以驱动数字人;
  • AvatarMAV [46] 定义了标定辐射场和运动场;
  • 不同于INSTA,本文在3DGS和三角面片间建立一致性关联。

方法

  • 根据给定的多视角图片和相机参数,估计每帧图片中的FLAME参数;
  • 建立三角面片和3DGS的关系;
  • 可导渲染得到图片与GT图片算损失,用于训练模型;
  • 在训练过程中,通过蒙皮继承策略(binding inheritance strategy)控制3DGS增删后与三角面片的对应关系。

绑定3DGS与三角面片

给定三角面片,本文计算:

  • 均值位置T:给定三角面片的三条边,计算对应的均值位置;
  • 构造旋转矩阵R:1)三角面片的某条边;2)三角面片的法向向量;3)与前两者垂直的第三边;
  • 放缩变量k:通过三角形中一条边及其垂线的平均长度来计算标量k,以描述三角面片缩放;

对于对应的3DGS,在局部空间定义其位置\mu,旋转矩阵r,各向异性缩放系数s

  • 初始化时,\mu为局部零点位置,r为单位旋转矩阵,s为单位矢量。
  • 渲染时,将其从局部空间转换为全局空间:

本文将三角面片的缩放系数s,嵌入到公式5和6中,使得3DGS的局部位置和缩放与三角面片的缩放相关。这使得全局定义的学习率可以适用于局部。

蒙皮继承策略

  • 稠密:对于具有较大view-space positional gradient的3DGS,如果该点较大则拆分为两个,如果较小则复制一个新的;确保新3DGS和旧的足够近,这样可以将新点绑定至旧点对应的三角面片;
  • 剪枝:在3DGS原有剪枝的技术上,确保每个三角面片具有至少一个3DGS。有些脸部区域(眼球)常被遮挡,很有可能由于剪枝,导致眼球部分的3DGS被去掉。

优化和正则

  • 渲染图像损失如下,可以保证对已有场景有不错效果,但是对新表情和位置效果不佳(存在spike和blob伪影)

具有阈值的位置损失(Position loss with threshold)

在蒙皮继承策略中,本文通过拆分和复制增加新的3DGS。理想情况下,新增的3DGS应该与面片相邻。但是经过优化后,无法保证他们相邻。为解决该问题,本文引入了位置正则项:

\epsilon_{position}=1,确保3DGS和它的父亲三角面片足够近。

具有阈值的放缩损失(Scaling loss with threshold)

如果某个3DGS相较于它的父亲三角面片更大,三角面片的小角度旋转,会在3DGS上被放大,导致伪影。为解决该问题,本文引入了放缩正则项:

\epsilon_{scaling}=0.6,确保3DGS不会太大。

最终损失

其中,\lambda_{position}=0.01\lambda_{scaling}=1。这两项确保常被遮挡的区域(眼球、牙齿)可以被保留。

实现细节

  • Adam,位置学习率为5e-3,放缩学习率为1.7e-2;
  • 除了3DGS,FLAME的translation、joint rotation和表情系数也会fine-tune,学习率分别为:1e-6,1e-5和1e-3。
  • 训练600k iters,从10k iters之后,每2k iters执行3DGS的更新和蒙皮继承策略,每60k iters,重新设置3DGS的不透明度。

实验

  • 数据集:NeRSemble数据集上的9个目标,每个目标包含10种表情和16个视角。
  • 测试:1)新视角生成(novel-view synthesis);2)自重演(self-reenactment);3)跨ID重演(cross-identity reenactment)。

数字人重建

消融实验

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

英文表示数字_分支结构 C语言xdoj146

题目描述&#xff1a;输入一个0~9的一位整数&#xff0c;输出其对应的英文单词。要求用switch结构完成。 示例&#xff1a; 输入&#xff1a;0 输出&#xff1a;zero 输入&#xff1a;8 输出&#xff1a;eight #include <stdio.h>//英文表示数字_分支结构 int main() {in…

一招教你如何绕过OpenAI API key创建时需要手机号验证

一招教你如何绕过OpenAI API key创建时需要手机号验证 虽然现在 ChatGPT 注册门槛极大地降低。但是&#xff0c;如果你是开发者或者需要第三方应用接入ChatGPT&#xff0c;此时就需要获取一个 API key&#xff0c;然而你可能会发现在你在创建 key 的过程中需要进行手机号验证。…

【unity小技巧】使用三种方式实现瞄准瞄具放大变焦效果

最终效果对比 文章目录 最终效果对比前言第一种办法方法二1. 创建URP环境2. 配置 Universal Render Pipeline Asset3. 这里向我们新建一个无光的ShaderGraph4. 主图配置4. 新建材质&#xff0c;挂载5. 下面是shaderGraph 的连线图6. 新增脚本控制ObjectScreenPosition随着瞄准镜…

org.slf4j日志组件实现日志功能

slf4j 全称是Simple Logging Facade for Java。facade是一种设计模式。 slf4j 是一个抽象程度更高的日志组件&#xff0c;本身并不提供实际的日志功能。实际的日志功能是通过log4j等日志组件实现&#xff0c;而使用者只需要关心 slf4j 给出的API。 slf4j 仅仅是一个为Java程序提…

bootstap table表格, 获取当前点击的table元素在该行是第几个

背景 有这样一个需求, table表格中是统计数据, 要求点击每个单元格可实现导出统计的底层数据 数据都是可点击导出的, 思路 获取行bootstap 有个index参数, 所哟要获取当前行第几列, 要获取当前点击的table元素在其所在行中的位置&#xff08;即第几个&#xff09;&#xff…

《每天一分钟学习C语言·二》

1、当使用const关键字变量就无法修改可当常量来用。常量指针不能通过指针来改变变量的值&#xff0c;但可以通过其他引用来改变变量的值常量指针也可以指向其他变量地址&#xff0c;如 int a5,b6; const int *pt &a; *pt6; //错误 a6; //正确 pt&b; //正确指针常量指…

0057-基本数据类型和 String 类型的转换

文章目录 基本数据类型和 String 类型的转换注意事项 基本数据类型和 String 类型的转换 注意事项

Oracle的学习心得和知识总结(三十)| OLTP 应用程序的合成工作负载生成器Lauca论文翻译及学习

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…

计算机网络:物理层(编码与调制)

今天又学会了一个知识&#xff0c;加油&#xff01; 目录 一、基带信号与宽带信号 1、基带信号 2、宽带信号 3、选择 4、关系 二、数字数据编码为数字信号 1、非归零编码【NRZ】 2、曼彻斯特编码 3、差分曼彻斯特编码 4、归零编码【RZ】 5、反向不归零编码【NRZI】 …

.NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证

public Task InvokeAsync(HttpContext context){// 获取终点路由特性var endpointFeature context.Features.Get<IEndpointFeature>();// 获取是否定义了特性var attribute endpointFeature?.Endpoint?.Metadata?.GetMetadata<AllowAnonymousAttribute>();if …

giee 添加公匙 流程记录

一、安装 百度网盘CSDN4文件夹下&#xff0c;或者官网下载&#xff1a;https://git-scm.com/downloads 二、生成密钥 1.右击打开git bash 2.$ ssh-keygen -t rsa -C “个人邮箱地址”&#xff0c;按3个回车&#xff0c;密码为空。 3.在C:\Users{windows用户名}.ssh目录下得到…

G1506 小电流升压型LED驱动芯片

G1506 小电流升压型LED驱动芯片 概述 &#xff1a; G1506是一种专为以恒定电流来驱动白光LED而设计的升压型DC/DC变换器。该器件能利用一节锂离子电池来驱动两个、三个或四个串联的LED采用LED串联连接的方法可以提供相等的LED电流从而能获得均匀的亮度且无需镇流电阻器。G1506的…

查找Apple Watch的序列号有重要意思,主要有两种方法

如果你打算购买二手Apple Watch&#xff0c;你可能需要检查它的序列号或IMEI号&#xff0c;来确保可靠性。以下是如何从Apple Watch和iPhone中查找序列号。 在Apple Watch上查找序列号和IMEI 1、在Apple Watch上&#xff0c;按下手表表面的数字皇冠以打开应用程序网格或列表。…

Unity中Shader测试常用的UGUI功能简介

文章目录 前言一、锚点1、锚点快捷修改位置2、使用Anchor Presets快捷修改3、Anchor Presets界面按下 Shift 可以快捷修改锚点和中心点位置4、Anchor Presets界面按下 Alt 可以快捷修改锚点位置、UI对象位置 和 长宽大小 二、Canvas画布1、UGUI中 Transform 变成了 Rect Transf…

华清远见嵌入式学习——ARM——作业1

要求&#xff1a; 代码&#xff1a; mov r0,#0 用于加mov r1,#1 初始值mov r2,#101 终止值loop: cmp r1,r2addne r0,r0,r1addne r1,r1,#1bne loop 效果&#xff1a;

Python 全栈体系【四阶】(七)

第四章 机器学习 六、多项式回归 1. 什么是多项式回归 线性回归适用于数据呈线性分布的回归问题。如果数据样本呈明显非线性分布&#xff0c;线性回归模型就不再适用&#xff08;下图左&#xff09;&#xff0c;而采用多项式回归可能更好&#xff08;下图右&#xff09;。例…

【开源软件】最好的开源软件-2023-第六名 Solid

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

ac转dc电源芯片SM7025 支持12V/18V输出电压

AC转DC电源芯片是一种能够将交流电转换为直流电的重要器件&#xff0c;广泛应用于电子设备和电源系统中。它可以提供稳定的直流电源&#xff0c;为设备的正常运行提供保障。 AC转DC电源芯片的工作原理是利用内部的整流、滤波、变压器和稳压等电路&#xff0c;将输入的交流电转换…

深耕元宇宙领域,强势发力文旅市场

2023年12月14日&#xff0c;“承上启下 智元宇宙&#xff1a;2024元宇宙与人工智能应用场景闭门会——苏州”在苏州泰山路2号百度VR&#xff08;苏州&#xff09;赋能中心成功举办。会议邀请了苏州本地的相关优秀企业代表、科创精英、投资与行业技术代表、公司创始人共计约50余…

MyBatis持久层框架

四、MyBatis持久层框架 目录 一、Mybatis简介 1. 简介2. 持久层框架对比3. 快速入门&#xff08;基于Mybatis3方式&#xff09; 二、日志框架扩展 1. 用日志打印替代sout2. Java日志体系演变3. 最佳拍档用法4. Lombok插件的使用 4.1 Lombok简介4.2 Lombok安装4.3 Lombok使用注…
最新文章