GRAF: Generative Radiance Fields for 3D-Aware Image Synthesis

GRAF: Generative Radiance Fieldsfor 3D-Aware Image Synthesis(基于产生辐射场的三维图像合成)

思维导图:https://blog.csdn.net/weixin_53765004/article/details/137944206?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22137944206%22%2C%22source%22%3A%22weixin_53765004%22%7D

Abstract

虽然二维生成对抗网络能够实现高分辨率的图像合成,但是它们在很大程度上缺乏对三维世界和图像形成过程的理解。因此,他们不提供精确的控制相机的视点或对象的姿态。为了解决这个问题,最近的一些方法利用了中间基于体素的表示结合可微渲染。然而,现有的方法要么产生较低的图像分辨率,要么在相机和场景的分离属性方面存在不足,例如,物体的识别可能会因视点的不同而不同。在这篇文章中,我们提出了一个辐射场的生成模型,这个辐射场最近被证明是成功的,用于单个场景的新视图合成与基于体素的表示相比,辐射场并不局限于对三维空间的粗糙离散化,而是允许在存在重建模糊的情况下优雅地分离相机和场景属性。 通过引入一个多尺度的基于补丁的鉴别器,我们演示了高分辨率图像的合成,同时从非定位的二维图像单独地训练我们的模型。我们系统地分析了我们的方法在几个具有挑战性的合成和真实世界的数据集。我们的实验表明,辐射场是一个强大的表示生成图像合成,导致三维一致的模型渲染高保真度。

三、Method

我们考虑了三维感知图像合成的问题,即在生成高保真图像的同时提供摄像机旋转和平移的显式控制。我们主张用场景的辐射场来表示场景,这样的连续表示可以很好地衡量图像的分辨率和内存消耗,同时允许基于物理的和无参数的投影映射。在接下来的文章中,我们首先简要回顾了构成生成辐射场(GRAF)模型基础的神经辐射场(NeRF)

3.1 Neural Radiance Fields

Neural Radiance Fields:

辐射场是从3D 位置和2D 观察方向到 RGB 颜色值的连续映射。Mildenhall提议使用神经网络来表示这种映射。更具体地说,他们首先使用固定位置编码将一个三维位置 x ∈ R3和一个观察方向 d ∈ S2映射到一个更高维的特征表示,该编码按元素方式应用于 x 和 d 的所有三个分量:
在这里插入图片描述
遵循最近的隐式模型,然后他们应用一个参数 θ 的多层感知器 fθ (·),将得到的特征映射为颜色值 c ∈ R^3和体积密度σ ∈ R ^+:
在这里插入图片描述与直接使用 x 和 d 作为多层感知器 fθ (·)的输入相比,位置编码 γ (·)能够更好地拟合高频信号。我们通过消融研究证实了这一点。由于体积颜色 c 随观察方向的变化比随3D 位置的变化更为平滑,所以观察方向通常使用较少的组件进行编码,即 Ld < Lx。

Volume Rendering:

为了绘制辐射场 fθ (·)的二维图像,米尔登霍尔等人使用数值积分近似难以处理的体积投影积分。更正式地,设在这里插入图片描述
表示沿照相机射线 r 的 N 个随机样本的颜色和体积密度值。rendering operator(呈现操作符 ):π (·),将这些值映射到 RGB 颜色值 cr:
在这里插入图片描述
RGB 颜色值 cr 是使用 alpha 合成获得的
在这里插入图片描述
在这里插入图片描述
给定一组单个静态场景的二维图像,米尔登霍尔等人通过最小化观测值和预测值之间的重建损失(平方差之和)来优化神经辐射场 fθ (·)的参数 θ。给定 θ,可以通过对每个像素/光线调用 π (·)来合成新的视图。

3.2 Generative Radiance Fields

在这项工作中,我们感兴趣的辐射场作为表示的三维感知图像合成。与NeRF相反,我们不假设单个场景的大量姿势图像。相反,我们的目标是通过训练未定位的图像来学习一个新的场景合成模型。更具体地说,我们利用一个对抗性的框架来训练辐射场生成模型(GRAF)。
下图显示了我们模型的概况。生成器 Gθ 以摄像机矩阵 K、摄像机姿态 ξ、二维采样模式 ν 和形状/外观码 zs ∈ Rm/za ∈ R^n 为输入,预测图像补丁 P。鉴别器 Dφ 将合成的补丁 P’ 与从实际图像 I 中提取的补丁 P 进行比较。在推理时,我们为每个图像像素预测一个颜色值。然而,在训练时间,这太昂贵了。因此,我们预测一个固定大小的 K × K 像素片,它被随机缩放和旋转以提供整个辐射场的梯度在这里插入图片描述
该图: 生成辐射场。生成器 Gθ 以摄像机矩阵 K、摄像机姿态 ξ、二维采样模式 ν 和形状/外观码 zs ∈ Rm/za ∈ Rn 为输入,预测图像补丁 P’。我们使用平板符号来说明 R 射线和每条射线 N 个样本。注意,条件辐射场 gθ 是唯一具有可训练参数的分量。鉴别器 Dφ 将合成的补丁 P’ 与从实际图像 I 中提取的实际补丁 P 进行比较。在训练时,我们使用大小为 K × K 像素的稀疏二维采样模式来提高计算和存储效率。在推理时,我们为目标图像中的每个像素预测一个颜色值。

3.2.1 Generator

我们从一个位姿分布中取样摄像机的姿态 ξ = [ R | t ]。在我们的实验中,我们在上半球的相机位置,相机面向坐标系的起点,使用一个均匀分布。根据数据集的不同,我们也会均匀地改变摄像机到原点的距离。我们选择 K,使得主要点位于图像的中心。

V = (u,s)决定了我们要生成的虚 K × K 补丁 P (u,s)的中心 u = (u,v)∈ R^2,标度 s ∈ R + 。这使我们能够使用卷积鉴别器独立于图像分辨率。我们从图像域 Ω 上的均匀分布中随机抽取补丁中心 u~ U (Ω) ,从均匀分布 s~ U ([1,S ])中抽取补丁尺度 s,其中 S = min (W,H)/K,W 和 H 表示目标图像的宽度和高度。此外,我们确保整个补丁是在图像域 Ω 内。分别从形状和外观分布中提取了形状和外观变量 zs 和 za。在我们的实验中,我们对 ps 和 pa 都使用了一个标准的正态分布/高斯分布。

Ray Sampling:

K × K 贴片 P (u,s)由一组二维图像坐标确定在这里插入图片描述
它描述了图像域 Ω 中贴片的每个像素的位置,如图
在这里插入图片描述
图3:给定摄像机姿态 ξ,根据 ν = (u,s)对光线进行采样,确定 K × K 补丁的连续二维平移 u ∈ R^2和标度 s ∈ R ^+ 。这使我们能够使用卷积鉴别器独立于图像分辨率。

这些坐标是实数,而不是离散的整数,使我们能够不断评估辐射场。相应的三维射线由 P (u,s)、摄像机姿态 ξ 和内参矩阵 K 唯一确定。我们用 r 表示像素/射线索引,用 dr 表示归一化的3D 射线,用 R 表示射线数,其中训练期间 R = K^2,推断期间 R = WH。

3D Point Sampling:

对于辐射场的数值积分,我们沿着每个射线 r 采样 N 个点{ xi r }。

使用NeRF中的分层抽样方法,见附录详细资料。

Conditional Radiance Field:

辐射场由一个具有参数 θ 的深度全连通神经网络表示,该神经网络映射位置编码三维位置 x ∈ R^3,视方向 d ∈ S ^2,得到 RGB 颜色值 c 和体积密度 σ:在这里插入图片描述
gθ 是以两个附加的潜码为条件的: 一个形状码 zs ∈ R^(Ma) 决定物体的形状,一个外观码 za ∈ R ^ (Ma) 决定物体的外观。因此我们称 gθ 为条件辐射场.

我们的条件辐射场 gθ 的网络结构如图所示。我们首先从 x 和形状代码 z 的位置编码计算一个形状编码 h。密度头 σθ 将此编码转换为体积密度 σ。为了预测三维位置 x 处的颜色 c,我们将 h 与 d 的位置编码和外观编码 za 连接起来,并将得到的向量传递给颜色头 cθ。我们独立于视点 d 和外观代码 za 计算 σ,以鼓励多视点一致性,同时从外观中分离形状。这鼓励网络使用潜在代码 zs 和 za 分别建模形状和外观,并允许在推断期间分别操作它们。更正式地说,我们有:在这里插入图片描述
所有的映射(hθ,cθ 和 σθ)都是使用具有 ReLU 激活的完全连通网络来实现的。为了避免符号混乱,我们使用相同的符号 θ 来表示每个网络的参数。
在这里插入图片描述
图: 条件辐射场。当体积密度 σ 完全取决于3D 点 x 和形状编码 z 时,预测的颜色值 c 还取决于视向 d 和外观编码 za,建模视相关的外观,例如,反射率。

Volume Rendering:

给定沿着光线 r 的所有点的颜色和体积密度在这里插入图片描述
利用方程rendering operator,我们得到了对应于光线 r 的像素的颜色 cr ∈ R^3.结合所有 R 射线的结果,我们将预测的补丁表示为 P’

3.2.2 Discriminator

鉴别器 Dφ 是作为一个卷积神经网络实现的。它将预测的补丁 P’ 与从数据分布 pD 中提取的实际图像中提取的补丁 P 进行比较。为了从实际图像 I 中提取 K × K 贴片,我们首先从相同的分布中提取 ν = (u,s) ,然后再从上面的分布中提取生成贴片。然后,我们通过使用双线性插值在二维图像坐标 P (u,s)上查询 I 来对真正的补丁 p 进行采样。下面我们用 Γ (I,ν)来表示这种双线性采样运算。注意,我们的鉴别器类似于 PatchGAN ,除了我们允许连续位移 u 和标度 s,而 PatchGAN 使用 s = 1。进一步需要注意的是,我们并没有基于 s 减少真实图像的样本,而是在稀疏位置查询 I 以保留高频细节,见图3。

在实验上,我们发现一个具有共享权重的单一鉴别器对于所有的斑块都是足够的,即使这些补丁是在不同尺度的随机位置采样的。注意,缩放决定了补丁的接收字段。为了便于培训,我们从更大的接收字段补丁开始,以捕获全局上下文。然后,我们逐步抽样带有较小接收字段的补丁来细化局部细节。

3.2.3 Training and Inference(训练和推理)

I从数据分布 pD 表示一个图像,让 pν 表示随机补丁上的分布(见3.2.1节)。我们使用 R1 正则化 的非饱和 GAN 损耗(non-saturating GAN loss)来训练我们的模型
在这里插入图片描述
其中 f (t) =-log (1 + exp (- t))和 λ 控制正则化器的强度。我们在我们的鉴别器中使用谱归一化和实例归一化,并使用 RMSprop训练我们的方法,其批量大小为8,生成器和鉴别器的学习速率分别为0.0005和0.0001。在推理中,我们随机抽取 zs,za 和 ξ,并预测图像中所有像素的颜色值。

四、 Experiments

五、结论

我们引入了生成辐射场(GRAF)用于高分辨率的三维感知图像合成。结果表明,与基于体素的方法相比,我们的框架能够生成具有更好的多视点一致性的高分辨率图像。然而,我们的结果仅限于单个对象的简单场景。我们相信结合归纳偏差,例如深度图或对称性,将允许我们的模型扩展到未来更具挑战性的现实世界场景。

Broader Impact更广泛的影响

3D 感知图像合成是一个相对较新的研究领域,尚未扩展到生成复杂的现实世界场景,阻碍了社会的直接应用。然而,我们的工作朝着这一目标迈出了重要的一步,因为它能够实现超过642像素分辨率的高保真重建,同时不需要3D 监督作为输入。从长远来看,我们希望我们的研究能够促进3D 感知生成模型在虚拟现实、数据增强或机器人技术等应用中的应用。例如,自动驾驶汽车等智能系统需要大量数据进行训练和验证,而使用静态离线数据集无法收集这些数据。我们相信,建立我们的世界的生成,照片真实和大规模三维模型将最终允许成本效益的数据收集和模拟。虽然许多用例是可能的,但是我们相信这些类型的模型特别有利于缩小现实世界和合成数据之间现有的领域差距。然而,使用生成模型也需要小心。虽然生成逼真的3D 场景是非常有趣的,但它也承担着操纵和创造误导性内容的风险。特别是,能够创建3D 一致性假图像的模型可能会提高假内容的可信度,并可能会欺骗依赖于多视点一致性的系统,例如现代人脸识别系统。因此,我们认为,社区发展能够明确区分合成内容和现实世界内容的方法同样重要。我们看到这方面的进展令人鼓舞。

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

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

相关文章

THREEJS 使用CatmullRomCurve3实现汽车模型沿着指定轨迹移动

效果预览 准备所需资源 搭建场景环境 const container document.querySelector("#box_bim");// 创建摄像机camera new THREE.PerspectiveCamera(50,window.innerWidth / window.innerHeight,0.1,1000);// camera.position.set(500, 500, 500);// 调整近裁减值camer…

深入剖析图像平滑与噪声滤波

噪声 在数字图像处理中&#xff0c;噪声是指在图像中引入的不希望的随机或无意义的信号。它是由于图像采集、传输、存储或处理过程中的各种因素引起的。 噪声会导致图像质量下降&#xff0c;使图像失真或降低细节的清晰度。它通常表现为图像中随机分布的亮度或颜色变化&#…

面试不慌张:一文读懂FactoryBean的实现原理

大家好&#xff0c;我是石头~ 在深入探讨Spring框架内部机制时&#xff0c;FactoryBean无疑是一个关键角色&#xff0c;也是面试中经常出现的熟悉面孔。 不同于普通Java Bean&#xff0c;FactoryBean是一种特殊的Bean类型&#xff0c;它的存在并非为了提供业务逻辑&#xff0c;…

基于Springboot的小区物业管理系统

基于SpringbootVue的小区物业管理系统的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 用户管理 员工管理 业主信息管理 费用信息管理 楼房信息管理 保修信息…

【原创教程】海为PLC与RS-WS-ETH-6传感器的MUDBUS_TCP通讯

一、关于RS-WS-ETH-6传感器的准备工作 要完成MODBUS_TCP通讯,我们必须要知道设备的IP地址如何分配,只有PLC和设备的IP在同一网段上,才能建立通讯。然后还要选择TCP的工作模式,来建立设备端和PC端的端口号。接下来了解设备的报文格式,方便之后发送报文完成数据交互。 1、…

自定义Blazor单文件Web程序端口

#接 上篇 Mysql快速迁移版的制作过程# 上一篇《Mysql8快速迁移版的制作过程》完成了快速迁移的数据库的准备&#xff0c;今天接着讲基于Blazor的Web程序快速迁移版的制作。 单文件发布的难点不在发布而是因为程序系统默认给了个5001的端口&#xff0c;而是如何能够让用户自定…

AOP基础-动态代理

文章目录 1.动态代理1.需求分析2.动态代理的核心3.代码实例1.Vehicle.java2.Car.java3.Ship.java4.VehicleProxyProvider.java(动态代理模板)5.测试使用 2.动态代理深入—横切关注点1.需求分析2.四个横切关注点3.代码实例1.Cal.java2.CalImpl.java3.VehicleProxyProvider02.jav…

0-1背包问题:贪心算法与动态规划的比较

0-1背包问题&#xff1a;贪心算法与动态规划的比较 1. 问题描述2. 贪心算法2.1 贪心策略2.2 伪代码 3. 动态规划3.1 动态规划策略3.2 伪代码 4. C语言实现5. 算法分析6. 结论7. 参考文献 1. 问题描述 0-1背包问题是组合优化中的一个经典问题。假设有一个小偷在抢劫时发现了n个…

(C语言)sscanf 与 sprintf详解

目录 1.sprintf函数详解 2. sscanf函数详解 1.sprintf函数详解 头文件&#xff1a;stdio.h 作用&#xff1a;将格式化的数据写入字符串里&#xff0c;也就是将格式化的数据转变为字符串。 演示&#xff1a; #include <stdio.h> struct S {char name[10];int height;…

NX二次开发——矩形排料5(基于最低水平线+遗传算法排料策略实现)

目录 一、概述 二、知识回顾 2.1适应度函数的确定 2.2基因编码 2.3遗传算法复制&#xff08;选择&#xff09; 2.4遗传算法交叉操作 通过交叉操作可以增加种群个体的多样性&#xff0c;既可以产生更多的优秀解。下面通过顺序编码方法进行改进&#xff08;网上有很…

vue3:树的默认勾选和全选、取消全选

实现的功能&#xff0c;上面有个选择框&#xff0c;当选中全部时&#xff0c;下方树被全选 代码&#xff1a; <template><div><el-select v-model"selectAll" style"margin-bottom: 10px;" change"handleSelectAllChange">&…

electron打包dist为可执行程序后记【electron-quick-start】

文章目录 目录 文章目录 前言 一、直接看效果 二、实现步骤 1.准备dist文件夹 2.NVM管理node版本 3.准备electron容器并npm run start 4.封装成可执行程序 1.手动下载electron对应版本的zip文件&#xff0c;解决打包缓慢问题 2.安装packager 3.配置打包命令执行内容…

嵌入式linux中利用QT控制蜂鸣器方法

大家好,今天给大家分享一下,如何控制开发板上的蜂鸣器。 第一:开发板原理图 从原理图中可以得出,当引脚输出低电平的时候,对应的蜂鸣器发出响声。 第二:QT代码详细实现 设置一个按钮,点击即可控制BEEP状态发生反转。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#in…

华为鸿蒙生态,威力估计被很多人低估了……

华为鸿蒙生态&#xff0c;威力估计被很多人低估了&#xff01;华为的鸿蒙千帆计划快成了&#xff0c;微信的加盟让计划就基本没问题了。 最近华为公布原生鸿蒙APP进度&#xff0c;在TOP5000应用里面&#xff0c;已经有4000支持了&#xff0c;不是已经开发完成&#xff0c;就是…

Electron+Vue3整合 - 开发时状态整合

说明 本文介绍一下 Electron Vue3 的整合的基本操作。实现的效果是 &#xff1a; 1、一个正常的Vue3项目&#xff1b; 2、整合加入 Electron 框架 &#xff1a;开发时 Electron 加载的是开发的vue项目&#xff1b;步骤一&#xff1a;创建vue3项目 常规操作&#xff0c;不再赘…

(C语言)fscanf与fprintf函数详解

目录 1 fprintf详解 1.1 向文件流中输入数据 1.2 向标准输入流写数据 2. fscanf函数详解 2.1 从文件中读取格式化数据 2.2 从标准输入流中读取格式化数据 1 fprintf详解 头文件&#xff1a;stdio.h 该函数和printf的参数特别像&#xff0c;只是多了一个参数stream&#…

删除word中下划线的内容

当试卷的题目直接含答案&#xff0c;不利用我们刷题。这时如果能够把下划线的内容删掉&#xff0c;那么将有利于我们复习。 删除下划线内容的具体做法&#xff1a; ①按ctrl H ②点格式下面的字体 ③选择下划线线型中的_____ ④勾选使用通配符并在查找内容中输入"?&qu…

增强现实(AR)开发框架

增强现实&#xff08;AR&#xff09;开发框架为开发者提供了构建AR应用程序所需的基本工具和功能。它们通常包括3D引擎、场景图、输入系统、音频系统和网络功能。以下是一些流行的AR开发框架。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流…

【C语言】贪吃蛇项目(2)- 实现代码详解

文章目录 前言一、游戏开始界面设计首先 - 打印环境界面其次 - 游戏地图、蛇身及食物的设计1、地图2、蛇身设置及打印3、食物 二、游戏运行环节蛇的上下左右移动等功能蛇的移动 三、结束游戏代码 前言 在笔者的前一篇博客中详细记载了贪吃蛇项目所需的一些必备知识以及我们进行…

MySQL面试题 3

问题1&#xff1a;char、varchar的区别是什么&#xff1f; varchar是变长而char的长度是固定的。如果你的内容是固定大小的&#xff0c;你会得到更好的性能。 问题2: TRUNCATE和DELETE的区别是什么&#xff1f; DELETE命令从一个表中删除某一行&#xff0c;或多行&#xff0…