[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.mfbz.cn/a/259170.html

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

相关文章

域架构下的功能安全思考

来源:联合电子 随着整车电子电气架构的发展,功能域控架构向整车集中式区域控制演进。新的区域控制架构下,车身控制模块(BCM),整车控制单元(VCU),热管理系统(TMS)和动力底…

机器学习笔记:支持向量机回归SVR

1 主要思想 主要思路类似于机器学习笔记:支持向量机SVM_支撑向量学习-CSDN博客 和SVM的区别主要有 解法和SVM区别不大,也是KKT 2 和线性回归的区别 对SVR,如果f(x)和y之间的差距小于阈值ε【也即落在两条间隔带之间】,则不计算…

Text2SQL学习整理(三)SQLNet与TypeSQL模型

导语 上篇博客:Text2SQL学习整理(二):WikiSQL数据集介绍简要介绍了WikiSQL数据集的一些统计特性和数据集特点,同时简要概括了该数据集上一个baseline:seq2sql模型。本文将介绍seq2SQL模型后一个比较知名的…

盲盒电商:万物皆可盲盒

随着社会的进步和消费观念的改变,盲盒已经成为了年轻人喜爱的消费方式之一。从玩具、文具到美妆、服饰,甚至是旅行、餐饮等领域,盲盒的形态和内容也在不断变化和丰富。今天,我们就来聊聊这个充满惊喜和未知的盲盒世界。 一、盲盒的…

JDK bug:ciObjectFactory::create_new_metadata:原因完全解析

文章目录 1、问题2.详细日志2.关键日志3.结论4.JDK:bug最终bug链接: 京东遇到过类似bug各位大佬如果有更详细的解答可以留言。 1、问题 服务不通,接口404,查看日志有一下截图,还有一个更详细的日志 2.详细日志 # #…

Missing artifact org.wltea.analyzer:ik-analyzer:jar:5.0

没有找到【org.wltea.analyzer】 找到了【org.wltea.ik-analyzer】 https://github.com/wks/ik-analyzer https://github.com/wks/ik-analyzer.git https://code.google.com/archive/p/ik-analyzer/downloads?page2 C:\Users\Administrator\Desktop\ik-analyzer-master>m…

java实现回文数算法

判断一个数是否为回文数可以使用以下算法: 将数字转化为字符串;初始化左右两个指针,分别指向字符串的首尾;循环比较左右指针指向的字符,如果相等则继续比较,直到左右指针相遇或者发现不相等的字符为止&…

《opencv实用探索·二十一》人脸识别

Haar级联分类器 在OpenCV中主要使用了两种特征(即两种方法)进行人脸检测,Haar特征和LBP特征。用的最多的是Haar特征人脸检测。 Haar级联分类器是一种用于目标检测的机器学习方法,它是一种基于机器学习的特征选择方法,…

【halcon深度学习】create_dl_model_detection

基本介绍 create_dl_model_detection 不是一个封装的库函数,是一个算子。用于创建用于目标检测或实例分割任务的深度学习模型。 输入参数: Backbone (input_control): 指定用作背骨网络的深度学习分类器,充当模型的基础。用户可以选择不同的…

python+pytest接口自动化之测试函数、测试类/测试方法的封装

前言 今天呢,笔者想和大家聊聊pythonpytest接口自动化中将代码进行封装,只有将测试代码进行封装,才能被测试框架识别执行。 例如单个接口的请求代码如下: import requestsheaders {"user-agent": "Mozilla/5.0…

国标28181平台只能连接视频监控吗?

在一些视频监控项目中,国标28181平台成为了必不可少的工具。这个平台的主要作用在于将分布在不同区域的视频监控录像机、摄像头等设备进行联网管理,同时还能将视频监控连接到上一级的国标监控平台。 可以说,国标监控平台是一个非常重要的承上…

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

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

【Spring Security】让你的项目更加安全的框架

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《MyBatis-Plus》。🎯🎯 &am…

【halcon深度学习之那些封装好的库函数】determine_dl_model_detection_param

determine_dl_model_detection_param 目标检测的数据准备过程中的有一个库函数determine_dl_model_detection_param “determine_dl_model_detection_param” 直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数,强烈建议…

kafka offset sasl加密连接

kafka-tool(offset) 进行SCRAM连接,直接上图 填写jaas的认证(账密 引用包)

【Java】网络编程-UDP字典服务器客户端简单代码编写

上文讲了UDP回响服务器客户端简单代码编写 本文将讲述UDP字典服务器客户端简单代码编写。所谓回显,就是指客户端向服务器发送一个报文,从服务器那里得到一条一模一样的回响报文 而我们的字典功能呢,则是实现了输入中文,得到对应…

力扣 面试经典150算法题

1合并两个有序数组88. 合并两个有序数组-CSDN博客简单23

Backend - Django 项目创建 运行

目录 一、配置环境 二、创建 Django 项目 (一)新建文件夹 (二)打开文件夹 (三)打开运行终端 (四)创建基础项目 (五)创建app 1. 安装Django &#xf…

分析某款go扫描器之四

一、概述 上文提到实现IP的探测存活以及tcp扫描的实现,这部分来分析实现本机网卡信息获取,以及维护一张mac地址表以及ip扫描端口状态表,同时实现syn扫描功能。 项目来源:https://github.com/XinRoom/go-portScan/blob/main/util…

PY32F072片内闪存读写 HAL库

我这个hal库底层是一次写一页,擦除也是以页为单位的。这个芯片太偏了,有点小恶心。 flash.c uint8_t flash_read(uint32_t add) {uint8_t temp;temp *(__IO uint8_t *)(add);return temp; }void flash_read_buf(uint32_t add, uint8_t *data, uint8_t…
最新文章