77、TensoRF: Tensorial Radiance Fields

news2025/2/28 5:22:13

简介

主页:https://apchenstu.github.io/TensoRF/
总体而言,该文章主要内容于DVGO类似

将场景的亮度场建模为4D张量,它表示一个具有每体素多通道特征的3D体素网格,中心思想是将4D场景张量分解为多个紧凑低秩张量分量,应用传统的CANDECOMP/PARAFAC (CP)分解-将张量分解为具有紧凑向量的一级分量。

此外,引入了一种新的向量矩阵(VM)分解,它放松了张量的两个模态的低秩约束,并将张量分解为紧凑的向量和矩阵因子。

CP和VM分解模型可以显著降低内存占用

与NeRF相比,具有CP分解的TensoRF实现了快速重建(< 30分钟),具有更好的渲染质量,甚至更小的模型大小(< 4 MB)

带有VM分解的TensoRF进一步提高了渲染质量,并优于之前最先进的方法,同时减少了重建时间(< 10分钟)并保留了紧凑的模型大小(< 75 MB)
在这里插入图片描述
左图:将场景建模为张量辐射场,使用一组向量(v)和矩阵(M)描述场景外观和沿其相应轴的几何形状。这些向量/矩阵因子用于计算体积密度 σ 和视景相关的RGB颜色,通过向量矩阵外积进行真实的体绘制。右:与之前的方法和并发方法相比,TensoRF模型可以实现最好的渲染质量,并且是唯一可以同时实现快速重建和高紧凑性的方法

张量分解

在这里插入图片描述
张量分解。左:CP分解,将张量分解为向量外积的和。右:向量矩阵分解,它将张量分解为向量矩阵外积的和。

受CP和块项分解的启发,本文建议将辐射场的全张量分解为每个张量分量的多个向量和矩阵因子,考虑向量-矩阵外积之和,虽然这与CP中纯基于矢量的分解相比增加了模型规模,但使每个分量都能表达更高阶的更复杂张量数据,从而显著减少了亮度场建模所需的分量数量。因此,提出了一种新的矢量矩阵(VM)分解技术,有效地减少了相同表达容量所需的分量数量,从而实现更快的重建和更好的渲染

CP decomposition

三维张量 T ∈ R I × J × K T∈R^{I×J×K} TRI×J×K, CP分解将其分解为向量外积的和
在这里插入图片描述
其中 v r 1 ◦ v r 2 ◦ v r 3 v^1_r ◦ v^2_r ◦ v^3_r vr1vr2vr3 对应一个秩一张量分量, v r 1 ∈ R I , v r 2 ∈ R J , v r 3 ∈ R K v^1_r∈R^I, v^2_r∈R^J, v^3_r∈R^K vr1RI,vr2RJ,vr3RK 是第 r 个分量的三种模态的因式分解向量。

每个张量元素 T i j k T_{ i j k } Tijk是标量积的和
在这里插入图片描述
i j k表示三种模态的指标

由于CP分解的紧凑性太高,需要很多组件来建模复杂场景,导致辐射场重构的计算成本很高

Vector-Matrix (VM) decomposition

VM分解将一个张量分解为多个向量和矩阵
在这里插入图片描述

M r 2 , 3 ∈ R J × K , M r 1 , 3 ∈ R I × K , M r 1 , 2 ∈ R I × J M^{2,3}_r ∈ R^{J×K} , M^{1,3}_r ∈ R^{I×K} , M^{1,2}_r ∈ R^{I×J} Mr2,3RJ×K,Mr1,3RI×K,Mr1,2RI×J,为三种模态中的两种(用上标表示)的矩阵因子。对于每个组件,将其两个模态秩放宽为任意大,而将第三个模态限制为秩1

三个张量模式对应于XYZ轴,因此直接用XYZ表示模式,在三维场景表示的背景下,对大多数场景考虑 R 1 = R 2 = R 3 = R R_1 = R_2 = R_3 = R R1=R2=R3=R,这反映了一个场景在它的三个轴上分布和表现一样复杂

在这里插入图片描述
将三种类型的分量张量表示为 A r X = v r X ◦ M r Y Z , A r Y = v r Y ◦ M r X Z , A r Z = v r Z ◦ M r X Y A_r^X = v^X_r ◦ M^{Y Z}_r, A_r^Y = v^Y_r◦M^{XZ}_r, A_r^Z = v^Z_r◦M^{XY}_r ArX=vrXMrYZ,ArY=vrYMrXZ,ArZ=vrZMrXY,A的上标XYZ表示不同类型的组件
在这里插入图片描述
m ∈ X Y Z , A r , i j k X = v r , i X ◦ M r , j k Y Z , A r , i j k Y = v r , j Y ◦ M r , i k X Z , A r , i j k Z = v r , k Z ◦ M r , i j X Y m ∈ X Y Z, A_{r,ijk}^X = v^X_{r,i} ◦ M^{Y Z}_{r,jk}, A_{r,ijk}^Y = v^Y_{r,j}◦M^{XZ}_{r,ik}, A_{r,ijk}^Z = v^Z_{r,k}◦M^{XY}_{r,ij} mXYZ,Ar,ijkX=vr,iXMr,jkYZ,Ar,ijkY=vr,jYMr,ikXZ,Ar,ijkZ=vr,kZMr,ijXY

实现流程

在这里插入图片描述
将亮度场建模为张量,使用一组向量(v)和矩阵(M),它们沿着相应的(XYZ)轴描述场景,并用于计算可微射线行进中的体积密度σ和与视图相关的颜色c。对于每个阴影位置x = (x, y, z),使用向量/矩阵因子中的线性/双线性采样值来有效地计算张量分量的相应三线性插值值(A(x))。将密度分量值( A σ ( x ) A_σ(x) Aσ(x))求和,直接得到体积密度(σ)。外观值( A c ( x ) A_c(x) Ac(x))被连接成一个向量( ⊕ [ A c m ( x ) ] m ⊕[A_c^m(x)]_m [Acm(x)]m),然后乘以外观矩阵 B,并发送到解码函数 S 进行RGB颜色©回归

划分为几何网格 G σ G_σ Gσ 和外观网格 G c G_c Gc,分别对体积密度 σ 和与视图相关的颜色 c 进行建模

在这里插入图片描述
G σ ( x ) , G c ( x ) G_σ(x), G_c(x) Gσ(x)Gc(x) 表示来自位置 x 的两个网格的三线性插值特征。将 G σ G_σ Gσ G c G_c Gc建模为因式张量

G σ ∈ R I × J × K G_σ∈R^{I×J×K} GσRI×J×K 是3D张量, G c ∈ R I × J × K × P G_c∈R^{I×J×K×P} GcRI×J×K×P是4D张量。其中 I、J、K 分别对应特征网格沿X、Y、Z轴的分辨率,P(27) 为外观特征通道数

几何网格

在这里插入图片描述

外观网格

外观张量 G c G_c Gc 有一个额外的模式对应于特征通道维度。与XYZ模式相比,此模式通常具有较低的维数,从而导致较低的秩。在矩阵分解中,没有将该模态与其他模态组合在一起,而是在分解时只使用向量 b r b_r br表示该模态
在这里插入图片描述
3 R c 3R_c 3Rc 向量 b r b_r br 来匹配组件的总数

采用 R σ ≪ I , J , K , R c ≪ I , J , K R_σ≪I, J, K, R_c≪I, J, K RσI,J,K,RcI,J,K,从而形成高度紧凑的表示,可以对高分辨率的密集网格进行编码

v σ , r X , M σ , r Y Z , v c , r X , M c , r Y Z v^X_{σ,r}, M^{Y Z}_{σ,r} , v^X_{c,r}, M^{Y Z}_{c,r} vσ,rX,Mσ,rYZ,vc,rX,Mc,rYZ,描述场景几何和外观沿其相应轴的空间分布。外观特征模态向量 b r b_r br 表示全局外观相关性。通过将所有 b r b_r br 作为列叠加在一起,得到一个 P × 3 R c P × 3R_c P×3Rc 矩阵B;这个矩阵B也可以被视为一个全局外观字典,它抽象了整个场景的外观共性

采样

通过VM因式分解,可以直接有效地求出单个体素在指数 ijk 处的密度值 G σ , i j k G_{σ,ijk} Gσ,ijk
在这里插入图片描述
计算每个 A σ , r , i j k m A^m_{σ,r,ijk} Aσ,r,ijkm只需要从对应的向量和矩阵因子中索引和相乘两个值

对于外观网格 G c G_c Gc,需要计算一个完整的 P 通道特征向量,着色函数 S需要它作为输入
在这里插入图片描述
在这里,对于特征模式没有额外的索引,因为计算了一个完整的向量。通过重新排序计算进一步简化了公式10。为此,将 ⊕ [ A c , i j k m ] m , r ⊕[A^m_{c,ijk}]_{m,r} [Ac,ijkm]m,r表示为集合 m = X, Y, Z和 r = 1,… R c R_c Rc时所有 A c , r , i j k m A^m_{c,r,ijk} Ac,r,ijkm 值的向量,是 3 R c 3R_c 3Rc 维的向量;在实践中,⊕ 也可以被认为是将所有标量值(1通道向量)连接成 3 R c 3R_c 3Rc 通道向量的连接运算符。使用矩阵B来堆叠所有 b r b_r br
在这里插入图片描述

三线性插值、体渲染

这部分参考DVGO

实验

在这里插入图片描述

对于大多数数据集,只应用 L 1 L_1 L1 稀疏性损失是足够的。然而,对于有很少输入图像的真实数据集(如LLFF)或不完美的捕获条件(如Tanks和Temples,具有不同的曝光和不一致的掩模),TV 损失比 L 1 L_1 L1范数损失更有效

在这里插入图片描述
L 1 L_1 L1
在这里插入图片描述

TV
在这里插入图片描述
这里 △ 2 △^2 2 是矩阵/向量因子中相邻值的平方差;在TV损失中对外观参数施加较小的权重(额外加权0.1)。在使用这个 TV 损耗时使用 ω = 1 ω = 1 ω=1

使用adam优化器,张量因子的初始学习率为0.02,MLP解码器的初始学习率为0.001(当使用神经特征时),不同的数据集采用不同的迭代数,每个批次采样4096条射线,代码运行在一个 Tesla V100 GPU (16GB)

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

06 | 要找工作了,应该如何准备?

前言 前言&#xff1a;找工作更像相亲&#xff0c;总有一款适合自己。简历就像一份广告&#xff0c;对方要什么你写什么&#xff0c;而不是你有什么。 文章目录前言一、找工作的流程二、做法1. 分析职位描述&#xff08;JD&#xff09;1&#xff09;组成2&#xff09;做法一、找…

【数据结构】7.2 线性表的查找

7.2.1 顺序查找&#xff08;线性查找&#xff09; 应用范围&#xff1a; 顺序表或线性链表表示的静态查找表。表内元素之间可以无序。 数据元素类型定义&#xff1a; 数据表可能有多个数据域的值&#xff0c;比如成绩表中有姓名、成绩、总分等。所以用结构类型来表示要存储…

背景颜色和背景图片

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <!--这行代码是告诉浏览器需要使用"utf-8"字符集打开 因为HBuilder工具是采用utf-8编码的 注意&#xff1a;并不是设置当前页面的字符集编码方式--> …

SpringMVC(十二):SpringMVC文件下载

文章目录 SpringMVC文件下载 一、下载之前的准备 二、下载的基本流程 三、下载的请求数据 1、下载的后台实现 2、下载的示例代码 SpringMVC文件下载 一、下载之前的准备 展示所有玩家信息&#xff0c;包括图片展示。 <% page contentType"text/html;charset…

Linux_常见命令

1.ls ls -l 列出隐藏文件&#xff0c;并显示10项权限,类似如同下图 在部分发行版本的linux下&#xff0c;ll等同于ls -l 首先&#xff0c;第一列为-则代表着这一列是文件&#xff0c; 第一列为d则代表这一列为目录 除了第一位&#xff0c;那么其他还有9位&#xff0c;分为3组…

学习shell与shell script 02_vim 的保存恢复与打开时的警告信息

[1] Stopped vim test.txt $kill -9 %1[1] Stopped vim test.txt $jobs [1] Killed vim test.txt编辑一个文件后&#xff0c;使用Ctrl z 挂起。然后被不正常中断&#xff0c;导致暂存盘无法通过正常的流程来结束。所以暂…

AHB协议(2/2)

Charpter 4 Bus Interconnection 4.1 互联结构 互联结构在系统中提供了M端和S端的连接。单一的M端只需要使用一个解码器和多路选择器。 一个多M端的系统中需要使用提供仲裁和将信号从不同的M端分发到对应的S端的互联结构。分发结构需要地址&#xff0c;控制信号和写数据。 4…

ARM uboot的常用命令

一、uboot 的常用命令1 1、类似 linux 终端的行缓冲命令行 (1) 行缓冲的意思就是&#xff1a;当我们向终端命令行输入命令的时候&#xff0c;这些命令没有立即被系统识别&#xff0c;而是被缓冲到一个缓存区&#xff08;也就是系统认为我们还没有输入完&#xff09;&#xff…

2.5 变量与常量

文章目录1.变量1.1 变量的声明1.2 变量的命名1.3 变量的初始化1.4 变量的使用2 常量1.变量 和其他的编程语言一样&#xff0c;JAVA也是用变量来存储值的&#xff0c;常量可以理解为一种特殊的变量&#xff0c;其特殊在它的值是不变的。 1.1 变量的声明 声明变量本质就是创造…

自动驾驶感知——环境感知的基本概念

文章目录1. 智能汽车概述1.1 汽车新四化1.2 智能网联汽车1.3 SAE J3016自动驾驶分级标准2. 环境感知定义2.1 智能网联汽车系统架构2.2 环境感知定义及对象3. 各类传感器的介绍4. 环境感知经典算法概述5. 自动驾驶仿真软件的功能5.1 背景介绍5.2 自动驾驶仿真软件平台背后的科学…

(二十六)Set系列集合

简介: Set集合&#xff0c;基础自Collection。特征是插入无序&#xff0c;不可指定位置访问。Set集合的实现类可说是基于Map集合去写的。通过内部封装Map集合来实现的比如HashSet内部封装了HashMap。Set集合的数据库不能重复&#xff08; 或 eqauls&#xff09;的元素Set集合的…

AxMath使用教程(持续更新中)

前言 这两天学了学Latex&#xff0c;主要是为了以后写毕业论文做铺垫&#xff0c;而且Latex在数学公式这一方面&#xff0c;要比Word方便许多&#xff0c;于是我就下载了一款国产的公式编辑器——AxMath。永久会员不贵&#xff0c;只要36元&#xff0c;而且软件很好用&#xf…

【自然语言处理】情感分析(一):基于 NLTK 的 Naive Bayes 实现

情感分析&#xff08;一&#xff09;&#xff1a;基于 NLTK 的 Naive Bayes 实现朴素贝叶斯&#xff08;Naive Bayes&#xff09;分类器可以用来确定输入文本属于某一组类别的概率。例如&#xff0c;预测评论是正面的还是负面的。 它是 “朴素的”&#xff0c;它假设文本中的单…

机器学习: Label vs. One Hot Encoder

如果您是机器学习的新手&#xff0c;您可能会对这两者感到困惑——Label 编码器和 One-Hot 编码器。这两个编码器是 Python 中 SciKit Learn 库的一部分&#xff0c;它们用于将分类数据或文本数据转换为数字&#xff0c;我们的预测模型可以更好地理解这些数字。今天&#xff0c…

图机器学习-节点嵌入(Node Embedding)

图机器学习-节点嵌入(Node Embedding) Node Embedding简单点来说就是将一个node表示为一个RdR^dRd的向量。 EncoderDecoder Framework 我们首先需要设计一个encoder对节点进行编码。既然要比较相似度那么我就需要定义节点的相似度。同时我们还需要定义一个decoder&#xff0…

Java线程的生命周期的五种状态

在java中&#xff0c;任何对象都要有生命周期&#xff0c;线程也不例外&#xff0c;它也有自己的生命周期。当Thread对象创建完成时&#xff0c;线程的生命周期便开始了&#xff0c;当run()方法中代码正常执行完毕或者线程抛出一个未捕获的异常(Exception)或者错误(Error)时&am…

通信原理简明教程 | 数字基带传输

文章目录1数字基带传输系统的基本组成2 数字基带信号及其频域特性2.1 基本码型2.2 常用码型2.3 数字基带信号的功率谱3 码间干扰3.1 码间干扰的概念&#xff08;ISI&#xff09;3.2 无码间干扰传输的条件3.3 无码间干扰的典型传输波形4 部分响应和均衡技术&#xff08;*&#x…

java+ssm网上书店图书销售评价系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 2 第3章 系统分析 4 3.1 需求分析 4 3.2 系统可行性分析 4 3.2.1技术可行性&#xff1a;技术背景 4 3.2.2经…

【蓝桥云课】位运算

一、原码、反码、补码 原码&#xff1a;符号位&#xff08;正数为0、负数为1&#xff09;二进制数 反码&#xff1a;正数的反码正数的原码&#xff1b;负数的反码负数的原码除符号位外按位求反 补码&#xff1a;正数的补码正数的反码&#xff1b;负数的补码负数的反码1 整数原…

基于SPN实现的密码学课程设计(附完整代码)

就是如图所示的一个过程! 1.1 初次写SPN 初代SPN 为了方便的使用S盒P盒的那些运算(直接使用数组, 而不使用位运算),所以想起了C语言课上学的