NeRF:从二维图像到三维重建【初识!原理通俗讲解】

news2024/11/17 2:39:40

NeRF:从二维图像到三维重建

反渲染(Inverse Rendering)可以理解为成像渲染的反过程,是指从一组二维图像重建三维场景的过程,这在计算机视觉和图形学中具有重要意义。NeRF(Neural Radiance Fields)是一种先进的三维重建神经网络方法,能够从一组二维图像生成高质量的三维场景。本文将详细介绍NeRF的各个方面,包括输入前处理、模型结构、体渲染、反渲染的概念及其应用。


在这里插入图片描述

输入的前处理

为了从二维图像生成用于NeRF模型的粒子,需要进行一系列的前处理步骤:

  1. 光线投射(Ray Casting):将每个像素的光线从相机的视点投射到三维空间中。这些光线通过相机的内参和外参计算得到。

  2. 采样点生成:沿着每条光线均匀地生成采样点。例如,从近平面到远平面之间生成64个均匀分布的采样点。

  3. 输入预处理:每个采样点的三维坐标和视角方向作为NeRF模型的输入。

(如图a所示,黑色的点就是粗均匀采样的点)

在这里插入图片描述


模型结构

NeRF模型由两个类似的全连接神经网络组成:粗模型(Coarse Model)细模型(Fine Model)

粗模型(Coarse Model)

  • 输入:位置编码后的三维点坐标 γ ( x ) \gamma(\mathbf{x}) γ(x)和视角方向 γ ( d ) \gamma(\mathbf{d}) γ(d)
  • 网络结构:包含8层,每层256个单元,激活函数为ReLU。在第4层之后,将中间特征与原始输入拼接(skip connection)。
  • 输出:体积密度(不透明度) σ \sigma σ 和颜色 c ∈ ( R G B ) \mathbf{c} \in (RGB) c(RGB)

细模型(Fine Model)

  • 输入:来自粗模型的重要性采样点,位置编码后的三维点坐标 γ ( x ) \gamma(\mathbf{x}) γ(x) 和视角方向 γ ( d ) \gamma(\mathbf{d}) γ(d)
  • 网络结构:与粗模型相似的多层感知机结构,但处理的是更加细化的采样点。

(粗细模型的结构是一样的,只是尺寸不太一样,粗模型处理的是64个采样点的输入,而细模型处理的是64+128=192个采样点的输入。其中,128是在粗模型中输出为高密度的地方进行二次采样的,也就是说这个地方有东西,多采样,重建效果更好)

在这里插入图片描述

粒子的前期均匀采样与细模型的二次采样
  1. 前期均匀采样

    • 在粗模型中,将光线在场景中的每个视点均匀采样,得到一组样本点。
  2. 细模型的二次采样

    • 根据粗模型的输出,通过重要性采样在光线上进行二次采样,得到更多高密度区域的样本点,然后输入细模型进行更精细的重建。

位置编码(Positional Encoding)

为了捕捉高频信息,NeRF对输入的三维位置和视角方向进行位置编码。位置编码的公式如下:
γ ( p ) = ( sin ⁡ ( 2 0 π p ) , cos ⁡ ( 2 0 π p ) , … , sin ⁡ ( 2 L − 1 π p ) , cos ⁡ ( 2 L − 1 π p ) ) \gamma(p) = (\sin(2^0 \pi p), \cos(2^0 \pi p), \ldots, \sin(2^{L-1} \pi p), \cos(2^{L-1} \pi p)) γ(p)=(sin(20πp),cos(20πp),,sin(2L1πp),cos(2L1πp))
其中, p p p是位置或方向, L L L 是编码的频率数量。

在这里插入图片描述

体渲染(Volume Rendering)

NeRF采用体渲染技术来合成最终图像。对于一条光线,计算其在场景中的颜色和透明度,并对其进行积分:
C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r ( t ) , d )   d t C(\mathbf{r}) = \int_{t_n}^{t_f} T(t) \sigma(\mathbf{r}(t)) \mathbf{c}(\mathbf{r}(t), \mathbf{d}) \, dt C(r)=tntfT(t)σ(r(t))c(r(t),d)dt
其中,透过率 ( T(t) ) 表示光线从眼睛到深度 ( t ) 位置的光线强度衰减。


损失函数(Loss)

NeRF的训练目标是最小化合成图像与真实图像之间的差异,使用的损失函数是均方误差(MSE):
L = 1 N ∑ i = 1 N ∥ C ^ ( r i ) − C ( r i ) ∥ 2 \mathcal{L} = \frac{1}{N} \sum_{i=1}^{N} \| \hat{C}(\mathbf{r}_i) - C(\mathbf{r}_i) \|^2 L=N1i=1NC^(ri)C(ri)2
其中,( \hat{C}(\mathbf{r}_i) ) 是合成图像,( C(\mathbf{r}_i) ) 是真实图像。


训练与推理

NeRF通过优化神经网络的参数来训练模型,使用随机梯度下降(SGD)或其变种,如Adam优化器。训练过程中,NeRF逐步调整网络参数,使其能够准确拟合输入图像的数据分布。

在推理阶段,NeRF使用训练好的网络参数,对新的视角进行渲染。输入新的三维点和视角方向,通过神经网络计算输出的颜色和密度,经过体渲染技术合成新的视图。


总结

简单介绍了NeRF这个三维重建模型的输入前处理、模型结构、位置编码、体渲染及反渲染技术,NeRF实现了从二维图像到三维重建的过程。其在高质量三维重建和细节捕捉方面的出色表现,使其在学术研究和实际应用中都展示了广阔的前景。

版权声明
本博客内容仅供学习交流,转载请注明出处。

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

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

相关文章

Profinet转ModbusTCP网关模块的配置与应用详解

Profinet转ModbusTCP网关模块(XD-ETHPN20)是一种常见的工业通信设备,广泛应用于现代工业自动化系统中。通过使用Profinet转Modbus TCP网关模块(XD-ETHPN20)将Profinet协议转换成Modbus TCP协议,实现了不同网…

【Web】LitCTF 2024 题解(全)

目录 浏览器也能套娃? 一个....池子? 高亮主题(划掉)背景查看器 百万美元的诱惑 SAS - Serializing Authentication exx 浏览器也能套娃? 随便试一试,一眼ssrf file:///flag直接读本地文件 一个....池子? {…

昇思25天学习打卡营第23天|LSTM+CRF序列标注

Mindspore框架CRF条件随机场概率图模型实现文本序列命名实体标注|(一)序列标注与条件随机场的关系 Mindspore框架CRF条件随机场概率图模型实现文本序列命名实体标注|(二)CRF模型构建 Mindspore框架CRF条件随机场概率图模型实现文本…

IEC104转MQTT网关快速实现了IEC104到MQTT的转换和数据交互

随着智能电网技术的不断进步,IEC 104(IEC 60870-5-104)协议作为电力系统中重要的远动通信标准,正逐步融入更广泛的物联网生态系统中。亚马逊AWS(Amazon Web Services),作为全球领先的云计算服务…

神经网络与注意力机制的权重学习对比:公式探索

神经网络与注意力机制的权重学习对比:公式探索 注意力机制与神经网络权重学习的核心差异 在探讨神经网络与注意力机制的权重学习时,一个核心差异在于它们如何处理输入数据的权重。神经网络通常通过反向传播算法学习权重,而注意力机制则通过学…

python通过omniORBpy调用CORBA

omniORB参考地址: omniORB omniORB - Browse Files at SourceForge.net omniORB - Browse /omniORBpy/omniORBpy-4.3.0 at SourceForge.net Windows 普通使用好像不需要安装omniorb。就对接北向接口业务需要使用python3.10的windows包,但目前好像没有…

vue接入google map自定义marker教程

需求背景 由于客户需求,原来系统接入的高德地图,他们不接受,需要换成google地图。然后就各种百度,各种Google,却不能实现。----无语,就连google地图官方的api也是一坨S-H-I。所以才出现这篇文章。 google地…

SpringBoot整合elasticsearch-java

一、依赖 系统使用的是ElasticSearch8.2.0 <dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.1.0</version> </dependency> 二、配置 1、yml文件配置 elastics…

移动式气象站:便携科技的天气守望者

在科技日新月异的今天&#xff0c;我们身边的许多设备都在向着更加智能化、便携化的方向发展。而在气象观测领域&#xff0c;移动式气象站的出现&#xff0c;不仅改变了传统气象观测的固有模式&#xff0c;更以其灵活性和实时性&#xff0c;在气象监测、灾害预警等领域发挥着越…

苹果电脑暂存盘已满怎么清理 Mac系统如何清理磁盘空间 清理MacBook

Mac电脑用户在长时间使用电脑之后&#xff0c;时常会看到“暂存盘已满”的提示&#xff0c;这无疑会给后续的电脑使用带来烦恼&#xff0c;那么苹果电脑暂存盘已满怎么清理呢&#xff0c;下面将给大家带来一些干货帮你更好地解决这个问题。 首先我们要搞明白为什么暂存盘会满&…

IEC104转MQTT网关支持MQTT对接Ignition、阿里云、华为云、亚马逊AWS、ThingsBoard、Zabbix平台助力远程管理

钡铼推出了一款专为电力系统设计的数据采集网关——IEC104转MQTT网关BE113&#xff0c;感兴趣的朋友接着往下看&#xff1a; 一、网关概述 IEC104转MQTT(Ignition)网关BE113是一款专为电力系统设计的数据采集网关&#xff0c;支持DL/T645和IEC104等协议的设备。上行支持MQTT协…

The Sandbox:虚拟游戏世界生态系统详解

元宇宙由区块链、软件基础、移动应用、控制台等组成&#xff0c;是一个虚拟空间&#xff0c;结合了增强现实&#xff08;AR&#xff09;、虚拟现实&#xff08;VR&#xff09;和在线游戏等元素。它强调互操作性&#xff0c;允许用户在不同的虚拟平台之间自由切换。与传统的现实…

Tensorflow2.0全套学习(持续更新中)

0 简介 1.学习目标 两大核心模块&#xff1a;深度学习经典算法与Tensorflow项目实战 从零开始&#xff0c;详细的网络模型架构与框架实现方法 2.tensorflow&#xff1a;核心开源库&#xff0c;深度学习框架&#xff0c;帮助开发和训练机器学习模型 3.版本2比1有哪些优势 …

【深度学习】GoogLeNet实战

目录 1.猫狗识别 1.1data_partitioning.py 1.2mean_std.py 1.3model.py 1.4model_train.py 1.5model_test.py 2.水果识别 2.1data_partitioning.py 2.2mean_std.py 2.3model.py 2.4model_train.py 2.5model.test.py 1.猫狗识别 1.1data_partitioning.py import o…

杂项——电阻式角度传感器使用

三个引脚&#xff0c;分别接3.3V&#xff0c;GND&#xff0c;ADC引脚。12位ADC有4096份&#xff0c;将360分成4096份&#xff0c;再乘以单片机返回的模拟量的值&#xff0c;即可得到角度。 M0代码 #include "ti_msp_dl_config.h"volatile bool gCheckADC; volatile …

昇思25天学习打卡营第21天|CV-Shufflenet图像分类

打卡 目录 打卡 ShuffleNet 网络介绍 ShuffleNet 模型架构 Pointwise Group Convolution Channel Shuffle ShuffleNet模块 ShuffleNet 模块代码 构建ShuffleNet网络 模块代码 模型训练和评估 模型训练 模型评估 模型预测 ShuffleNet 网络介绍 ShuffleNetV1是旷视科…

vue3+vite纯前端实现自动触发浏览器刷新更新版本内容,并在打包时生成版本号文件

前言 在前端项目中&#xff0c;有时候为了实现自动触发浏览器刷新并更新版本内容&#xff0c;可以采取一系列巧妙的措施。我的项目中是需要在打包时候生成一个version.js文件&#xff0c;用当前打包时间作为版本的唯一标识&#xff0c;然后打包发版 &#xff0c;从实现对版本更…

【Golang 面试基础题】每日 5 题(八)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…

【YashanDB知识库】绑定参数,同一个sql多个执行计划的问题

问题现象 同一个sql有两个执行计划&#xff0c;是否合理&#xff1f; 它的EXECUTIONS&#xff0c;ELAPSED_TIME等统计信息怎么看&#xff0c;是独立分开的还是统一计算的&#xff1f; 如下图&#xff1a; 问题影响版本 tpcc测试&#xff1a;23.2.1.100 问题的风险及影响 …

无人机公司销售需要什么资质

国家民航局于2024年1月1日实施了《无人驾驶航空器飞行管理暂行条例》&#xff0c;根据这个管理条例里面的 第十一条 使用除微型以外的民用无人驾驶航空器从事飞行活动的单位应当具备下列条件&#xff0c;并向国务院民用航空主管部门或者地区民用航空管理机构申请取得民用无人驾…