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

[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.mzph.cn/news/234937.shtml

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

相关文章

http -- 跨域问题详解(浏览器)

参考链接 参考链接 1. 跨域报错示例 Access to XMLHttpRequest at http://127.0.0.1:3000/ from origin http://localhost:3000 has been blocked by CORS policy: Response to preflight request doesnt pass access control check: No Access-Control-Allow-Origin header…

【QT】解决QTableView修改合并单元格内容无法修改到合并范围内的单元格

问题:修改合并单元格的内容 修改合并单元格的内容时,希望直接修改到合并范围内的单元格,Qt没有实现这个功能,需要自己写出 Delegate来实现 方案:Delegate class EditDelegate : public QStyledItemDelegate {public:EditDelegate(QTableView *view): tableView(view){}pu…

JS基础之模块化

JS基础之模块化 JS模块化模块化前端发展 什么是模块?怎么定义模块化IIFE匿名函数自调用IIFE模式增强模块化的好处 JS模块化 模块化 JS DOM操作 代码规范管理的标准 不同模块间的管理模块内部自组织 标准bundler (模块构建工具) ESNext TS -> ES5 前端发展 生态 …

Python数据处理必备:Pandas DataFrame中行迭代技巧大曝光!

更多资料获取 📚 个人网站:ipengtao.com 在数据分析和处理中,Pandas是Python中最常用的库之一,而DataFrame是Pandas的核心数据结构之一。迭代DataFrame中的行是一种常见的操作,本文将详细介绍几种迭代DataFrame行的方…

k8s集群内部署nexus

一、前言 在k8s集群中部署nexus服务需要使用到pv、pvc服务来存储nexus的数据,需要使用service服务来提供对外访问nexus服务的端口,需要使用deployment服务来管理nexus服务,接下来就是用这些服务来在k8s集群中搭建nexus,pv服务使用…

爱芯派pro通过无线网卡rtl8188eu连接热点

爱芯派pro通过无线网卡rtl8188eu连接热点 爱芯派pro目前的底板的pcie的复位有问题,所以pcie接口无法挂载上去,所以自己购买的rtl8822网卡也用不了,然后想起来自己还有正点原子的rtl8188eu网卡,但是没有和工作人员进行摸索后才知道…

如何禁止外网访问公司内网服务器

对于企业网络,经常会用到访问控制,例如限制员工的上网时间?或如何控制各部门之间的网络互通等等,在实际企业网络项目中经常会遇到,这里面我们就可以用到ACL访问列表控制了,本期我们一起来看下,如…

SpringBoot已经禁掉了循环依赖!

还在问循环依赖嘛?SpringBoot已经禁掉了循环依赖! 首发2023-12-18 11:26yuan人生 如果现在面试时还有人问你循环依赖,你就这样怼他:循环依赖是一种代码质量低下的表现,springboot2.6之后的版本已经默认禁用了。 Spr…

保护电脑安全,火绒安全助手 V5.0

火绒安全软件,也称为“火绒安全助手”是一款由中国研发的综合安全软件。火绒安全软件旨在为计算机用户提供全面的安全保护,包括防病毒、反恶意软件、网络安全、系统优化等功能。 火绒安全的功能 病毒防护:火绒提供实时的病毒和恶意软件扫描…

排序算法——快排

快速排序算法最早是由图灵奖获得者Tony Hoare设计出来的,他在形式化方法理论以 及ALGOL.60编程语言的发明中都有卓越的贡献,是20世纪最伟大的计算机科学家之—。 而这快速排序算法只是他众多贡献中的—个小发明而已。 快速排序(Quick Sort)的基本算法思…

C语言—每日选择题—Day57

指针相关博客 打响指针的第一枪:指针家族-CSDN博客 深入理解:指针变量的解引用 与 加法运算-CSDN博客 第一题 1. 下面程序段() char *str[] {"ABC", "DEF", "GHI"}; puts(str[1]); A:A…

用户行为分析遇到的问题-ubantu16,hadoop3.1.3

用户行为分析传送门 我的版本 ubantu16 hadoop 3.1.3 habse 2.2.2 hive3.1.3 zookeeper3.8.3 sqoop 1.46/1.47 我sqoop把MySQL数据往hbase导数据时候有问题 重磅:大数据课程实验案例:网站用户行为分析(免费共享) 用户行为分析-小…

5G+云渲染技术:将如何快速推进XR和元宇宙?

XR(扩展现实)领域正在以惊人的速度增长。目前,到 2024 年,一些专家表示这个行业的价值将达到 3000 亿美元。 这个行业发展如此迅速的部分原因是 XR 将在商业环境中的带来巨大利益。近年来,很多企业遇到了将增强现实和…

RabbitMQ不公平分发问题分析及问题解决

1.不公平分发 1.1 不公平分发策略是什么? 在 RabbitMQ 中,不公平分发(Unfair Dispatch)是指当多个消费者(Consumers)同时订阅同一个队列(Queue)时,消息的分发机制是不公…

I.MX6ULL_Linux_驱动篇(48)linux I2C驱动

I2C 是很常用的一个串行通信接口,用于连接各种外设、传感器等器件。本章我们来学习一下如何在 Linux 下开发 I2C 接口器件驱动,重点是学习 Linux 下的 I2C 驱动框架,按照指定的框架去编写 I2C 设备驱动。本章同样以 I.MX6U-ALPHA 开发板上的 …

Java数据结构-模拟ArrayList集合思想,手写底层源码(1),底层数据结构是数组,编写add添加方法,正序打印和倒叙打印

package com.atguigu.structure; public class Demo02_arrayList {public static void main(String[] args) {MyGenericArrayListV1 arrayListV1 new MyGenericArrayListV1();//arr.add(element:100,index:1);下标越界,无法插入//初始化(第一次添加&…

Java 栈和队列的交互实现

文章目录 队列和栈的区别一.用队列模拟实现栈1.1入栈1.2出栈1.3返回栈顶元素1.4判断栈是否为空 二.用栈模拟实现队列2.1 入队2.2出队2.3peek2.4判断队列是否为空 三.完整代码3.1 队列模拟实现栈3.2栈模拟实现队列 队列和栈的区别 栈和队列都是常用的数据结构,它们的…

令人惊叹的代码技巧

在编程世界中,有一些令人惊叹的代码技巧和巧妙的实现方式。以下是一些我见过的令人印象深刻的代码技巧: 函数式编程魔法: 使用函数式编程的一些特性,比如高阶函数、匿名函数和Lambda表达式,可以使代码更为简洁、易读。…

飞天使-k8s知识点1-kubernetes架构简述

文章目录 名词功能要点 k8s核心要素CNCF 云原生框架简介k8s组建介绍 名词 CI 持续集成, 自动化构建和测试:通过使用自动化构建工具和自动化测试套件,持续集成可以帮助开发人员自动构建和测试他们的代码。这样可以快速检测到潜在的问题,并及早…

揭秘Spark学习框架网站:让你轻松掌握大数据处理神器!

介绍:Apache Spark是一个开源的大数据处理框架,它致力于实现高速、易用和复杂分析。Spark最初由加州大学伯克利分校的AMPLab于2009年开始开发,并于2010年成为Apache的开源项目之一。由于其出色的性能表现与丰富的功能特性,Spark已…