当前位置: 首页 > news >正文

NERF论文笔记(1/2)

NeRF:Representing Scene as Neural Radiance Fields for View Synthesis 笔记

摘要

实现了一个任意视角视图生成算法:输入稀疏的场景图像,通过优化连续的Volumetric场景函数实现;用全连接深度网络表达场景,输入是一个连续的5维坐标,3D坐标+2D角度(航向、俯仰角),输出Volume density和依赖于视图的emitted radiance,查询5维坐标并用经典的Volume Rendering把输出的颜色与强度投影到图像。

介绍

a. march camera rays,我理解为从焦点投射射线到场景,获取3D坐标点。
b. 用3D点 x \bold{x} x与对应的2D角度(用单位向量 d \bold{d} d)输入,输出颜色 c \bold{c} c和强度 σ \sigma σ
c. 合成图像。

Neural Radiance Field场景表达

F θ : ( x , d ) → ( c , σ ) F_{\theta}:(\bold{x},\bold{d})\rarr(\bold{c},\sigma) Fθ:(x,d)(c,σ)
输出 σ \sigma σ只与输入位置坐标 x \bold{x} x有关, c \bold{c} c则与 x \bold{x} x d \bold{d} d有关。

网络结构,输入 x \bold{x} x的8层全连接层,均为256通道,各层带ReLU激活,输出 σ \sigma σ、256维特征,此特征再与 d \bold{d} d聚合,输入一层带ReLU的全连接层,输出 c \bold{c} c

Volume Rendering

位置坐标 x \bold{x} x表达为相机射线 r \bold{r} r r ( t ) = o + t d \bold{r}(t)=\bold{o}+t\bold{d} r(t)=o+td,t是从焦点 o o o出发的长度,积分上下界是远端、近端。
C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r , d ) d t T ( t ) = e x p ( − ∫ t n t σ ( r ( s ) ) d s ) C(\bold{r})=\int_{t_{n}}^{t_{f}} T(t)\sigma(\bold{r}(t))\bold{c}(\bold{r},d)dt\\T(t)=exp(-\int_{t_{n}}^t\sigma(\bold{r}(s))ds) C(r)=tntfT(t)σ(r(t))c(r,d)dtT(t)=exp(tntσ(r(s))ds)

T ( t ) T(t) T(t)的含义从 t n t_n tn t t t累积的transmittance,“the accumulated transmittance along the ray”,是射线从 t n t_n tn t t t未遇到其他粒子的概率。
求该积分的数值方法,Deterministic quadrature,笔者初步理解是一种数值计算方法,离散化近似:将区间分为N段,从每一段随机取样。
t i ∼ U [ t n + i − 1 N ( t f − t n ) , t n + i N ( t f − t n ) ] t_i\sim U[t_n+\frac{i-1}{N}(t_f-t_n),t_n+\frac{i}{N}(t_f-t_n)] tiU[tn+Ni1(tftn),tn+Ni(tftn)]
参考Volume Rendering综述,
C ^ ( r ) = ∑ i = 1 N T i ( 1 − e x p ( − σ i δ i ) ) c i T i = e x p ( − ∑ j = 1 i − 1 σ j δ j ) δ j = t j + 1 − t j \hat C(\bold{r})=\sum_{i=1}^NT_i(1-exp(-\sigma_i\delta_i))\bold{c}_i\\ T_i=exp(-\sum_{j=1}^{i-1}\sigma_j\delta_j)\\ \delta_j=t_{j+1}-t_j C^(r)=i=1NTi(1exp(σiδi))ciTi=exp(j=1i1σjδj)δj=tj+1tj

两项技术改进

只有上述设计不能达到SOTA,为此添加了两项重要改进,其中第二项是为了高效地实现第一项。

  1. 位置编码

    直接输入上述5维做渲染,在场景中颜色和几何的高频变化的条件下表现较差,有参考证明深度网络偏向于学习低频函数,并发现在输入网络前用高频函数将数据映射到更高维,网络能更好拟合含有高频变化的数据。5维输入的各个元素 p p p被映射为长为2L的向量
    γ ( p ) = ( s i n ( 2 0 π p ) , c o s ( 2 0 π p ) , . . . , s i n ( 2 L − 1 π p ) , c o s ( 2 L − 1 π p ) ) \gamma(p)=(sin(2^0{\pi}p),cos(2^0{\pi}p),...,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))
    其中,位置元素L=10,方向元素L=4;各维元素均归一化到 [ − 1 , 1 ] [-1,1] [1,1]
    Transformer有相似处理,但它的目的是给序列提供位置标签,因为Transformer结构不能标记顺序;NERF中的位置编码则是为了将输入升维以使得它的MLP能拟合更高频函数;从投影重建蛋白质3D结构的模型方法也使用了该思路。

  2. 多层采样
    采用两个网络,一个粗略,一个精细。首先用第一个网络生成颜色,每条射线输入 N c N_c Nc个位置,然后用其结果引导重新采样,使得 N f N_f Nf个采样点集中到体元附近,提高有效信息位置的样本权重,使用两次的采样来渲染。

相关文章:

NERF论文笔记(1/2)

NeRF:Representing Scene as Neural Radiance Fields for View Synthesis 笔记 摘要 实现了一个任意视角视图生成算法:输入稀疏的场景图像,通过优化连续的Volumetric场景函数实现;用全连接深度网络表达场景,输入是一个连续的5维…...

深入理解nginx一致性哈希负载均衡模块[上]

1. 引言 在现代的网络应用中,负载均衡是一个至关重要的组件。它能够分配流量到多个服务器上,实现高可用性和性能扩展。Nginx是一个广泛使用的高性能Web服务器和反向代理服务器,其负载均衡模块提供了多种算法来实现流量的分发。其中&#xff0…...

【Linux】Docker安装

卸载旧版Docker 新版docker无法覆盖旧版的,所以需要先卸载原来的旧版本 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-eng…...

动态SLAM论文阅读笔记

近期阅读了许多动态SLAM相关的论文,它们基本都是基于ORB-SLAM算法,下面简单记录一下它们的主要特点: 1.DynaSLAM 采用CNN网络进行分割多视图几何辅助的方式来判断动态点,并进行了背景修复工作。 2.Detect-SLAM 实时性问题&…...

数据挖掘:航空公司的客户价值分析

需求分析 理解并掌握聚类分析方法,掌握数据的标准化,掌握寻找最佳聚类数,掌握聚类的绘图,掌握聚类分析的应用场景。 系统实现 实验流程分析 借助航空公司数据,对客户进行分类对不同类别的客户进行特征分析&#xf…...

GIS之深度学习08:安装GPU环境下的pytorch

环境: cuda:12.1.1 cudnn:12.x pytorch:2.2.0 torchvision:0.17.0 Python:3.8 操作系统:win (本文安装一半才发现pytorch与cuda未对应,重新安装了cuda后才开始的&a…...

防患未然,OceanBase巡检工具应用实践——《OceanBase诊断系列》之五

1. OceanBase为什么要做巡检功能 尽管OceanBase拥有很好的MySQL兼容性,但在长期的生产环境中,部署不符合标准规范、硬件支持异常,或配置项错误等问题,这些短期不会出现的问题,仍会对数据库集群构成潜在的巨大风险。为…...

数据结构从入门到精通——队列

队列 前言一、队列1.1队列的概念及结构1.2队列的实现1.3队列的实现1.4扩展 二、队列面试题三、队列的具体实现代码Queue.hQueue.ctest.c队列的初始化队列的销毁入队列出队列返回队头元素返回队尾元素检测队列是否为空检测元素个数 前言 队列是一种特殊的线性数据结构&#xff…...

深度学习相关概念及术语总结

目录 1.CNN2.RNN3.LSTM4.NLP5.CV6.正向传播7.反向传播8.sigmoid 函数9.ReLU函数10.假设函数11.损失函数12.代价函数 1.CNN CNN 是卷积神经网络(Convolutional Neural Network)的缩写。卷积神经网络是一种深度学习模型,专门用于处理具有网格状…...

uniapp发行H5获取当前页面query

阅读uni的文档大致可得通过 onLoad与 onShow()的形参都能获取页面传递的参数,例如在开发时鼠标移动到方法上可以看到此方法的简短介绍 实际这里说的是打开当前页面的参数,在小程序端的时候测试并无问题,但是发行到H5时首页加载会造成参数获取…...

Flutter中动画的实现

动画三要素 控制动画的三要素:Animation、Tween、和AnmaitionController Animation: 产生的值的序列,有CurveAnimation等子类,, 可以将值赋值给Widget的宽高或其他属性,进而控制widget发生变化 Tween&#…...

Elasticsearch从入门到精通-03基本语法学习

Elasticsearch从入门到精通-03基本语法学习 👏作者简介:大家好,我是程序员行走的鱼 📖 本篇主要介绍和大家一块学习一下ES基本语法,主要包括索引管理、文档管理、映射管理等内容 1.1 了解Restful ES对数据进行增、删、改、查是以…...

【黑马程序员】STL实战--演讲比赛管理系统

文章目录 演讲比赛管理系统需求说明比赛规则程序功能 创建管理类功能描述创建演讲比赛管理类 菜单功能添加菜单成员函数声明菜单成员函数实现菜单功能测试 退出功能添加退出功能声明退出成员函数实现退出功能测试 演讲比赛功能功能分析创建选手类比赛成员属性添加初始化属性创建…...

一文帮助快速入门Django

文章目录 创建django项目应用app配置pycharm虚拟环境打包依赖 路由传统路由include路由分发namenamespace 视图中间件orm关系对象映射操作表数据库配置model常见字段及参数orm基本操作 cookie和sessiondemo类视图 创建django项目 指定版本安装django:pip install dj…...

基于springboot实现图书推荐系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现图书馆推荐系统演示 摘要 时代的变化速度实在超出人类的所料,21世纪,计算机已经发展到各行各业,各个地区,它的载体媒介-计算机,大众称之为的电脑,是一种特高速的科学仪器,比…...

微信小程序实现上拉加载更多

一、前情提要 微信小程序中实现上拉加载更多,其实就是pc端项目的分页。使用的是scroll-view,scroll-view详情在微信开发文档/开发/组件/视图容器中。每次上拉,就是在原有数据基础上,拼接/合并上本次上拉请求得到的数据。这里采用…...

计算机网络——概述

计算机网络——概述 计算机网络的定义互连网(internet)互联网(Internet)互联网基础结构发展的三个阶段第一个阶段——APPANET第二阶段——商业化和三级架构第三阶段——全球范围多层次的ISP结构 ISP的作用终端互联网的组成边缘部分…...

kafka Interceptors and Listeners

Interceptors ProducerInterceptor https://www.cnblogs.com/huxi2b/p/7072447.html Producer拦截器(interceptor)是个相当新的功能,它和consumer端interceptor是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑。 对于producer而言&…...

【面试题】mysql常见面试题及答案总结

事务中的ACID原则是什么? Mysql是如何实现或者保障ACID的? ACID原则是数据库事务管理中必须满足的四个基本属性,确保了数据库事务的可靠性和数据完整性。 简写全称解释实现A原子性(Atomicity)一个事务被视为一个不可分割的操作序列&#…...

C++ 类的前向声明的用法

我们知道C的类应当是先定义,然后使用。但在处理相对复杂的问题、考虑类的组合时,很可能遇到俩个类相互引用的情况,这种情况称为循环依赖。 例如: class A { public:void f(B b);//以B类对象b为形参的成员函数//这里编译错位&…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...