【NeRF】1、NeRF 是什么

NeRF 最早是在 ECCV2020 中提出的方法,还获得了 ECCV2020 Oral

  • 论文:Representing Scenes as Neural Radiance Fields for View Synthesis
  • 代码:https://github.com/bmild/nerf
  • 官网:https://www.matthewtancik.com/nerf

Neural Radiance Fields (NeRF) 是一种用于3D场景重建的方法,其就是利用深度学习技术构建了一个可预测任意角度、任意位置观察情况下物体表面光照情况 (Radiance) 的模型,其工作流程大致可以分为以下几个步骤:

  • 数据采集:首先,需要拍摄并收集一系列从不同视角看到的场景图片。这些图片将作为训练数据输入到NeRF模型中。

  • 预处理:对收集到的图像进行必要的预处理操作,如裁剪、缩放等,并提取每个图像对应的相机参数(包括相机位置和视线方向)。这里的相机参数后续需要用于模型训练。

  • 训练:使用收集到的图像和相应的相机参数来训练一个深度神经网络。这个网络的输入是 3D 空间中一个点的坐标以及一个观察方向,输出是该点在给定观察方向下应有的颜色和透明度。

    • NERF(Neural Radiance Fields)模型并不需要预先知道深度信息。它是一个无监督学习方法,只需要一组从不同视角拍摄的2D图片作为输入就可以了。
    • 在训练过程中,NERF会尝试学习一个函数来描述3D场景。这个函数接收一个3D空间中的位置和一个观察方向作为输入,输出那个位置朝那个方向看去时应该看到的颜色和透明度。
    • 每个位置和一个方向的输入得到的输出实际上是一个颜色值和透明度。这个颜色值表示了从那个特定位置朝着特定方向看去,你将会看到什么颜色。而透明度则表示了该点是否被其他物体遮挡或者说该点处材质的透明情况。
  • 采样与渲染:当我们想生成新图片时,会给出新相机参数(包括新位置和新视线方向)。然后沿着新视线 (ray) 在该 ray 经过的路线上的 3D 空间中选择多个采样点,并用训练好的网络计算出每个采样点处朝某个方向看去时应有颜色和透明度。最后通过将所有被采样点处得到颜色值进行混合(如加权平均),就能得到每一个像素所显示颜色值,从而生成最终渲染图像。

    • 这里的“采样”主要指的是在3D空间中选择一些点来计算它们的颜色和透明度。对于一个像素位置,NERF 其实是沿着一条光线 ray 来进行采样的,采样点是沿着这个 ray 上采样的点,因为相机位置到每个像素位置其实都对应了一条 ray。

    • 具体来说,当你想生成一张新图片时,你会给NERF一个相机参数,包括相机位置和视线方向。然后,NERF会沿着这个视线方向在3D空间中选择(或者说“采样”)多个点。

    • 对于每个被采样的点,NERF都会用训练好的函数计算出该点处朝某个方向看去时应有的颜色和透明度,最后通过将所有被采样点处得到的颜色值进行混合(比如加权平均),就能得到新视角下像素应有的颜色值。

    • 在NERF(Neural Radiance Fields)模型中,采样率是一个可以根据实际需要进行调整的参数。具体的采样率取决于多种因素,包括场景的复杂性、计算资源和时间限制等。

    • 在原始的NERF论文中,作者们提到在渲染过程中使用了64至128个采样点来估计每个像素值。这意味着沿着相机视线方向,他们在3D空间中选择了64至128个点来计算颜色和透明度。

  • 优化与微调:根据生成图片与实际情况或期望结果之间是否匹配来优化或微调模型参数以改善性能。

什么是辐射场 Radiance Field:

  • 在计算机图形学中,Radiance Field指的 是一个函数,它将一个点和一个方向映射到光线颜色上,可以预测在三维空间中的任何一个位置。换言之,如果你站在某个位置,并且看向某个特定方向,那么 Radiance Field 就决定了你看到的景象。

  • 所以说,在NERF中,“辐射场”就是一个三维空间中所有点和方向与颜色之间关系的描述。换句话说, 辐射场给出了从每个点、沿每个方向观察时应该“看到”的颜色信息。

为什么叫神经辐射场呢:

  • NERF中,用神经网络模拟这 个Radiance Field
  • 输入为3D空间中的一个点及其视线方向,输出为该点处沿着该视线方向所观察到的颜色以及透明度

简单总结 NERF:

  • 使用一系列2D图片作为输入数据集,这些图片显示了同一场景从不同角度和位置拍摄得到的结果
  • 首先会估计出每张图片对应相机参数(如位置、焦距等)
  • 然后利用这些参数以及深度信息将2D像素转换为3D空间坐标和视线方向,并通过神经网络对Radiance Field进行学习

在这里插入图片描述

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

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

相关文章

集成内部高端电源开关LTC3637HMSE、LTC3637MPMSE稳压器,TJA1443AT汽车CAN FD收发器。

一、LTC3637 76V、1A 降压型稳压器 (简介)LTC3637是一款高效率降压DC/DC稳压器,集成内部高端电源开关,功耗仅12μA DC,空载时可保持稳定的输出电压。LTC3637可提供高达1A的负载电流,并具有可编程峰值电流限…

API攻防-接口安全SOAPOpenAPIRESTful分类特征导入项目联动检测

文章目录 概述什么是接口? 1、API分类特征SOAP - WSDLWeb services 三种基本元素: OpenApi - Swagger UISpringboot Actuator 2、API检测流程Method:请求方法URL:唯一资源定位符Params:请求参数Authorization&#xff…

【算法系列 | 10】深入解析查找算法之—线性查找

序言 心若有阳光,你便会看见这个世界有那么多美好值得期待和向往。 决定开一个算法专栏,希望能帮助大家很好的了解算法。主要深入解析每个算法,从概念到示例。 我们一起努力,成为更好的自己! 今天第10讲,讲…

eclipse 某个文件不能编辑

今天打开eclipse 突然发现有一个文件不能编辑,左下角发现此文件被修改为只读, 右键此文件-->properties--> Resource -->在Attributes中,取消Read-only选项--> Apply 此时,发现eclipse 右下角 变为Writable。再次编辑…

spark中使用flatmap报错:TypeError: ‘int‘ object is not subscriptable

1、背景描述 菜鸟笔者在运行下面代码时发生了报错: from pyspark import SparkContextsc SparkContext("local", "apple1012")rdd sc.parallelize([[1, 2], 3, [7, 5, 6]])rdd1 rdd.flatMap(lambda x: x) print(rdd1.collect())报错描述如…

机器学习必修课 - 交叉验证 Cross-Validation

想象一下你有一个包含5000行数据的数据集。通常情况下,你会将约20%的数据保留作为验证数据集,即1000行。但这会在确定模型得分时引入一些随机性。也就是说,一个模型可能在一组1000行数据上表现良好,即使在另一组1000行数据上表现不…

Self-Instruct

本篇工作利用LLM的生成能力,来产生大量指令数据集(指令、输入、输出),无需人工标注数据。 其中,在对任务判别的时候,需要区分是输出优先还是输入优先: 输入优先没问题,符合人类直觉…

【小米技术分享】面试题:什么是乐观锁?你是如何设计一个乐观锁

大家好,我是小米。今天我们来聊一下面试中常见的一个问题:“什么是乐观锁?你是如何设计一个乐观锁?”作为一位热爱技术的程序员,对于这个问题,我有着自己独特的理解和实践经验。接下来,我将以通…

ESP32-WROOM-32无法进入下载模式进行程序上传的问题

结论 先说结论,ESP32-WROOM-32无法进入下载模式通过串口进行程序上传,可能是GPIO2引脚没有通过下拉电阻拉低,导致无法进入正确的启动模式。 启动模式 ESP32启动时会打印rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) 复位源rs…

discuz封面设置失败的解决办法(centos系统+windows系统)

discuz封面设置失败的解决办法(centos系统windows系统) centos系统:1、开启/var/www/html 这个目录的读写权限chmod -R 777 /var/www/html然后重启httpd:service httpd restart如果discuz论坛发布帖子,还是显示封面设置失败的话…

混淆技术研究笔记(六)如何基于yGuard实现?

确定参考 <adjust> 作为入口后&#xff0c;就需要详细了解这部分代码的逻辑。 需要看yguard源码了&#xff0c;你会如何阅读一个完全不了解的源码&#xff1f; 我通常的策略都是找一个目标&#xff0c;添加代码依赖&#xff0c;写好demo&#xff0c;debug跟踪代码看。如…

Maven系列第3篇:详解maven解决依赖问题

maven系列目标&#xff1a;从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第3篇。 我们先来回顾一下什么是maven&#xff1f; maven是apache软件基金会组织维护的一款自动化构件工具&#xff0c;专注服务于java平台的项目构件和依赖管理。 本文主要内容…