NeRF学习笔记:从零开始,完美入门指南!
来源:51CTO.COM
时间:2023-12-25 14:25:25 335浏览 收藏
编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《NeRF学习笔记:从零开始,完美入门指南!》,文章讲解的知识点主要包括,如果你对科技周边方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。
神经辐射场究竟是什么
辐射场:由光源发出的光线在场景中的传播和反射过程中所形成的能量分布。通俗来说就是一个函数,记录了空间某个位置处向某个方向的辐射信息,辐射信息(或者说能量分布)其实就是颜色、亮度、阴影等信息。这里的方向需要额外留意,它是NeRF实现真实重建的重要因素之一!
由此引出神经辐射场的概念。
神经辐射场:用神经网络储存空间位置向任意方向的辐射。原文中的描述如下:
更加规范的公式表达如下:
输入3D位置(x,y,z)和2D的视角方向(),输出是颜色和体密度
NeRF具体的网络结果参考原文如下:
- 3D坐标x输入第一个网络fσ,包含8层全连接层,每层256个神经元,ReLU激活;
- 网络fσ输出体密度σ和一个256维向量,该向量与视角方向d送入fc(一层,128通道,ReLU激活)预测RGB;
由上面可知,NeRF是隐式建模,因为模型是储存在MLP里面的,模型就是MLP的参数,这和以往点云和mesh建模不同(点云/mesh是可以直接看到模型的)。NeRF必须查询一个个的三维点,然后渲染成一章图像。这种查看方式或者说渲染方式就叫体渲染。
在看体渲染之前。我们先看一下网络的效果如何:
可以看出,不同视角下颜色是不同的!这是NeRF相对于传统重建非常重要的优势之一~
NeRF的核心:体渲染
下面进入NeRF的第二个核心要点——体渲染。体渲染就是用来将颜色和密度渲染成2D图像的方法!
示意图如下:图a展示了从相机光心位置发出射线,射线上有采样点,将采样点和方向送入MLP获得颜色和体密度。图c展示的的就是沿射线的体密度分布曲线,是通过采样获得的,对曲线进行积分就能获得像素的颜色。这个过程就是体渲染
总结一下体渲染步骤:
- 从相机光心发出穿透每个像素的射线,射线上取三维采样点;
- 将采样点坐标和视角方向送入MLP计算颜色和体密度;
- 按体密度积分(堆叠)颜色信息,形成2D图像
体渲染的公式如下:
当然实际使用的是离散版本公式:
隐式重建流程
在讲完神经辐射场和体渲染后,现在开始完整的重建流程~
在形成一个完成的pipeline之前,还有以下两个问题需要解决:
为了解决上述两个问题,NeRF提出了位置编码和分层采样过程
位置编码:
论文直观展示了位置编码的效果对比:
可以看出,去掉位置编码,模型无法表达高频的几何和纹理信息~
多层采用:
训练流程如下:
实验和总结
评价指标:
实验设置:
实验结果可以看出,各种材质的小球上面的散光也可以很好的表现出来~
消融实验:
总结
文提出的神经辐射场,从相机光心发出穿过像素的采样射线,在射线上取点,将其三维位置和视角方向用一个MLP映射到体密度和颜色,然后用体渲染堆叠采样射线上的体密度和颜色,获得像素值。像素值与GT图像求误差后反向传播,优化MLP参数。本文用这样的隐式重建方法实现了照片级的具有真实感的模型重建和渲染。
缺陷:
- 渲染、训练速度慢;
- 对视角数量和分布有较高要求;
- 难以拓展到有背景的或者较大的场景。
原文链接:https://mp.weixin.qq.com/s/ctDBTaLWuHTM9MONrAor4g
文中关于自动驾驶,技术的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《NeRF学习笔记:从零开始,完美入门指南!》文章吧,也可关注golang学习网公众号了解相关技术文章。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
314 收藏
-
486 收藏
-
340 收藏
-
148 收藏
-
432 收藏
-
379 收藏
-
353 收藏
-
486 收藏
-
478 收藏
-
290 收藏
-
158 收藏
-
224 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习