Nerf原理理解

神经辐射场是一个简单的全连接网络(权重约为 5MB),经过训练可使用渲染损失再现单个场景的输入视图。该网络直接从空间位置和观看方向(5D 输入)映射到颜色和不透明度(4D 输出),充当“体积”,因此我们可以使用体积渲染来以不同方式渲染新视图。 优化 NeRF 需要几个小时到一两天(取决于分辨率),并且只需要一个 GPU。从优化的 NeRF 渲染图像需要不到一秒到大约 30 秒的时间,这同样取决于分辨率。

 NeRF——Neural Radiance Fields(神经辐射场)的缩写,是来自2020年3月的一篇论文 Title:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis nerf论文:https://arxiv.org/pdf/2003.08934.pdf nerf代码:https://github.com/bmild/nerf

三维模型一般用网格,点云或者体素方式表现

希望通过反渲染还原出一个三维 模型

过往三维重建直接通过图片重建出网格,点云或者体素模型

NeRF是通过神经隐式方式建三维模型

神经隐式

我们可以简单地理解为:

我们使用一个NeRF神经网络采取体积雾(带不透明度的点云)的渲染方式,通过已知视角的图片进行训练,然后输入其它相机视角的参数,从而预测出未出现视角的图片。

此时三维模型的信息就储存在了NeRF神经网络之中!所以这是一种“隐式”的表示方法,而不是像点云、体素、网格这种显式的表示方式!

这里为了让视频一开始方便理解,在开头将输入的(x,y,z,θ,φ)认为是相机的位姿,而先避开采样点的概念。实际上在论文和代码中原作者是将这个(x,y,z)处理成了采样点的位置(x,y,z),而(θ,φ)就是采样点对应的观测角度。采样点是可以基于相机的位姿得到的,也就是:

采样点位置=相机原点+采样距离*相机观测方向

这个理解方式是将这个点处理成了空间中的点,每个空间中的采样点在不同的位置和观测角度能呈现不同的颜色,而采样点的不透明度只与采样点的位置有关。

一个NeRF神经网络模型只能存储一个三维场景 

以像素点这一层级作为训练资料,而不是整张图作为一个层级,1个batch就有很多来自不同地方像素点和不同地方相机参数作为训练资料。输出RGB和不透明值,先输出一段采样点上的RGBA的值,在射线方向上,对这些采样点进行特定积分,才得到像素点确切的颜色值。是一个体积雾渲染的过程。

第二

有在论文中提到位置编码信息,主要是为了将图像中的高频信息体现出来,能够大幅度提高图片的细节质量,不会受到周边像素平滑过后的影响

NeRF位置编码通过concat方式将这样的信息融合起来,每个位置编码由两项sin和cos合成,

空间坐标系中他用10项就是20维来表示xyz的位置编码

相机方向用4项,即8维来分别表示(x,y,z)的位置编码

是用一个全连接层,一直连最后得到最终结果

一个像素点对应有64个采样点,每个采样点基于光线的射线产生

最后我们只需要通过一组图片和对应的相机位姿去训练一个网络,网络就能储存对应的模型信息,我们再输入一个不一样视角的相机参数,就能把我们想要看到一个物体的角度呈现出来

NeRF: Representing Scenes as

Neural Radiance Fields for View Synthesis

"Bundle adjustment"(捆绑调整)是计算机视觉和摄影测量领域的一个重要概念,它是用于三维重建和摄影测量的一种优化技术。Bundle adjustment的目标是通过优化相机参数、特征点的三维坐标以及观测值,来提高相机位姿和三维点的估计精度。

具体来说,Bundle adjustment通常用于以下情境:

    1. 摄影测量:当使用多个照片来创建地图或测量物体的三维结构时,需要估计相机的内部参数(如焦距、畸变等)以及每个照片的位姿(相机的位置和方向)。Bundle adjustment可以通过同时考虑多个观测值(例如特征点在不同照片中的投影)来提高这些参数的估计精度。
    2. SLAMSimultaneous Localization and Mapping):在移动机器人、自动驾驶汽车和增强现实应用中,Bundle adjustment用于同时估计相机或传感器的位姿和周围环境的三维结构,以实现实时的定位和地图构建。
    3. 结构从运动(Structure from Motion):在计算机视觉中,Bundle adjustment被用于从多个图像中重建三维场景的几何结构。

Bundle adjustment的核心思想是最小化观测值与估计值之间的残差,通过调整参数来最小化这些残差。这是一个高度非线性的优化问题,通常使用数值优化方法(例如Levenberg-Marquardt算法)来解决。Bundle adjustment能够处理许多复杂情况,包括相机内外参数的变化、畸变校正、特征点匹配误差等。

总之,Bundle adjustment在计算机视觉和摄影测量中被广泛应用,用于提高三维重建和相机位姿估计的精度,从而在许多应用领域中发挥关键作用。

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

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

相关文章

【Kafka系列 06】Kafka Producer源码解析

温馨提示:本文基于 Kafka 2.3.1 版本。 一、Kafka Producer 原理图 生产者的 API 使用还是比较简单,创建一个 ProducerRecord 对象(这个对象包含目标主题和要发送的内容,当然还可以指定键以及分区),然后调…

全方位碾压chatGPT4的全球最强模型Claude 3发布!速通指南在此!保姆级教学拿脚都能学会!

🎉🎉欢迎光临,终于等到你啦🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏《Spring 狂野之旅:从入门到入魔》 &a…

李沐动手学习深度学习——3.5练习

减少batch_size(如减少到1)是否会影响读取性能? 肯定会影响,计算机io性能而言,随着batch_size增大,读取越来越快,需要的时间越少。这里会涉及到计算机操作系统的知识点,内存与硬盘之…

第五节 JDBC驱动程序类型

JDBC驱动程序是什么? JDBC驱动程序在JDBC API中实现定义的接口,用于与数据库服务器进行交互。 例如,使用JDBC驱动程序,可以通过发送SQL或数据库命令,然后使用Java接收结果来打开数据库连接并与数据库进行交互。 JDK…

【2024】vue-router和pinia的配置使用

目录 vue-routerpiniavue-routerpinia进阶用法---动态路由 有同学在项目初始化后没有下载vue-router和pinia,下面开始: vue-router npm install vue-router然后在src目录下创建文件夹router,以及下面的index.ts文件: 写进下面的…

华为智慧教室3.0的晨光,点亮教育智能化变革

“教室外有更大的世界,但世界上没有比教室更伟大的地方。” 我们在求学阶段,都听说过这句话,但往往是在走出校园之后,才真正理解了这句话。为了让走出校园的孩子能够有能力,有勇气探索广阔的世界。我们应该准备最好的教…

碳视野|全国首个ESG区域行动方案通过,上海政府推进ESG有八“要”

引领绿色转型,共筑低碳未来!AMT企源碳管理团队深入解读碳领域政策、概念及标准,分享实践经验,助力产业绿色发展。我们启动“碳视野、碳课堂、碳实践”三大专栏,紧跟碳行业政策动态,以“科普实践分享”为核心…

Javaweb之SpringBootWeb案例之自动配置案例的自定义starter测试的详细解析

3.2.4.3 自定义starter测试 阿里云OSS的starter我们刚才已经定义好了,接下来我们就来做一个测试。 今天的课程资料当中,提供了一个自定义starter的测试工程。我们直接打开文件夹,里面有一个测试工程。测试工程就是springboot-autoconfigurat…

C++ Floyd求最短路 Floyd算法(多源汇最短路)

给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,边权可能为负数。 再给定 k 个询问,每个询问包含两个整数 x 和 y ,表示查询从点 x 到点 y 的最短距离,如果路径不存在,则输出 impossible。 数据…

过于老旧的pytorch_ssim包 请从github下载源码

有些冷门算法真的不要随便pip,有可能下载到史前版本…最好还是找源代码 汗 今天要用到SSIM损失函数,从网上简单看了一下原理就想测试一下,偷了一下懒就直接在命令行输入pip install pytorch_ssim了,结果报了一堆错误(汗…

Python(NetOps)前传-网络设备开局配置

背景 我们知道用Python在cli配置网络设备的前提是: 网络设备与Python主机网络可达网络设备已开启并完成ssh相关配置 目标 本文已华为S5720S-52P-LI-AC交换机为例,完成: 完成网络设备开局配置;用Python脚本验证ssh登录 配置 …

人人都写过的6个bug

大家好&#xff0c;我是知微。 程序员写bug几乎是家常便饭&#xff0c;也是我们每个人成长过程中难以避免的一部分。 为了缓解这份“尴尬”&#xff0c;今天想和大家分享一些曾经都会遇到过的bug&#xff0c;让我们一起来看看这些“经典之作”。 1、数组越界 #include <…

【单片机学习的准备】

文章目录 前言一、找一个视频是二、画图软件三、装keil5 仿真protues总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、找一个视频是 https://www.b…

MongoDB聚合运算符:$count

文章目录 语法使用举例在$group阶段中使用在$setWindowFields阶段使用 $count聚合运算符返回分组中文档的数量。从5.0开始支持。 语法 { $count: { } }$count不需要参数 使用 $count可以用于下列聚合阶段&#xff1a; $bucket$bucket$group$setWindowFields 在$group阶段中…

基于springboot+vue的校园网上店铺

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

MySQL 学习笔记(基础篇 Day1)

「写在前面」 本文为黑马程序员 MySQL 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。 目录 0 课程介绍 1 MySQL 概述 1.1 数据库相关概念 1.2 MySQL 数据库 2 SQL 2.1 SQL 通用语法 2.2 SQL 分类 2.3 DDL 2.4 图形…

计算机网络-第2章 物理层

本章内容&#xff1a;物理层和数据通信的概念、传输媒体特点&#xff08;不属于物理层&#xff09;、信道复用、数字传输系统、宽带接入 2.1-2.2 物理层和数据通信的概念 物理层解决的问题&#xff1a;如何在传输媒体上传输数据比特流&#xff0c;屏蔽掉传输媒体和通信手段的差…

【python高级编程教程】笔记(python教程、python进阶)第三节:(1)多态与鸭子类型(Polymorphism and Duck Typing)

参考文章1&#xff1a;【比刷剧还爽】清华大佬耗时128小时讲完的Python高级教程&#xff01;全套200集&#xff01;学不会退出IT界&#xff01; 参考文章2&#xff1a;清华教授大力打造的Python高级核心技术&#xff01;整整100集&#xff0c;强烈建议学习&#xff08;Python3…

Python 开发图形界面程序

用 Python 语言开发图形界面的程序&#xff0c;有2种选择&#xff1a; Tkinter 基于Tk的Python库&#xff0c;这是Python官方采用的标准库&#xff0c;优点是作为Python标准库、稳定、发布程序较小&#xff0c;缺点是控件相对较少。 PySide2/PySide6 基于Qt 的Python库&#x…

JMeter VS RunnerGo :两大主流性能测试工具对比

说起JMeter&#xff0c;估计很多测试人员都耳熟能详。它小巧、开源&#xff0c;还能支持多种协议的接口和性能测试&#xff0c;所以在测试圈儿里很受欢迎&#xff0c;也是测试人员常用的工具&#xff0c;不少企业也基于JMeter建立起自己的自动化测试能力&#xff0c;提升工作效…