NeRF-VAE:将场景看作一个分布【ICML‘2021】

news2024/11/14 15:21:55

文章目录

  • GQN网络介绍
  • Amortized Inference
  • NeRF-VAE


GQN网络介绍

论文标题:Neural scene representation and rendering

作者:S. M. Ali Eslami, Danilo Jimenez Rezende, et al.

期刊:Science

发表时间:2018/06/15

该文章提出了生成查询网络(Generative Query Network,GQN)。要解决的问题是从不同角度输入一个场景的图像,构建出内在表征,并使用这种表征预测场景中未观察到的部分。

该网络的结构非常简单,包含两个部分:表示网络(representation network)和生成网络(generation network)。表示网络将当前场景中某些view images(比如两个)作为输入,构造一个描述基础场景的表示 z(向量)。然后,生成网络以其他视角作为query,做出一个view image的预测,然后拿该query视角下的真实图像作为GT来监督。所以说,GQN本质上是有监督学习。
在这里插入图片描述
在这里插入图片描述
这个视频讲解了GQN的训练流程:https://www.youtube.com/watch?v=XHuzjGps-yA
在这里插入图片描述

表示网络不知道生成网络被要求预测哪些视点,所以它必须找到一种有效的方式来尽可能准确地描述场景的真实布局。表示网络因此以简洁高效的方式生成了描述基础场景的向量,也就是以高度压缩、抽象的方式描述场景,只学到了场景中最关键的元素(如对象位置、颜色和房间布局),丢失了一些细节

然后在训练过程中,生成网络用来学习环境中的典型对象、特征、关系和规则,填充细节。生成网络部分也可以看作是一种从数据中学习的近似渲染器(approximate renderer)。

总的来说,GQN(Generative Query Network)通过学习一个场景函数的分布来对视觉场景进行建模和生成。具体来说,GQN可以将一个场景表示成从视野中几个观测角度看到的一系列图像,然后通过学习这些图像的分布来推断出一个场景函数的分布(就是上图中的scene representation)。这个场景函数的分布可以用于生成新的图像,也可以用于其他任务,比如视觉问答。因此,GQN可以看作是一种生成式模型,它可以用于对场景进行建模和生成。


Amortized Inference

VAE的网络分为两个部分,推断网络和生成网络。因为直接预测样本X的分布比较困难,所以我们想通过一个隐变量z作为桥梁,先预测z的分布,再以z为基础生成X的分布。隐变量z可以看作是包含了随机变量X的核心特征,它表示数据的“潜在结构”,描述了随机变量X的内部结构,它可以看作GQN中表征网络生成的场景表征。

推断网络的作用是根据训练数据推断出z的后验分布 q ϕ ( z ∣ x ) q_\phi(z|x) qϕ(zx), 其中ϕ是推断网络的参数。生成网络将潜在变量z 映射到数据空间中,生成输出数据的分布 p θ ( x ^ ∣ z ) p_\theta(\hat{x}|z) pθ(x^z), 其中θ是推断网络的参数。

在vanilla VAE中,对于每个输入样本,都需要使用一个独立的推断网络对其进行推断,而在amortized inference中,推断网络被用于变分自编码器中的所有样本,将推断过程转化为参数学习问题。这大大减少了计算成本,加快了训练速度,提高了推断的准确性。

直白点说,Amortized Inference(摊销推理)就是对所有样本使用一个共享编码器进行推断,这样可以减小参数量,并增强推断网络的泛化性和鲁棒性。


NeRF-VAE

Paper: 《NeRF-VAE: A Geometry Aware 3D Scene Generative Model》【DeepMind】

在这篇文章出现之前,以往的工作嵌入的几何先验不够。

与GQN一样,NeRF-VAE定义了一个在场景函数上的分布。一旦采样,场景函数允许渲染底层场景的任意视图。

但是,GQN依赖于没有三维几何知识的卷积神经网络(CNNs),导致几何不一致,而NeRF-VAE通过利用NeRF的隐式表示和体积渲染来实现一致性。

这篇文章认为,用隐变量来充当当前场景的核心信息,这点是没问题的。然后用NeRF的场景函数存储共享的信息(例如,可用的纹理和形状、公共元素的属性、天空)被存储在场景功能的参数中,但是,共享信息这种说法合理么?细节信息或许更合适。

NeRF-VAE就是结合了GQN的思想进入NeRF,以VAE的方式实现,编码器还是VAE的编码器,解码器用conditional NeRF来实现。方法的pipeline如下,使用推断网络(ResNet)生成隐变量的后验分布,然后从先验分布p(z)(与VAE一样是标准正态分布)中采样生成z,再输入至scene function中生成密度σ和颜色rgb。注意,输入encoder时,相机参数也同时输入。
在这里插入图片描述
在训练时,使用了Iterative Amortized Inference,即对待不同的scene使用同一个网络训练,这其实与基于Condition的GeNeRF的做法相同,所以NeRF-VAE也能够实现泛化性。

此外,该文还提出了一种attention-based scene function。在NeRF中,生成密度和颜色在不同的层次上是有考虑的,这是为了多视角一致性,生成体积密度σ只取决于位置,而颜色则取决于位置和射线方向。所以在scene function的设计中也考虑了这一点。结构如下所示:
在这里插入图片描述

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

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

相关文章

单视觉L2市场「鲶鱼」来了,掀起数据反哺高阶新打法

作者 | 张祥威编辑 | 德新 智驾方案的降本行动仍在推进。 早年,单视觉L2市场的玩家以Mobileye、博世为主,后来国内智驾公司加入,共同推动 1V、1R1V、nR1V等不同的方案兴起,L2近乎成为车辆的必备功能。 当下,在行业降低…

认识linux文件系统/文件夹名字解释

linux系统因为其高效、直接的底层操作而被很多代码开发者使用,谈及linux,大家普遍的印象就是黑乎乎的终端命令行,后来基于linux系统开发出来的具有可视化桌面的ubuntu版本,让大家的使用体验兼顾了windows系统的直观性可linux系统代…

YOLOV5使用(一): docker跑通,详解TensorRT下plugin的onnx

yolov5的工程使用(以人员检测为案例) 使用ubuntu为案例 docker run --gpus all -it -p 6007:6006 -p 8889:8888 --name my_torch -v $(pwd):/app easonbob/my_torch1-pytorch:22.03-py3-yolov5-6.0使用端口映射功能也就是说打开jupyter lab的指令是 http://localhost:8889/l…

windows先的conda环境复制到linux环境

如果是迁移的环境一致:同是windows或同是linux直接用这个命令即可: conda create -n new_env_name --clone old_env_path 如果是window的环境迁移到linux这种跨环境就不能用上面的方法,网上这方面的资料也很多,记录一下我的…

小蝌蚪找妈妈:Python之作用域链与 LEGB 原则

文章目录 参考描述作用域对象全局作用域globals() 局部作用域locals() 包含作用域内置作用域builtins 模块builtins 模块与 \_\_builtins__builtins is \_\_builtins__??? \_\_builtins__ 与内置作用域赶不走的 \_\_builtins__ 作用域链作用域链 与 LEGB 原则狗急跳墙之法 参…

【Go语言从入门到实战】基础篇

Go语言从入门到实战 — 基础篇 First Go Program 编译 & 运行 基本程序结构 应用程序入口 package mainimport "fmt"func main() {fmt.Println("Hello World") }退出返回值 package mainimport ("fmt""os" )func main() {fmt.Pr…

哪个产品功能重要?KANO模型帮你

哪个产品功能重要?KANO模型来帮你 模型工具可以协助思考和系统化改进 KANO模型是小日本一个教授提出 趣讲大白话:往往,怎么思考,比思考什么重要 【趣讲信息科技175期】 **************************** 东京理工大学教授狩野纪昭(No…

【医学图像】图像分割系列.2 (diffusion)

介绍几篇使用diffusion来实现医学图像分割的论文:DARL(ICLR2023),MedSegDiff(MIDL2023)& MedSegDiff-V2(arXiv2023),ImgX-DiffSeg(arXiv2023)…

CTF 2015: Search Engine-fastbin_dup_into_stack

参考: [1]https://gsgx.me/posts/9447-ctf-2015-search-engine-writeup/ [2]https://blog.csdn.net/weixin_38419913/article/details/103238963(掌握利用点,省略各种逆向细节) [3]https://bbs.kanxue.com/thread-267876.htm(逆向调试详解&am…

web功能测试方法大全—完整!全面!(纯干货,建议收藏哦~)

本文通过六个部分为大家梳理了web功能测试过程中,容易出现的遗漏的部分,用以发掘自己工作中的疏漏。(纯干货,建议收藏哦~) 一、输入框 1、字符型输入框 2、数值型输入框 3、日期型输入框 4、信息重复 在一些需要命…

GPT-4版Windows炸场,整个系统就是一个对话机器人,微软开建AI全宇宙

原创 智东西编辑部 智东西 Windows的GPT时刻到来,变革PC行业。 作者 | 智东西编辑部 今日凌晨,Windows迎来了GPT-4时刻! 在2023微软Build大会上,微软总裁萨蒂亚纳德拉(Satya Nadella)宣布推出Windows Co…

实现免杀:Shellcode的AES和XOR加密策略(vt查杀率:4/70)

前言 什么是私钥和公钥 私钥和公钥是密码学中用于实现加密、解密和数字签名等功能的关键组件。 私钥是一种加密算法中的秘密密钥,只有密钥的拥有者可以访问和使用它。私钥通常用于数字签名和数据加密等场景中,它可以用于对数据进行加密,同…

头部效应凸显,消金行业迈入“巨头赛”?

回顾已经过去的2022年,消金行业面临着来自多方面的考验,承压前行,而随着进入2023年,相关企业也陆续展示出过去一年的发展成果,以此为后续发展做出指引。 当前,30家已开业的消金公司中,29家的20…

《消息队列高手课》课程笔记(三)

如何利用事务消息实现分布式事务? 什么是分布式事务? 消息队列中的“事务”,主要解决的是消息生产者和消息消费者的数据一致性问题。如果我们需要对若干数据进行更新操作,为了保证这些数据的完整性和一致性,我们希望…

独立站怎么搭建?搭建一个独立站的10个建议和步骤

要搭建一个独立站(也称为个人网站或博客),以下是一些建议和步骤: 选择一个合适的域名:选择一个简洁、易记且与您网站内容相关的域名。确保域名可用,并注册该域名。 寻找一个合适的主机服务提供商&#xff…

【Cpp】哈希之手撕闭散列/开散列

文章目录 unorderedunordered系列关联式容器unordered_map和unordered_set概述unordered_map的文档介绍unordered_map的接口说明 底层结构 哈希哈希/散列表 概念哈希冲突哈希函数哈希函数设计原则:常见哈希函数 哈希冲突解决闭散列线性探测二次探测 开散列 哈希表的…

C语言数据结构——树、堆(堆排序)、TOPK问题

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,数据结构 🔥座右铭:“不要等到什么都没…

使用go语言构建区块链 Part4.事务1

英文源地址 简介 事务是比特币的核心, 区块链的唯一目的是以安全可靠的方式存储交易, 因此在交易创建后没有人可以修改. 今天我们开始实现事务, 但由于这是一个相当大的主题, 我将它分成两部分: 在这一部分中, 我们将实现事务的通用机制, 在第二部分中, 我们将研究细节. 此外…

让你在Windows打开Sketch格式再也不愁

Sketch是Macos的专用矢量绘图应用。在Sketch软件中,ios开发者可以轻松设计图层面板等图层的常用操作,广泛应用于产品的交互设计和UI设计,帮助很多设计师创作出很多优秀的作品。然而,Sketch只服务于Macos系统,这使得许多…

Laravel框架06:文件、迁移填充、会话、缓存

Laravel框架06:文件、迁移填充、会话、缓存 一、文件上传1. 文件上传表单2. 上传业务处理3. 全部代码 二、数据表的迁移与填充1. 迁移文件① 创建迁移文件② 编写迁移文件③ 执行迁移文件④ 回滚迁移文件 2. 填充(种子)文件① 创建填充文件②…