【NERF】入门学习整理(一)

本文介绍了NERF(Neural Radiance Fields)的基本概念,包括输入输出、位置编码和网络结构。NERF利用深度学习存储三维模型信息,通过体积渲染技术处理64个采样点以生成图像。它通过相机位姿和位置编码捕捉高频细节,并采用全连接层与ResNet结合的网络结构。此外,文章还阐述了Volume Rendering过程和主要参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【NERF】及其变种(二)

1. 【NERF】入门学习整理

1.1 基础含义输入输出

深度学习模型中储存三维模型信息,而不是像三D点云体素的显示表达。
输入:是一个五维的相机位姿(x,y,z,Yaw,Pitch)
输出:4D(R G B 不透明度)
在这里插入图片描述

2.位置编码含义

位置编码(x,y,z):主要是为了将图像中的高频信息体现出来,可以大幅提高图片中的细节质量,不受到周边位置平滑的操作的影响。
在这里插入图片描述

位置是通过 concat 的方式去将这样的信息融合起来。每个位置编码是有两项 sin和 cos。

在这里插入图片描述

3.代码中实际网路结构

像下图中网络隐含层为简单的全连接层(蓝色表示);第五层使用ResNet;

在这里插入图片描述
concat操作含义补充:

在深度学习中,concat操作指的是连接(concatenate)操作,通常用于将两个张量沿着指定的轴(通常是某个维度)进行拼接。这个操作会将两个张量按照指定的轴连接在一起,生成一个新的张量。

在实现上,可以使用深度学习框架提供的函数来进行concat操作,比如在Python中使用TensorFlow或者PyTorch等框架。以TensorFlow为例,可以使用tf.concat()函数来实现concat操作。在PyTorch中,可以使用torch.cat()函数来实现类似的功能。

举例来说,如果有两个形状分别为(2, 3)和(2, 4)的张量,想要在第二个维度上进行拼接,那么可以使用如下代码实现:

import tensorflow as tf

# 创建两个张量
tensor1 = tf.constant([[1, 2, 3], [4, 5, 6]])
tensor2 = tf.constant([[7, 8, 9, 10], [11, 12, 13, 14]])

# 在第二个维度上拼接
result = tf.concat([tensor1, tensor2], axis=1)

print(result)
4.Volume Render部分(64个采样点处理)

NeRF采用的是一种体积雾的渲染方式(CG),在获取一定范围采样点的(r,g,b,a)之后需要再进行特定积分运算,最终得到对应像素最终的(r,g,b,a),在训练时通过光线采样点积分的得到的像素值

代码在这一部分定义采样点实际采样的区域,并将这一组采样点进行积分的方式处理输出为rgb图像

需要的主要参数有:
H,W:图片的高,宽(像素为单位)
K:相机的内参,即焦距
chunk:同时处理的光线数量(batch)
rays:表示每个示例光线的起点和方向(射线)
c2w:相机到世界的变换矩阵
near:光线最近的距离
far:光线最远的距离
在这里插入图片描述
![在这里在这里插入图片描述

5.Volume Render部分(64个采样点处理)

我们可以简单地理解为:
我们使用一个NeRF神经网络采取体积雾的渲染方式,通过已知视角的图片进行训练,然后输入其它相机位姿的参数,从而预测出未出现视角的图片。
此时三维模型的信息就储存在了NeRF神经网络之中! 所以这是一种中"隐式"的表示方法,而不是像点云、体素、网格这种显式的表示方式!
论文输入:
在这里插入图片描述
代码实际输入:
在这里插入图片描述

在这里插入图片描述

网络输入输出说明:
input:(x,y,z,0,φ)代表输入的相机位姿
output:(r,g,b,σ)代表颜色和不透明度
(batch_size=1024, sample_points=64, features=n)
batch_size–在一个训练批次/选代用于训练的像素点/射线数量
sample_points–每条射线在一定范围随机采样点的数量
features–为网络中的输入或输出特征的长度,如62、256128等

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大江东去浪淘尽千古风流人物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值