[CVPR-23] PointAvatar: Deformable Point-based Head Avatars from Videos

news2024/11/15 21:21:39

[paper | code | proj]

  • 本文的形变方法被成为:Forward Deformation
  • PointAvatar基于点云表征动态场景。目标是根据给定的一段单目相机视频,重建目标的数字人,并且数字人可驱动;
  • 通过标定空间(canonical space)和形变空间(deformation space)表征场景。
  • 其中,标定空间中的任意点坐标,首先映射至FLAME空间,通过对应FLAME的相关系数(表情、位姿和LBS)从FLAME空间映射至形变空间。
  • 该点的颜色,被拆解为与姿态无关的反射率(albedo)和与姿态相关的阴影(shading)。其中前者根据点在标定空间中的坐标预测得到,后者根据点在形变空间的法向量预测得到。
  • 点在标定空间中的法向量通过拟合SDF对坐标求导得到,在形变空间中的法向量通过点的逆雅可比矩阵求得。

方法

基于点的标定表征

  • 包括颜色
  • 。N个可学习的点。初始化时,从一个球体中采样点;后续训练中,增加点的数量同时减少点的半径。在训练过程中,对下面两种点会删除掉:不能投影至任何像素的点、可见度高于某个阈值的点。

  • 颜色。将点颜色解耦为与位姿(pose)无关的反射率(albedo)和与pose相关的阴影(shading);
    • 阴影部分:通过点在形变空间的法向量(normal)估计;
    • 因此,本文的重点在于:
      • 1)如何估计点在标定空间中的反射率和法向量;
      • 2)如何估计点在形变空间中的位置和法向量;

标定空间下的法向量

  • 训练中,根据当前标定空间下的点,估计SDF:L_{sdf} = {|| SDF(x_c)||}^2L_{eik} = {(||\nabla_{x_e}SDF(x_e)]|| - 1)}^2。其中,后者是Eikonal正则项,x_e包含了点和扰动点;
  • 通过SDF对该点位置求导,得到该点的法向量:n_c = \nabla_{x_c} SDF(x_c)

标定空间下的反射率

  • 通过一个MLP将点位置x_c映射为反射率颜色(albedo colors)a \in \mathbb{R}^3。为了节省计算开销,本文用一个MLP同时计算标定空间下的法向量和反射率:

点的形变

  • 将标定点x_c,通过预测的标定差O,映射为FLAME标定点x_o
  • 将FLAME标定点x_o,通过表情系数,LBS系数等,映射为形变点x_d
  • 通过MLP,输入为标定点,输出为标定差O\in\mathbb{R}^3、表情系数残差\varepsilon \in \mathbb{R}^{n_e \times 3}、姿态系数残差P \in \mathbb{R}^{n_p \times 9 \times 3}和LBS系数W\in\mathbb{R}^{n_j}。具体公式如下:

法向量的形变

  • 求得标定点x_c和形变点x_d,可通过对应雅可比逆矩阵,求形变法向量

点的颜色

标定点x_c,在形变空间中的坐标是x_d,对应的形变颜色是c_d

其中,s_d可通过形变点的法向量求得:

可导的点渲染

基于PyTorch3D实现,和3DGS的Splatting渲染方法类似。

训练目标

其中,M是头部掩码(head mash),表情系数,位姿系数和LBS系数的伪标签定义为最近邻FLAME顶点。最终损失为:

实验

  • 数据集包含:
    • IMavatar中的1个目标;
    • NerFace中的2个目标;
    • 本文在互联网收集的1个目标、基于智能手机拍摄的4个目标和笔记本摄像头拍摄的1个目标
  • 基线方法:NerFace、neural head avatar (NHA)和IMavatar

SOTA方法的比较

重光照(光照解耦)

训练和渲染开销

消融实验

  • 相较于直接在预定义FLAME模型中学习,在标准空间中任意学习,再映射到FLAME空间,表现更佳。

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

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

相关文章

Jmeter实现CSV数据批量导入

CSV:逗号分隔值,是一种简洁且常见的数据存储格式。 1、参数化: 在Jmeter中,可以通过“用户自定义的变量”来实现参数化使操作方便,使用语法位:${参数名},如下图: 而CSV也同理&…

第二百一十八回 如何修改CircleAvatar的大小

文章目录 1. 概念介绍2. 使用方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"修改页面导航中遇到的问题"沉浸式状态样相关的内容,本章回中将介绍如何修改avada的大小.闲话休提,让我们一起Talk Flutter吧。 1.…

代码随想录算法训练营第四十一天|198.打家劫舍 ,213.打家劫舍II ,337.打家劫舍III

198. 打家劫舍 - 力扣(LeetCode) 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入&#…

支持向量机 支持向量机概述

支持向量机概述 支持向量机 Support Vector MachineSVM ) 是一类按监督学习 ( supervisedlearning)方式对数据进行二元分类的广义线性分类器 (generalized linear classifier) ,其决策边界是对学习样本求解的最大边距超亚面 (maximum-margin hyperplane)与逻辑回归和…

第二百一十七回 修改页面导航中遇到的问题

文章目录 1. 问题介绍2. 使用方法3. 代码与分析3.1 示例代码3.2 代码分析4. 内容总结我们在上一章回中介绍了"分享一种更新页面数据的方法"相关的内容,本章回中将介绍修改页面导航中遇到的问题.闲话休提,让我们一起Talk Flutter吧。 1. 问题介绍 我们在页面之间导…

C++刷题 -- 字符串

C刷题 – 字符串 文章目录 C刷题 -- 字符串1.重复的子字符串 1.重复的子字符串 https://leetcode.cn/problems/repeated-substring-pattern/submissions/490209402/ 暴力解法 第一个for循环用来标定子串的末尾,根据末尾取出子串 第二个while循环用来检查原字符串是…

WEB渗透—PHP反序列化(六)

Web渗透—PHP反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩…

AT32 F435简介4/N ChibiOS porting plan

AT32 F435简介4/N ChibiOS porting plan 1. 源由2. 框图3. Makefile4. 分析4.1 Startup Code4.2 RT Port Layer4.3 HAL Board Layer4.4 HAL Port Layer 5. 总结6. 参考资料 1. 源由 对比STM32 F405进行AT32 F435 MCU的资料研读,期望获取更多差异化信息;…

Android 架构 - 组件化

一、概念 组件化是对单个功能进行开发,使得功能可以复用。将多个功能组合起来就是一个业务模块,因此去除了模块间的耦合,使得按业务划分的模块成了可单独运行的业务组件。(一定程度上的独立,还是依附于整个项目中&…

Python 多维数组详解(numpy)

文章目录 1 概述1.1 numpy 简介1.2 ndarray 简介 2 数组操作2.1 创建数组:array()2.2 裁切数组:切片2.3 拼接数组:concatenate()2.4 拆分数组:array_split()2.5 改变数组形状:reshape() 3 元素操作3.1 获取元素&#x…

uint29传输格式

前言 不知道谁想出来的。 反正我是想不到。 我看网上也没人讲这个。 写篇博客帮一下素未谋面的网友。 uint29 本质上是网络传输的时候,借用至多4字节Bytes,表达29位的无符号整数。 读8位数字,判断小于128? 是的话,返回末7位…

一文读懂PMP项目管理

PMP项目管理是什么 PMP(Project Management Professional)指项目管理专业人员资格认证,由美国项目管理协会(Project Management Institute,简称PMI)发起,目前已在全球206个国家和地区进行认证&…

Axure中继器的基本使用

介绍中继器 在 Axure 中,中继器是一种交互设计元素,用于在不同页面之间传递数据或触发特定的事件。它可以帮助模拟真实的用户交互流程和页面之间的传递逻辑,继承关系用于描述两个元件之间的父子关系。通过使用继承关系,您可以创建…

实现高效、透明、公正的采购寻源——鸿鹄电子招投标系统

在数字化时代,企业需要借助先进的数字化技术来提高工程管理效率和质量。招投标管理系统作为企业内部业务项目管理的重要应用平台,涵盖了门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理等…

如何将图片转为PDF

问题描述:如何将图片转为PDF,有时需要将纸质文档扫描成PDF,然后上传到网上。 解决办法:平时使用的方法是将图片插入到word文件中,然后将图片设置为浮于文字下方,然后调整图片的大小,铺满整个wo…

米家APP如何转让家庭创建者里面设备所有权

环境: 米家APPv8.11.203 问题描述: 米家APP如何转让家庭创建者里面设备所有权,需要添加到HA里面 解决方案: 1.登入创建者账户先把家庭共享给要转让得账户,权限选中管理员 2.登入要转入账户,先加入创建者…

深入学习《大学计算机》系列之第1章 1.4节——从二进制起源窥见的奥秘

一.欢迎来到我的酒馆 第1章 1.4节,从二进制起源窥见的奥秘。 目录 一.欢迎来到我的酒馆二.二进制的起源1.关于莱布尼茨2.莱布尼茨和牛顿的恩怨情仇 二.二进制的起源 本节内容属于知识拓展,通过讲解几个小故事,向大家介绍二进制的起源。 1.关…

为你自己学laravel - 15 - model的更新和删除

为你自己学laravel。 model的部分。 这一次讲解的是model当中怎么从数据库当中更新数据和删除数据。 先从数据库当中抓出来资料。 当然我们是使用php artisan tinker进入到终端机。 我们的做法是想要将available这个栏位修改成为true。 第一种更新方法 上面我们就是修改了对…

OpenHarmony开发环境快速搭建(无需命令行)

一. 搭建Windows环境 在嵌入式开发中,很多开发者习惯于使用Windows进行代码的编辑,比如使用Windows的Visual Studio Code进行OpenHarmony代码的开发。但当前阶段,大部分的开发板源码还不支持在Windows环境下进行编译,如Hi3861、H…

金三银四精选面试题系列

Java中有哪几种方式来创建线程执行任务? 1. 继承Thread类 public class ZhouyuThread extends Thread{public static void main(String[] args) {ZhouyuThread thread new ZhouyuThread();thread.start();}Overridepublic void run() {System.out.println("h…