GNeRF的一些具体细节

Abstract

GNeRF,一个结合生成对抗网络(GAN)和神经辐射场(NeRF)重建的框架,用于未知甚至随机初始化相机姿态的复杂场景。最近基于 NERF 的进展已经获得了显着的现实新视图合成的普及。然而,大多数方法都严重依赖于摄像机姿态的精确估计,而目前很少有方法只能在摄像机轨迹相对较短的大致前向场景中对未知摄像机姿态进行优化,且需要对摄像机姿态进行粗略的初始化。与此不同的是,GNRF 仅在复杂的由外向内场景中使用随机初始化的姿势。我们提出了一个新的两阶段端到端的框架。第一阶段将 GAN 的应用带入一个新的领域,用于共同优化粗相机的姿态和辐射场,而第二阶段用额外的光度损耗来改善它们。我们使用一个混合迭代优化方案来克服局部极小值。在各种合成和自然场景上的大量实验证明了 GNeRF 的有效性。更令人印象深刻的是,我们的方法在那些重复模式甚至低纹理被认为是极具挑战性的场景中优于基线。

Method

4.1. Pose-free NeRF Estimation(无姿势 NRF 估计)
作为该方法的初始阶段,在 A 阶段,我们没有对每幅图像或预先训练的辐射场进行合理的摄像机位姿估计。我们这个阶段的目标是为每个图像预测一个粗略的姿势,同时也学习场景的粗略辐射场。
在这里插入图片描述
4.2. Regularized Learning Strategy(正规化学习策略)
提出了一种正则化学习策略(AB. . AB) ,通过交错无姿态的 NeRF 估计步骤(A 阶段)和 NeRF 细化步骤(B 阶段)来进一步提高 NeRF 模型和姿态估计的质量。
该策略通过学习反演网络的姿态预测来规范基于梯度下降的模型优化。直观地说,通过对 NERF 模型的对抗训练,合成的假像和真像之间的区域差距正在缩小
4.3. Training
为了训练产生的辐射场,遵循类似 GRAF的贴片采样策略,以提高计算和存储效率。具体来说,对于 GAN 的训练过程,采用动态补丁采样策略,如图左下部所示。每个补丁在图像域内采样,固定大小为16 × 16,但动态尺度和随机偏移。对于姿态优化过程。采用静态补丁采样策略,如图左上部所示。在整个图像域内对每个补丁进行均匀采样,每个补丁的固定尺寸为64 × 64。这种采样策略使用一个稀疏的补丁来唯一地表示整幅图像,并用这个补丁来估计相应的摄像机姿态。我们还在开始时调整相机的固有特性,以最大限度地扩大接收范围,并逐步增加到原始值,以集中精细的细节。在实践中,这些策略为 GAN 训练过程的稳定性带来了极大的好处。
4.4. Implementation Details
采用了原始的 NeRF 的网络结构及其分层抽样策略。将粗抽样和重要抽样的抽样点数设置为64。不同的是,由于 GAN 训练只能缩小真补丁和假补丁(“粗”和“精”)的分布,在分层抽样策略中使用相同的 MLP,以确保“粗”和“精”网络的姿态空间是一致的。为了进行公平的比较,将 MLP 的维数从原来的256增加到360,以保持总体参数不变。鉴别器网络遵循 GRAF ,其中应用了特征归一化和权重谱归一化。我们借用视觉变压器网络来构建反转网络,其最后一层被修改为输出一个摄像机姿态。我们使用 RMSprop 算法来优化生成器和鉴别器,其学习率分别为0.0005和0.0001。对于反演网络和摄像机姿态,我们使用 Adam算法,学习率分别为0.0001和0.005。

Discussion and Conclusion

讨论:方法不依赖于摄像机姿态的初始化,但是它需要一个合理的摄像机姿态采样分布。对于不同的数据集,依赖于离真实分布不远的摄像机采样分布,以减轻辐射场估计的困难。这可以通过自动学习底层姿态采样空间来减轻。将全局外观分布优化(我们的方法)和局部特征匹配(姿态分布估计)相结合,以端到端的方式进行外观和几何重建是一个很有前景的方向。这种组合有可能保留我们的能力,具有挑战性的情况下,并放松到更一般的场景没有准确的分布事先。其次,联合优化摄像机姿态和场景表示是一个具有挑战性的任务,选择陷入局部最小。虽然在实际数据集中,如果相机姿态准确,我们可以获得与 NERF 相当的新视图合成质量,但是当有足够数量的可靠关键点时,我们优化的相机姿态仍然不如 COLMAP 那样准确。这可能是由于我们的反演网络将图像映射到摄像机的位置,只能采取有限大小的图像斑块的计算效率。这可以通过重要性抽样来解决。
结论:提出了一种基于遗传算法的神经辐射场重建框架 GNeRF,该框架能够在摄像机姿态完全未知且场景条件复杂的情况下,对摄像机的姿态进行估计。我们的框架是完全可微的和端到端可训练的。具体来说,我们的第一阶段使基于 GAN 的联合优化的三维表示和相机姿态,我们的混合和迭代方案交错的第一阶段和第二阶段将进一步完善的结果稳健。大量的实验证明了我们方法的有效性。令人印象深刻的是,我们的方法已经在那些具有重复模式甚至低纹理的场景上展示了有希望的结果,这在以前被认为是极具挑战性的。我们相信,我们的方法是一个关键的步骤,以更一般的神经场景建模目标使用较少的人为制作的先验。

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

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

相关文章

【过程11】——教育被点燃的路上

这里写目录标题 一、背景二、过程1.两年四十万的认知改变2.三年打工仔的经历改变3.一年计算机的人生蜕变4.后面的展望 三、总结 一、背景 人生在世,对于一些事情的笃信笃行;背后真的会有莫大无以言表的波涛。 这个事情到现在已经五年半左右时间了&#…

分类算法——文章分类(五)

文章分类计算 计算结果 P(C|Chinese,Chinese,Chinese,Tokyo,Japan)-->P(Chinese, Chinese, Chinese, Tokyo, Japan|C) * P(C)/P(Chinese, Chinese, Chinese, Tokyo, Japan) P(Chinese|C)5/8 P(Tokyo|C) 0 P(Japan|C) 0思考:我们计算出来某个概率为0,…

mybatis基础篇-mybatis使用-mybatis工具类封装

mybatis官网 https://mybatis.org/mybatis-3/zh_CN/getting-started.html 官网跳转连接 jar包下载 https://download.csdn.net/download/weixin_44201223/89146621 本练习所需jar包资源下载 1、创建数据库数据 # 创建数据库 create database test; use test; # 创建表 cre…

Qt学习笔记(一)

信号与槽机制 本质上就是观察者模式; ------------------------------------------信号槽是Qt框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发…

导致苹果IPA应用APP打开提示“已到期”的原因及解决办法

哈喽,大家好呀,淼淼又来和大家见面啦,有许多小伙伴们在使用iOS设备的时候,有时候可能会遇到打开某个IPA应用时出现“已到期”的提示,这种情况通常会发生在开发者证书过期、时间设置问题、重新签名错误等情况下。这一期…

力扣452 用最少数量的箭引爆气球 Java版本

文章目录 题目描述代码 题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完…

李沐46_语义分割和数据集——自学笔记

语义分割 语义分割将图片中的每个像素分类到对应的类别。 实例分割(目标检测的进化版本) 如果有物体,会区别同一类的不同物体。 语义分割重要数据集:Pascal VOC2012 %matplotlib inline import os import torch import torch…

Java -- (part12)

一.权限修饰符 1.属性:用private ->封装思想 2.成员方法public ->便于调用 3.构造public ->便于new对象 二.final关键字 1.修饰类 a.格式 -- public final class 类名 b.特点:不能被继承 2.修饰方法 a.格式:修饰符 final 返回值类型 方法名(形参){} b.特点…

C++内存管理——new/delete、operator new/operator delete

内存管理 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (int*)malloc(sizeof(int) * 4);int* pt…

c++ lambda表达式的使用方法

c lambda表达式的使用方法 C11引入了lambda表达式,它是一种轻量级的匿名函数,允许我们在需要函数的地方直接定义函数,而无需专门声明函数。lambda表达式的语法简洁,并且非常灵活,可以捕获外部变量,具有与普…

Mapper 编写的常用方式

第一种&#xff1a;接口实现类继承 SqlSessionDaoSupport&#xff1a; 使用此种方法需要编写mapper 接口&#xff0c;mapper 接口实现类、mapper.xml 文件。 1&#xff1a; 在 sqlMapConfig.xml 中配置 mapper.xml 的位置 <mappers><mapper resource"mapper.x…

技术速递|.NET 智能组件简介 – AI 驱动的 UI 控件

作者&#xff1a;Daniel Roth 排版&#xff1a;Alan Wang AI 的最新进展有望彻底改变我们与软件交互和使用软件的方式。然而&#xff0c;将 AI 功能集成到现有软件中可能面临一些挑战。因此&#xff0c;我们开发了新的 .NET 智能组件&#xff0c;这是一组真正有用的 AI 支持的 …

OCP-数据库中的小米SU7

oracle ocp ​数据库中的SU7 ​好看又好用 需要找工作和落户的快来

帮助中心最核心的内容,你都知道吗?

帮助中心&#xff0c;其实就是个解决问题的“百事通”。当你在使用某产品时&#xff0c;遇到了一些问题&#xff0c;就可以到帮助中心去查询相关的信息以解决问题。很多公司都会搭建帮助中心&#xff0c;那么&#xff0c;帮助中心的核心内容都有哪些呢&#xff1f;这就是今天我…

Chrome 中安装 Vue 插件 vue-devtools 的简易教程

Vue.js 是一种流行的 JavaScript 框架&#xff0c;用于构建交互式的用户界面。它提供了丰富的开发工具和插件&#xff0c;其中一个非常有用的插件就是 vue-devtools。vue-devtools 可以让开发者在 Chrome 浏览器中轻松调试和检查 Vue 组件的状态、事件和数据流。本篇教程将向你…

损失函数:Cross Entropy Loss (交叉熵损失函数)

损失函数&#xff1a;Cross Entropy Loss &#xff08;交叉熵损失函数&#xff09; 前言相关介绍Softmax函数代码实例 Cross Entropy Loss &#xff08;交叉熵损失函数&#xff09;Cross Entropy Loss与BCE loss区别代码实例 前言 由于本人水平有限&#xff0c;难免出现错漏&am…

【yolo数据集合并方法】

yolo数据集合并方法 1.数据集容2.数据集合并 1.数据集容 包含训练集、验证集和测试集。 每一个数据集中包含图像文件夹和标签文件夹。 yaml文件中定义了配置参数&#xff0c;包括目标识别的class类别&#xff1a; 2.数据集合并 需要修改labels文件夹下txt文件class信息&…

记录shell编程中$1,$@等符号的含义

笔者最近老是遇到shell中的$相关的题目&#xff0c;于是打算写篇文章记录一下。考虑到并没有特别多需要解释的内容&#xff0c;所以并不会进行介绍&#xff0c;上图上表上代码&#xff0c;让机器说话&#xff0c;machine always right test.sh #/bin/bash echo $# $# echo …

gcc原理和使用

gcc gcc是什么 GCC&#xff0c;全称 GNU Compiler Collection&#xff08;GNU 编译器套件&#xff09;&#xff0c;是一套功能强大的编程语言编译器&#xff0c;由自由软件基金会&#xff08;Free Software Foundation, FSF&#xff09;作为GNU项目的一部分开发和维护。它最初…

宝塔使用笔记

1.配置ssl 验证方式&#xff1a;文件验证和dns验证都试一下 参考&#xff1a; https://app.applebyme.cn/cloud/https/23050.html