【CVPR2022】NeRF:通过2D-3D相互学习实现三维场景程式化NeRF

2023-10-19 23:20

本文主要是介绍【CVPR2022】NeRF:通过2D-3D相互学习实现三维场景程式化NeRF,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • Abstract
  • 一、Preliminaries
  • 二、方法
    • 1. 2D Stylization Network
    • 2. Stylized NeRF
    • 3. Mutual Learning
  • 三、结果


Paper:https://openaccess.thecvf.com/content/CVPR2022/papers/Huang_StylizedNeRF_Consistent_3D_Scene_Stylization_As_Stylized_NeRF_via_2D-3D_CVPR_2022_paper.pdf

在这里插入图片描述

Abstract

3D场景程式化的目的是根据给定的样式示例,从任意的新视图生成场景的程式化图像,同时确保从不同视图渲染时的一致性。将图像或视频风格化的方法直接应用于三维场景中,并不能达到这种一致性。由于最近提出的神经辐射场(NeRF),我们能够以一种一致的方式表示一个3D场景。通过对相应的NeRF进行样式化,可以有效地实现一致的三维场景样式化。然而,在二维图像和隐式体积表示的NeRF之间存在着显著的域差距。为了解决这一问题,我们提出了一种新的三维场景程式化相互学习框架,该框架结合了二维图像程式化网络和NeRF,将二维程式化网络的程式化能力与NeRF的三维一致性相结合。我们首先对三维场景的标准NeRF进行程式化的预训练,并将其颜色预测模块替换为样式网络以获得一个程式化的NeRF。然后通过引入一致性损失,将空间一致性的先验知识从NeRF提取到二维程式化网络中。我们还引入了一个模拟损失来监督NeRF风格模块的相互学习,并微调二维风格化解码器。为了进一步使我们的模型处理二维程式化结果的歧义,我们引入了服从基于风格的概率分布的可学习潜在码。它们被附加到训练样本中作为条件输入,以更好地学习我们的新程式化NeRF中的样式模块。实验结果表明,该方法在视觉质量和长期一致性方面都优于现有的方法。


一、Preliminaries

NeRF[35]使用mlp将一个场景建模为一个具有不透明度和亮度的连续体积场。MLPs以3D位置x∈R3和观察方向d∈R2作为输入,预测不透明度σ(x)∈R+和辐射颜色radiance color c(x,d)。在渲染过程中,沿着通过像素的方向投射光线(t)=或+。像素的颜色由积分决定:
在这里插入图片描述
为了便于模型的拟合能力,NeRF使用位置编码γ(·)将网络x和d的输入映射到包含多尺度频率信号的傅里叶特征[47]:
在这里插入图片描述
其中,L是一个控制光谱带宽的超参数。

二、方法

在这里插入图片描述

我们的方法使用一个预先训练的和固定的NeRF来呈现一些视图{Ii}作为相互学习的增强数据。VGG提取的风格图像的风格特征通过预先训练的VAE编码器嵌入到潜在分布中。提取的内容特征{Fic}和样式特征{Fjs}一起被输入到一个AdaIN层和一个解码器中,以获得程式化的颜色Ca。另一方面,样式模块采用可学习的潜在码{li,j}和坐标x来预测程式化的辐射颜色cs,从而形成程式化的NeRF。通过沿原始不透明度σ的采样点,可以得到渲染的程式化颜色Cn。目标函数Ld、Lmimic、Ls、Lc和Lco用于相互学习优化(详见正文)。

1. 2D Stylization Network

Lco是根据NeRF的几何形状,将不同视图的风格图像扭曲成固定的:
在这里插入图片描述

2. Stylized NeRF

训练一个普通的NeRF[35]来建模不透明度场σ(x)和原始辐射色场co(x,d),这在接下来的相互学习过程中是固定的。为了实现NeRF的风格化功能,在NeRF中添加了一个MLP网络作为风格模块,代替原来的颜色模块,对场景的程式化辐射颜色进行建模。在查询训练阶段场景的程式化辐射颜色时,该模块除了需要输入位置坐标外,还需要输入可学习的潜在代码。与NeRF-w中模拟场景的随机外观和瞬变的潜在模型不同,这里的潜在代码都学习了2D风格化结果的风格和歧义,避免了程式化NeRF结果的模糊,并使其能够有条件地风格化场景。

在特定风格的不同视图上的二维方法的程式化可以看作是条件分布的样本。这些样本由于其不一致而是不同的。我们通过一个预先训练过的VAE[23]来参数化二维程式化结果的条件分布。VAE编码风格特征{Fjs}由VGG提取为高斯分布{N(µj,σj)}。将二维程式化结果的条件分布参数化为嵌入式高斯分布,并以风格特征为条件。对于第i个视图和第j个风格的二维程式化结果,通过对N(µj,σj)进行采样来初始化的潜在代码li,j。在相互学习的过程中,对潜码进行了优化。为了约束潜在码li,j服从分布{N(µj,σj)},使用了一个负对数似然损失Ld:
在这里插入图片描述

样式模块采用嵌入的µ和3D位置坐标,以获得程式化的颜色cs(x,l)。样式模块和预训练的NeRF的不透明度预测模块形成了我们的程式化的NeRF。渲染过程遵循等式中的步骤1,它使用原始的不透明度字段。

3. Mutual Learning

相互学习首先从NeRF的空间一致性先验知识提取到二维程式化网络。然后是可学习风格模块的协同训练,这是一个在线的预先训练的解码器,用于微调和潜在代码。为了扩充训练数据集,使用普通的NeRF将一系列视图{Ii}作为训练数据呈现。我们将样式图像表示为样式。一个训练视图和一个给定的风格一起形成一个训练实例,其中的潜在代码li,j在上面描述。使用原始的不透明度,通过沿着光线的采样点和近似的等式来渲染程式化的NeRF的图像1通过数值求积,如[32]中所述:
在这里插入图片描述
其中Cn(r,l)是像素r的预测程式化颜色,δk是第k个样本点和(k+1)个样本点之间的欧拉距离。模拟损失定义为风格化结果Cn(ri,li,j)与NeRF和二维风格化方法的Ca(Ii,Sj)ri之间的L2距离:
在这里插入图片描述
引入模拟损失mimic loss是为了最好地交换NeRF和二维程式化方法之间不同强度的知识。感知内容损失Lc(Ca(II,Sj),Ii)和风格损失Ls(Ca(II,Sj),Sj)[20]是由解码器Ca(Ii,Sj)的结果决定的,它允许在有限的GPU内存中使用更大的补丁。NeRF样式模块和潜在码的相互学习过程的目标函数为:

在这里插入图片描述
对二维程式化解码器进行微调的目标函数可以写为
在这里插入图片描述
其中,λp、λc、λs是控制项影响的超参数。

三、结果

在这里插入图片描述


这篇关于【CVPR2022】NeRF:通过2D-3D相互学习实现三维场景程式化NeRF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/243019

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal