[CVPR‘23] PanoHead: Geometry-Aware 3D Full-Head Synthesis in 360 deg

news2024/9/21 8:03:14

论文|项目

总结:

  • 任务:3D human head synthesis
  • 现有问题:GANs无法在「in-the-wild」「single-view」的图片情况下,生成360度人像
  • 解决方案:1)提出了two-stage self-adaptive image alignment,用于robust 3D GAN training;2)提出了tri-grid neural volume representation,用于解决头后镜像脸的问题;3)提出了foreground-aware tri-discriminator,用于将人像从背景中解耦出来。

引言

为了生成不同形状和外观的3D heads:

  • 传统方法(显示方法)使用参数化textured mesh model,可以单张出Avatar,然而渲染的图片细节较差,效果不好;
  • 隐式方法效果不错,但这些方法通常需要多视角图片或3D scan supervision,同时由于采集自受控环境,生成Avatar的外观分布有限;
  • 3D GAN(EG3D)可以使用「in-the-wild」「single-view」图片生成人像,然而这些方法通常只能产生near-frontal views。
  • 因此,本文提出PanoHead,是第一个可以使用「in-the-wild」「single-view」图片,生成360度3D人像的方法;

拓展EG3D用于生成360度3D人像,存在下列挑战:

  1. 3D GANs很难将前景和背景分开,背景通常被表示为墙,阻碍了大角度的渲染。针对这个问题,本文提出了foreground-aware tri-discriminator,通过使用2D image segmentation的先验知识,将前景从3D space中分离出来;
  2. 对360度相机位姿来说,tri-plane引入了很强的映射歧义,导致在头后产生镜像脸(mirrored face)。针对这个问题,本文提出了tri-grid volume representation将前景特征解耦出来;
  3. 对3D GANs来说,获得「in-the-wild」头后图片的相机外参是很困难的。同时,由于对头后关键点检测效果较差,前脸和头后图像的image alignment也存在差异。这种alignment gap会导致显示噪声和头部形状较差。针对这个问题,本文提出了two-stage alignment scheme,使得image alignment保持视觉一致。同时,本文还提出一种相机自适应模型(camera self-adaptation module),动态调整渲染相机的位置,以缓解alignment gap的问题。

综上,本文贡献如下:

  1. 第一个可以使用「in-the-wild」「single-view」图片,生成360度3D人像的方法;
  2. 提出一种tri-grid formulation,用于解决头后的镜像脸问题;
  3. 提出一种tri-dricriminator:将3D前景头像从2D人造背景中解耦出来;
  4. 提出一种two-stage image alignment scheme,缓解不正确的camera poses和alignment gap,改善3D GAN在「in-the-wild」图片上的训练

方法

三个问题阻碍了EG3D渲染出360度人像:1)前景和背景无法解耦阻碍了大pose的渲染;2)tri-plane存在归纳偏置,导致在头后渲染出人脸;3)相机外参不准确和alignment gap问题。针对这三个问题,本文分别提出了解决方案。

Foreground-Aware Tri-Discrimination

由于无法将前景从背景中解耦出来,会导致生成2.5D人像(下图a)。增加侧脸或头后图片可以建立完整的几何结构,提供合理的头后形状。然而,这并不能解决问题,因为tri-plane本身就不是设计用来从背景中分离前景; 

因此,本文提出一中foreground-aware tri-discriminator。具体来说,tri-discriminator的输入有7个通道,包含bilinearly-upsampled RGB图片,super-resolved RGB图片和single-channel upsampled foreground mask。

 

Feature Disentanglement in Tri-Grid

现有方法Tri-plane,使用三个互相垂直的平面,任意一个体素神经场密度和颜色是通过投影到三个平面的特征和,经过一个MLP得到;但是Tri-plane会导致头后出现人脸,这是由于tri-plane投影的归纳偏置导致的。例如:对前脸和头后的两个点,他们会投影到XY平面中的同一个点(如下图a)。

这是因为,当缺少头后监督,或头后结构较难学习时,tri-planes倾向于借助前脸的特征,这导致了镜像脸问题(mirroring-face artifacts),如下图:

为了解决该问题,本文为tri-plane增加了额外的深度维度,并称为tri-grid。原有的tri-plane是H x W x C,增加后是D x H x W x C,其中D表示深度。具体来说,会增加D个平面,对具有相同投影坐标的脸前和头后两个点,在tri-grid中由相邻深度的平面插值得到。本文使用D = 3。

Self-Adaptive Camera Alignment

现有的图像预处理是基于人脸关键点,但对侧脸和头背,目前无法准确估计人脸关键点。因此,本文提出一种两阶段处理。在第一阶段,对可见的关键点,本文仍然使用3DDFA检测关键点,将人脸缩放至相似尺寸,并对齐至人脸中心。对有较大角度变化的点,本文使用WHENet检测头的位姿,并提供粗略估计的相机位姿,并使用YOLO输出以头为中心的bbox。为了保证裁剪后的图片,头的大小和中心保持一致,本文同样也将YOLO和3DDFA应用在前脸图片上。

由于不同发型的存在,头后图片的对齐仍然存在不连续问题。因此,本文提出一中自适应相机对齐机制(a self-adaptive camera alignment scheme)。

实验

数据集和Baseline

数据集:

FFHQ:70K人脸图片,大部分在0-60度。本文对FFHQ数据集扩张冲了4

K-hairstyle dataset

in-hourse large-pose head image collection

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

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

相关文章

C++ 设计模式之策略模式

文章目录 一、简介二、场景三、举个栗子四、小结参考资料 一、简介 策略模式的定义很简单:即创建一系列的算法,把它们一个个封装起来 , 并且使它们可相互替换(用扩展的方式来面对未来变化)。在GoF一书中将其定位为一种“对象行为式模式”&…

vs code insiders 配置c语言

vs code insiders 配置c语言 1.下载插件 2.再配置代码 (1)launch.json {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/…

操作系统的可扩展访问控制

访问控制是操作系统安全的基石,当前的操作系统已部署了很多访问控制的模型:Unix和Windows NT多用户安全;SELinux中的类型执行;反恶意软件产品;Apple OS X,Apple iOS和Google Android中的应用沙盒&#xff1…

RNN介绍

时间序列的表示 [seq_len, batch_size, vec ] seq_len表示一个句子通常有多少个单词或者一个序列有多少个时间段,batch_size表示同时多个样本,vec表示单词的编码长度 请问rnn和lstm中batchsize和timestep的区别是什么? - 知乎 (zhihu.com) import torch import torch.nn …

MYSQL05高级_查看修改存储引擎、InnoDB和MyISAM对比、其他存储引擎介绍

文章目录 ①. 查看、修改存储引擎②. InnoDB和MyISAM对比③. Archive引擎 - 归档④. Blackhole引擎丢数据⑤. CSV - 引擎⑥. Memory引擎 - 内存表⑦. Federated引擎 - 访问远程表⑧. Merge引擎 - 管理多个MyISAM⑨. NDB引擎 - 集群专用 ①. 查看、修改存储引擎 ①. 查看mysql提…

Spring Boot原理分析(一):项目启动(上)——@SpringBootApplication

文章目录 〇、准备工作一、SpringBootApplication.java源码解析1.源码2.自定义注解3.组合注解4.注解ComponentScan过滤器 5.注解SpringBootConfigurationConfiguration 6.注解EnableAutoConfiguration 本文章是Spring Boot源码解读与原理分析系列博客的第一篇,将会介…

Mac(M1Pro)下运行ChatGLM2

最近很多人都尝试在M1/M2芯片下跑chatglm/chatglm2,结果都不太理想,或者是说要32G内存才可以运行。本文使用cpu基于chatglm-cpp运行chatglm2的int4版本。开了多个网页及应用的情况下(包括chatglm2),总体内存占用9G左右。chatglm2可…

PYTHON+YOLOV5+OPENCV,实现数字仪表自动读数,并将读数结果进行输出显示和保存

最近完成了一个项目,利用pythonyolov5实现数字仪表的自动读数,并将读数结果进行输出和保存,现在完成的7788了,写个文档记录一下,若需要数据集和源代码可以私信。 最后实现的结果如下: 项目过程 首先查阅文…

从单体到SpringBoot/SpringCloud微服务架构无感升级的最佳实践

目录导读 从单体到SpringBoot/SpringCloud微服务架构无感升级的最佳实践1. 业务背景2. 当前问题3. 升级方案3.1 架构设计4. 详细设计4.1 迁移阻碍4.2 解决思路 5. 实现过程5.1 认证兼容改造5.2 抽象业务流程5.2.1 抽象业务的思路5.2.2 抽象业务的抽象编码5.2.3 抽象业务的具体实…

BFF网关模式开发指南

BFF是近些年新衍生出来的一种开发模式,或者说是一种适配模式的系统,BFF全称为Backend OF Front意为后端的前端,为了适配微服务模式下前端后端系统接口调用混乱而出现的。在如今微服务盛行的趋势下,大型系统中划分出了数十个服务模…

前端优化的一些方向

对于浏览器来说,加载网页的过程可以分为两部分,下载文档并响应(5%左右),下载各种组件(95%左右)。 而对比大部分优秀网页来说下载文档(10%~ 20%),下载组件&…

23_7第一周LeetCode刷题回顾

目录 1. 两数之和2. 两数相加3.无重复字符的最长子串4.寻找两个正序数组的中位数5.最长回文子串6.N 形变换7.整数反转8.字符串转整数(atoi)9.回文数10. 正则表达式匹配11. 盛最多水的容器12. 整数转罗马数字13. 罗马数字转整数14. 最长公共前缀15.三数之…

MyBatis中的动态SQL(sql标签、where标签、set标签、批量增加与批量删除)

目录 sql标签 ​编辑 where标签 set标签 foreach标签 批量增加 批量删除 将基础SQL语句中重复性高的增加它的复用性&#xff0c;使得sql语句的灵活性更强 sql标签<sql> <sql id"text">select * from user</sql><select id"selectA…

如何在苹果商店发布App?

一、介绍 众所周知&#xff0c;苹果对于自家产品的安全问题十分重视&#xff0c;他们有严格的一套审核标准和流程&#xff0c;当我们想要在苹果商店发布一款App的时候就需要经过重重艰难险阻&#xff0c;克服不少繁杂的问题去完成这项工作。 另外有一点需要注意的是&#xff…

C语言库函数strcpy学习

strcpy是C语言的一个标准库函数&#xff1b; strcpy把含有\0结束符的字符串复制到另一个地址空间&#xff0c;返回值的类型为char*。 原型声明&#xff1a;char *strcpy(char* dest, const char *src); 头文件&#xff1a;#include <string.h> 和 #include <stdio.h&g…

领域驱动设计(三) - 快速开始 - 【3/3】事件风暴

使用DDD的最终目的是深入学习业务如何运作。然后基于学习试验、质疑、再学习和重建模的过程。过程中面临的最大挑战是如何快速学习&#xff0c;并且在保证学习质量的前提下压缩学习时间&#xff08;你的学习是需要公司付工资的&#xff09;。 事件风暴就是一种相对高效的分析工…

【电子学会】2023年05月图形化二级 -- 接水果

接水果 天上掉落各种水果下来&#xff0c;有草莓、苹果、香蕉&#xff0c;快拿大碗去接住水果吧。 1. 准备工作 &#xff08;1&#xff09;导入背景Blue Sky&#xff1b; &#xff08;2&#xff09;删除小猫角色&#xff0c;导入角色Bowl、Apple、Strawberry、Bananas。 2.…

【技能实训】DMS数据挖掘项目-Day03

文章目录 任务5【任务5.1】基础信息实体类【任务5.2.1】继承DataBase类&#xff0c;重构日志类【任务5.2.2】继承DataBase类&#xff0c;重构物流实体类【任务5.2.3】创建物流、日志测试类&#xff0c;测试任务5.2中的程序&#xff0c;演示物流信息、日志信息的采集及打印输出 …

【Redis】Transaction(事务)

&#x1f3af;前言 Redis事务是一个组有多个Redis命令的集合&#xff0c;这些命令可以作为一个原子操作来执行。 Redis事务通常用于以下两种情况&#xff1a; 保证操作的原子性&#xff1a;在多个命令的执行过程中&#xff0c;如果有一个命令执行失败&#xff0c;整个事务都需…

【数据编制架构】数据编织(Data fabric)架构完整指南

本文探讨了 Data Fabric 的内容、原因、方式和人员&#xff0c;包括 Data Fabric 架构、挑战、优势、核心功能、供应商等。 Data Fabric——以数据为中心的企业的“必备” 在过去几年中&#xff0c;“Data Fabric”一词已成为企业数据集成和管理的代名词。分析公司 Gartner 将“…