[ICCV-23] DeformToon3D: Deformable Neural Radiance Fields for 3D Toonification

news2024/9/23 3:21:33

pdf | code

  • 将3D人脸风格化问题拆分为几何风格化与纹理风格化。
  • 提出StyleField,学习以风格/ID为控制信号的几何形变残差,实现几何风格化。通过对超分网络引入AdaIN,实现纹理风格化。
  • 由于没有修改3D GAN空间,因此可以便捷实现Editing和Animation。

目录

摘要

方法

Geometry Toonification with StyleField

Texture Transfer with Adaptive Style Mixing

Training

实验

实验设置

Comparisons with Baselines

Applications

Inversion and Editing

Animatable Toonification

Toonification Style Control


摘要

  • 3D人脸风格化;
  • 3D GAN直接在艺术域(artistic domain)上fine-tuning,效果不错。但存在两个问题:1)会破坏3D GAN原有的隐空间,影响后续的语义编辑;2) 每种新风格需要额外训练,限制了部署。
  • 为了解决上述两个问题,本文提出DeformToon3D。本文方法将3D卡通化(toonification)问题,分解为几何与纹理风格化。
  • 本文提出StyleField,预测条件控制的3D形变(conditional 3D deformation),实现几何风格化;通过3D GAN的decoder实现纹理风格化。

方法

  • DeformToon3D是一个堆叠模型 G = G1 o G0,其中G1是3D生成器,G2是2D超分解码器。G0输入instance code w和相机位姿\xi,和体渲染输出为中间特征图F。G1将F超分得到高分辨率图片I
  • 在考虑3D人脸卡通化时,现有方法将G视作一个整体进行fine-tune。DeformToon3D用StyleField作为几何风格化,fine-tune体渲染器实现纹理风格化。

Geometry Toonification with StyleField

直接用跨域数据fine-tune G0,计算开销大且会破坏GAN的隐空间。

假设风格化NeRF是\mathcal{N}_S,真实域NeRF是\mathcal{N}_R。本文冻结G0参数,并提出StyleField模块学习\mathcal{N}_S\mathcal{N}_R的映射关系。

具体来说,假设\mathcal{N}_S中的任意3维点x_S,StyleField学习x_S\mathcal{N}_Rx_R的映射关系:

其中,H_D是StyleField,受style code w_S和instance code w_R控制,前者决定风格,后者决定3D face的ID。

H_D由4层SIREN组成,支持多种风格变换。相较于直接fine-tune G0,优化参数量减少了50%,同时还保留了3D GAN原有隐空间。在10种风格情况下,相较每种风格fine-tune一个G0,节省了98.5%的存储空间。

Texture Transfer with Adaptive Style Mixing

G0和StyleField实现了风格的几何变换。在此基础上,本文在超分网络G1实现风格的纹理变换。

G1是2D style-based architecture。本文通过AdaIN来逐步调整图片风格。

受style mixing启发,通过混合G1网络参数和目标风格w_S,实现纹理信息的注入。

本文同时添加了一个轻量级MLP T,输入为w_Sw_R和w,调整风格强度。

Training

本文通过DualStyleGAN产生2D风格图像;

训练中,使用LPIPS loss作为重建损失;使用smoothness,确保H_D是物理平滑的;同时,使用了GAN的对抗训练损失。

实验

实验设置

  • Datasets:测试了10种风格:Pixar, Comic, Slam Dunk, The Croods, Fiona (Shrek), Rapunzel (Disney Princess), Hiccup Horrendous Haddock III (How To Train Your Dragon), and three different carica-ture styles;在CelebA-HQ上测试;
  • Model:使用在FFHQ上预训练的StyleSDF作为3D GAN;
  • Training:在8张V100上训练了24小时,bs=16;
  • Baselines:和CIPS-3D、E3DGE、StyleGAN-NADA进行比较

Comparisons with Baselines

 

Applications

Inversion and Editing

使用E3DGE实现3D GAN inversion

Animatable Toonification

学习3DMM参数和3D GAN隐空间的双向映射关系。通过驱动视频拿到3DMM参数的变化,并映射回3D GAN中

Toonification Style Control

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

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

相关文章

Matlab导入log(或txt)文件,提取数据或其他信息

导入log(或txt)文件 先上代码: clc; clear; %数据导入 file1fullfile(文件路径, test1.log); % 导入文件test1.log f1fopen(file1); dt1textscan(f1,%s); %采用textscan 读取数据 %得到的dt1是元胞数组格式比如:有如下内容文件 导入…

java案例20:库存管理系统

思路: 像商场、超市这样的地方,都需要有自己的库房,并且库房商品的库存变化有专人记录,这样才能保证商城和超市正常运转编写程序,模拟库存管理系统 该系统主要包括系统首页、商品入库、商品显示和删除商品功能 每个功…

spark-03

RDD是抽象概念,分区是物理概念

区分 关系代数中的笛卡尔积、等值连接、自然连接(图文界面)

目录 前言1. 笛卡尔积2. 等值连接3. 自然连接 前言 深度卷积的笛卡尔积、软考高级等常出现类似这种知识点 归根到底是关系代数的数学知识 今天就专门区分一下 概念定义笛卡尔积两个关系R和S进行操作,产生的关系中元组个数为两个关系中元组个数之积等值联接&#…

C++QT-day3

#include <iostream> /*设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、* 指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;* 类中包含私有成员:成绩、Per类对象p1&#xff0c;* 设计这两个类的构造函数、析构函数和拷贝构造函数。*/ using namespac…

机器学习1:k 近邻算法

k近邻算法&#xff08;k-Nearest Neighbors, k-NN&#xff09;是一种常用的分类和回归算法。它基于一个简单的假设&#xff1a;如果一个样本的k个最近邻居中大多数属于某一类别&#xff0c;那么该样本也很可能属于这个类别。 k近邻算法的步骤如下&#xff1a; 输入&#xff1a…

设计模式 - 行为型模式考点篇:模板方法模式(概念 | 案例实现 | 优缺点 | 使用场景)

目录 一、行为型模式 1.1、模板方法模式 1.1.1、概念 1.1.2、案例实现 1.1.3、优缺点 1.1.4、使用场景 一、行为型模式 一句话概括行为型模式 行为型模式&#xff1a;类或对象间如何交互、如何划分职责&#xff0c;从而更好的完成任务. 1.1、模板方法模式 1.1.1、概念 …

COCI 2021-2022 #1 - Volontiranje 题解

题目大意 让你求最多有多少个不相交的最长上升子序列。 思路 我们可以将数 a i a_i ai​ 看成一个点 ( i , a [ i ] ) (i,a[i]) (i,a[i])&#xff0c;于是我们可以按照 x x x 递增 y y y 递减考虑分层。 分层的方法就是从 1 1 1 到当前点的 LIS 即为其所在层数。 此时…

Spring源码解析——IOC之bean 的初始化

正文 一个 bean 经历了 createBeanInstance() 被创建出来&#xff0c;然后又经过一番属性注入&#xff0c;依赖处理&#xff0c;历经千辛万苦&#xff0c;千锤百炼&#xff0c;终于有点儿 bean 实例的样子&#xff0c;能堪大任了&#xff0c;只需要经历最后一步就破茧成蝶了。…

Git 学习笔记 | Git 分支

Git 学习笔记 | Git 分支 Git 学习笔记 | Git 分支分支的概念为什么要使用分支&#xff1f;常用指令 Git 学习笔记 | Git 分支 分支的概念 几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来&#xff0c;避免影响开发主线。…

小白网络安全学习手册(黑客技术)

一、网络安全应该怎么学&#xff1f; 1.计算机基础需要过关 这一步跟网安关系暂时不大&#xff0c;是进入it行业每个人都必须掌握的基础能力。 计算机网络计算机操作系统算法与数据架构数据库 Tips:不用非要钻研至非常精通&#xff0c;可以与学习其他课程同步进行。 2.渗透技…

[idekCTF 2022]Paywall - LFI+伪协议+filter_chain

[idekCTF 2022]Paywall 一、解题流程&#xff08;一&#xff09;、分析&#xff08;二&#xff09;、解题 二、思考总结 一、解题流程 &#xff08;一&#xff09;、分析 点击source可以看到源码&#xff0c;其中关键部分&#xff1a;if (isset($_GET[p])) {$article_content…

【C语言】进阶——动态内存管理

一、为什么存在动态内存管理 我们已经掌握的内存开辟方式有&#xff1a; int val 20; //在栈空间开辟四个字节char arr[10] {0}; //在栈空间开辟10个字节的连续空间 但上述开辟空间的方式有两个特点&#xff1a; 空间开辟大小是固定的数组在声明的时候&#xf…

Maven最新版本安装及配置

Maven是一个Java项目管理和构建工具&#xff0c;它可以定义项目结构、项目依赖&#xff0c;并使用统一的方式进行自动化构建&#xff0c;是Java项目不可缺少的工具。 本章我们详细介绍如何使用Maven。 一、Maven是什么&#xff1f; 如果每一个项目都自己搞一套配置&#xf…

【java学习】一维数组(9)

文章目录 1. 一维数组声明2. 一维数组初始化3. 数组元素的引用4. 数组元素的默认初始化 1. 一维数组声明 声明方式&#xff1a; type var[] 或 type[] var 例如&#xff1a; int a[]; int[] a1; double b[]; Mydate[] c; //对象数组2. 一维数组初始化 动态初始化&#xf…

python练习4

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

2023年十大顶尖远程控制软件

随着科技的不断进步和时代的发展&#xff0c;远程控制软件已经成为现代工作、教育等领域中必不可少的工具。这些软件可以实现远程桌面连接、远程支持和远程维护等功能&#xff0c;大大提高了工作效率&#xff0c;同时也让用户拥有更加灵活的操作方式。当然&#xff0c;不同的远…

C#:出题并判断

C#:出题并判断 //出题并判断 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace Test_…

【高阶数据结构】图详解第二篇:图的遍历(广度优先+深度优先)

文章目录 图的遍历1. 图的广度优先遍历&#xff08;一石激起千层浪&#xff09;思路分析代码实现测试美团2020校招笔试题&#xff1a;六度人脉 2. 图的深度优先遍历&#xff08;一条道走到黑&#xff09;思路分析代码实现测试 3. 对于非连通图情况的处理4.源码BFSDFS 图的遍历 …

uboot启动流程-run_main_loop 到 cmd_process处理说明一

一. uboot启动 uboot命令模式&#xff1a;uboot 启动以后会进入 3 秒倒计时&#xff0c;如果在 3 秒倒计时结束之前按下按下回车键&#xff0c;那么就会进入 uboot 的命令模式。 如果在 uboot 倒计时结束以后都没有按下回车键&#xff0c;就会自动启动 Linux 内 核 …