Nerf基础学习记录

news2024/12/23 17:22:39

笔记

  • 什么是nerf
  • 一些值得注意的理论点

什么是nerf

Nerf 是可以理解成是一种隐式的3D表达方式。 隐式表达可以理解成是用一个条件或者方程来表示一个3D几何,没有实实在在的几何形状。相反,显式表达就诸如mesh, 点云,体素这类的,能够实实在在看到的。Nerf的网络结构非常简单,也就是一个mlp。Nerf主要的目的,就是从给到的大量照片中学习,从而可以渲染任意视角下的RGB图像。它的输入数据是(x,y,z, ϕ \phi ϕ, θ \theta θ), ϕ \phi ϕ, θ \theta θ可以理解成相机位姿,分别代表的是当前相机对世界坐标系的旋转和平移。(x,y,z)表示的是跟着从当前视角发出的光线经常采样得到的离散的点。因为不知道3D物体的边界在哪里,所以要在3D空间种进行离散采样。 它的应用, 包括新视点合成,输入稀疏的视点输出连续的RGB信息,360重建,大场景重建,人体重建,3D 风格迁移。镜面反射场景重建。(镜子和透明场景是很难用传统的方式重建的。)

Nerf的一些问题:

  • 需要足够多的图像
  • 光照条件要一致,不能差距太大。
  • 没有泛化能力。
  • 渲染速度慢
  • 对输入图像要求很高,不能模糊或者有畸变
  • 位姿必须要准

一些值得注意的理论点

Nerf输出的东西是density和RGB颜色。所谓的density就是表示了有没有光线或者有多少光线和3D边界相交了,可以理解成density表示了nerf学到的3D信息,所以一些学术论文会称nerf学到3Dshape为soft shape。Nerf 的步骤可以分成以下几步

  • 层级采样 hierarchical sampling
  • 位置编码 positional encoding
  • MLP 学习
  • volume rendering

首先为什么是层级采样。这个就是一个coarse-to-fine的过程,也通常是3D任务当中很常见的处理方式。因为Nerf如果使用大量的均匀采样点,第一会导致计算资源不够,第二呢就是也许有很多点都没有意义,因为离3D物体的边界很远。所以先使用稀疏采样,然后计算光到这个点的不透明度来作为权重,来判断这个点离物体边界远不远。这个很好理解,就是如果一个点离目标边界很远的话,光穿过它,不透明度是没有影响的。选择权重最大的那个点,在它周围进行稠密采样,这样采到的点,就大部分是在目标周围的了。
在这里插入图片描述

就这样直接让MLP学习的话,他是学习不到一些高频信息的。也就是说学习不到细节,输出的结果都是只有大致的形状,细节都很模糊。通过这样一个位置编码,它可以将这样低纬度的信息映射到更高纬度上去,从而使用高频函数将颜色和几何形状映射到高维空间拟合包含高频变化的数据。这个就是为什么要使用位置编码的原因。

MLP学习的过程是很简单,但是这里的本质其实是在过拟合这个MLP。让训练的这个MLP完全记住输入中的所有信息。当给到任意视角,就相当于在查询 MLP拟合的参数中表达的信息。所以这也是为什么最早的nerf是没有泛化性可言的原因。

最后volume rendering 目的就是将输出的每一个离散点的density和颜色做一个积分得到当前 ray的颜色,然后对每一条ray都这么做,就可以得到图像了。
在这里插入图片描述
nerf的损失函数也就是两个L2 loss 相加。
在这里插入图片描述
表达的是coarse 和 fine 两个阶段的渲染图像和GT之间的差值。

最后简单记一下metrics
PSNR (Peak signal-to-Noise Ratio) , 信噪比越大,差异就越小。
SSIM(structural similarity index) 越大差异越小 。
LPIPS (learned Perceptual image patch similarity)

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

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

相关文章

【if条件、for循环、数据框连接、表达矩阵画箱线图】

编程能力,就是解决问题的能力,也是变优秀的能力 From 生物技能树 R语言基础第七节 文章目录 1.长脚本管理方式if(F){....}分成多个脚本,每个脚本最后保存Rdata,下一个脚本开头清空再加载 2.实战项目的组织方式方法(一&…

CTFshow misc

第一题1 打开图片直接就是flag 第二题0 放入010发现文件头有png 更换后缀 获得flag 第三题1 下载之后发现是bpg后缀 用在线工具转换为png获得flag 第四题 0 把六个文件后缀都改为png即可获得flag

springboot005学生心理咨询评估系统

springboot005学生心理咨询评估系统 亲测完美运行带论文:获取源码,私信评论或者v:niliuapp 运行视频 包含的文件列表(含论文) 数据库脚本:db.sql其他文件:ppt.ppt论文:开题.doc论文&#xf…

二.使用PgAdmin连接Postgresql

二.使用PgAdmin连接Postgresql PostgreSQL是一种开源的对象关系型数据库管理系统(ORDBMS),它支持大部分SQL标准并提供了许多高级功能,例如事务、外键、视图、触发器等。PostgreSQL由PostgreSQL全球开发组维护和开发,它是一种高度可扩展的数据库系统,可以在各种操作系统…

Java | Leetcode Java题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; class Solution {public int numDecodings(String s) {int n s.length();// a f[i-2], b f[i-1], cf[i]int a 0, b 1, c 0;for (int i 1; i < n; i) {c 0;if (s.charAt(i - 1) ! 0) {c b;}if (i > 1 && s.charAt(i …

49-Qt控件详解:ltemViewsltemWidgets

1.List View:清单视图 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QListView> //字符串列表模型 #include <QStringListModel> #include <QMessageBox> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcl…

Flutter+Getx仿小米商城项目实战教程又新增了Flutter调用原生地图

FlutterGetx仿小米商城项目实战教程基于Flutter3.x录制&#xff0c;课程紧贴企业需求&#xff0c;目前已完结176讲。教程所讲内容支持Android、Ios、华为鸿蒙OS&#xff0c;教程更新于2024年4月09日新增 Flutter 调用百度地图、新增Flutter充电桩项目地图实战。支持2024年3月29…

RAW转换和图像编辑工具:Capture One 23 Pro (win/mac)中文专业版

Capture One 23是一款功能强大的桌面版照片编辑软件&#xff0c;由丹麦PHASE ONE飞思数码公司开发。 以下是该软件的一些主要特点&#xff1a; 强大的RAW处理功能&#xff1a;Capture One 23支持多种品牌的相机和镜头&#xff0c;提供了丰富的RAW处理工具&#xff0c;包括曝光、…

适合建站的香港服务器有哪些,企业和个人建站的

香港服务器适合外贸建站、个人和企业建站&#xff0c;尤其是中小企业官网非常适合放在香港服务器上&#xff0c;因为香港服务器在国内外的访问速度都很快&#xff0c;也就意味着全球客户都能访问到你的网站。 对于很多新手小白来说不知道怎么才能买到靠谱稳定的香港服务器&…

C语言 | Leetcode C语言题解之第91题解码方法

题目&#xff1a; 题解&#xff1a; int numDecodings(char* s) {int n strlen(s);// a f[i-2], b f[i-1], c f[i]int a 0, b 1, c;for (int i 1; i < n; i) {c 0;if (s[i - 1] ! 0) {c b;}if (i > 1 && s[i - 2] ! 0 && ((s[i - 2] - 0) * 10…

C++进阶:哈希(2)位图与布隆过滤器

目录 1. 位图&#xff08;bitset&#xff09;1.1 引子&#xff1a;海量整形数据的处理1.2 结构描述1.3 位图实现1.4 位图相关题目练习 2. 布隆过滤器&#xff08;BloomFilter&#xff09;2.1 引子&#xff1a;海量非int类型数据处理&#xff08;string&#xff09;2.2 结构描述…

【Linux:环境变量】

环境变量一般是指在操作系统中用来指定操作系统环境的一些参数 常见的环境变量&#xff1a; PATH 指定可执行程序的搜索路径 系统级的文件&#xff1a;/etc/bashrc 用户级文件&#xff1a;~/.bashrc ~/.bash_profile HOME 指定用户的主要工作目录&#xff08;当前用…

react18【系列实用教程】useReducer —— 升级版的 useState (2024最新版)

useReducer 可看做升级版的 useState &#xff0c;其强大之处在于&#xff0c;可以自定义复杂的响应式变量修改逻辑。 useReducer 语法 useReducer 是 hook 函数 第一个参数&#xff08;必要&#xff09;&#xff1a; 自定义的 reducer 函数&#xff08;详见下文介绍&#xff…

英伟达发布 VILA 视觉语言模型,实现多图像推理、增强型上下文学习,性能超越 LLaVA-1.5

前言 近年来&#xff0c;大型语言模型 (LLM) 的发展取得了显著的成果&#xff0c;并逐渐应用于多模态领域&#xff0c;例如视觉语言模型 (VLM)。VLM 旨在将 LLM 的强大能力扩展到视觉领域&#xff0c;使其能够理解和处理图像和文本信息&#xff0c;并完成诸如视觉问答、图像描…

crossover24中文破解版百度云免费下载 crossover永久免激活汉化包安装使用教程 crossover24激活码分享

原则上&#xff0c;我们不提倡各位使用破解版&#xff0c;这是处于对知识产权的保护&#xff0c;也是为了各位的长远利益。使用正版你可以获得更优质的服务和完善的产品功能。 但仍然有部分用户由于预算、使用习惯等原因&#xff0c;需要破解版。所以本文不讲原则&#xff0c;…

异步编程CompletableFuture总结

文章目录 1. 简介&#xff1a;2. 比较1、传统方式2、使用CompletableFuture&#xff1a;异步执行返回值 3、组合处理&#xff1a;anyOfallof : 4. 异步回调&#xff1a;thenAcceptthenApplywhenComplete等同于 thenAccepthandel()等同于thenApply 5. 常用方法&#xff1a;1、su…

【SQL】SQL常见面试题总结(3)

目录 1、聚合函数1.1、SQL 类别高难度试卷得分的截断平均值&#xff08;较难&#xff09;1.2、统计作答次数1.3、得分不小于平均分的最低分 2、分组查询2.1、平均活跃天数和月活人数2.2、月总刷题数和日均刷题数2.3、未完成试卷数大于 1 的有效用户&#xff08;较难&#xff09…

QCustomplot---动态图

QCustomplot绘制动态曲线图-游标及鼠标跟踪显示数值_qcustomplot 游标-CSDN博客 m_timer new QTimer(this);connect(m_timer,SIGNAL(timeout()),this,SLOT(slotTimeout()));m_timer->start(50); void MainWindow::slotTimeout() {static int p0;static int i0;double m,m1…

C语言 | Leetcode C语言题解之第92题反转链表II

题目&#xff1a; 题解&#xff1a; struct ListNode *reverseBetween(struct ListNode *head, int left, int right) {// 因为头节点有可能发生变化&#xff0c;使用虚拟头节点可以避免复杂的分类讨论struct ListNode *dummyNode malloc(sizeof(struct ListNode));dummyNode…

C++ | Leetcode C++题解之第92题反转链表II

题目&#xff1a; 题解&#xff1a; class Solution { public:ListNode *reverseBetween(ListNode *head, int left, int right) {// 设置 dummyNode 是这一类问题的一般做法ListNode *dummyNode new ListNode(-1);dummyNode->next head;ListNode *pre dummyNode;for (i…