3DV 2024 Oral | SlimmeRF:可动态压缩辐射场,实现模型大小和建模精度的灵活权衡
目前大多数NeRF模型要么通过使用大型模型来实现高精度,要么通过牺牲精度来节省内存资源。这使得任何单一模型的适用范围受到局限,因为高精度模型可能无法适应低内存设备,而内存高效模型可能无法满足高质量要求。为此,本文研究者提出了SlimmeRF,一种在测试阶段随时(即不需要对模型进行重新训练)通过动态压缩实现模型大小与精度之间权衡的模型,从而使模型同时适用于不同计算预算的场景。实验结果显示,SlimmeRF在不进行动态压缩时能够达到 SOTA 级别的精度,同时动态压缩时的效果明显好于基于 TensoRF 的基准模型。

论文题目: SlimmeRF: Slimmable Radiance Fields
论文链接:https://arxiv.org/abs/2312.10034
代码链接: GitHub - Shiran-Yuan/SlimmeRF: Official implementation for SlimmeRF: Slimmable Radiance Fields
01. 简介
辐射场(Radiance Fields)是一种通过神经网络等方法对3D场景进行建模的方法。我们观察到,在实际应用中,往往存在一个问题:效果较好的辐射场模型会对内存等资源要求较高,因此难以应用于资源较为稀缺的应用场景;相反,比较节省内存资源、算力资源等的模型则可能效果不佳。
因此,当需要训练能够兼容高负载能力与低负载能力环境的模型时,就只能采用后者,因为前者无法在低负载能力环境中运行。然而实际情况是,往往高负载能力的环境也有较高对模型效果的需求,而低负载能力的环境则对模型效果需求不高,因此前述的方法不符合高负载能力环境下的需求。因此,如果能够训练出能够在高负载能力环境下取得极佳效果,同时在低负载能力环境下也能牺牲效果成功运行的模型,就可以同时满足这两种需求。
为了解决该问题,本文提出,应当让辐射场模型能够拥有可动态压缩性(Slimmability)。我们提出的 SlimmeRF 模型基于低秩张量近似(Low-Rank Tensor Approximation)对场景进行建模,在不被动态压缩(Slim)的情况下建模精度能够达到 SOTA 等级,同时还能在测试阶段随时(即不需要对模型进行重新训练)通过动态压缩减小模型大小,牺牲精度来满足更严格的环境负载能力要求。
技术方面,我们受张量辐射场(TensoRF)启发,利用矩阵-向量张量分解(VM 分解,Vector-Matrix Tensor Decomposition)建模3D场景的密度(Density)与外观(Appearance)。同时,为了使模型中的张量具备可进行低秩张量近似的性质,我们提出了张量增秩算法(TRaIn, Tensorial Rank Incrementation),用于进行训练。实现中,我们在训练时通过对张量进行遮罩(Masking)来模拟张量秩的变化,而测试时直接对分解后的成分(Factors)进行截断(Truncation)。
实验结果显示,SlimmeRF 中张量分解成的不同成分间出现了“分工”,由对应秩较低的成分对于大致轮廓、颜色等进行建模,而对应秩较高的成分则对于细节进行建模。我们的模型在不进行动态压缩时能够达到 SOTA 级别的精度(这一点许多其他可压缩与低内存消耗模型都无法做到),同时动态压缩时的效果明显好于基于 TensoRF 的基准模型(Baseline)。我们还在稀疏输入(Sparse Input)的场景下进行了实验,发现 SlimmeRF 的可动态压缩性提升了很多,并且在特定视角下效果好于专门用于稀疏输入的模型。
02. 方法
2.1 问题表述

2.2 张量增秩算法


2.3 遮罩训练与截断测试


03. 实验
3.1 与 TensoRF 基准对比
我们直接对于使用类似表示结构的 TensoRF 进行截断来作为基准,将其结果与参数量相同的 SlimmeRF 进行对比,定量、定性结果分别如下图所示。可以看到,我们的模型效果明显远好于基准,说明了 TRaIn 算法的作用。

3.2 与 SOTA 模型对比
我们与 SOTA 模型 Plenoxels、DVGO、TensoRF 进行了对比,定量结果如下表所示。与 TensoRF 的定性对比如下图所示。结果说明,我们的模型在不进行动态压缩时能够达到 SOTA 级的效果,不会以牺牲效果为代价,只有在进行动态压缩后才会牺牲效果。


3.3 与可压缩模型/低内存消耗模型对比
我们将 SlimmeRF 与 TensoRF、CCNeRF、MWR (Masked Wavelet Representation)、TinyNeRF、PlenVDB 等以可压缩或低内存消耗为主要优势的模型进行了对比,结果如下图所示。其中,除了 CCNeRF 以外均没有可动态压缩性,仅仅作为参考。

3.4 稀疏输入实验
我们将 SlimmeRF 与用于稀疏输入场景的 SRF、PixelNeRF、MVSNeRF、mip-NeRF、DietNeRF、Reg-NeRF 等模型进行了对比,定量结果如下表所示。与 Reg-NeRF 在一些视角下的定性对比如下图所示。SlimmeRF 并不是稀疏输入模型,没有对场景的几何构造进行重建,因此效果并没有稳定超越其它方法;但定性实验表明,SlimmeRF 在稀疏输入场景下效果很好,在特定视角下甚至可以超越专用于稀疏输入场景的模型;同时,定量结果表明,SlimmeRF 在稀疏输入场景下可动态压缩性极佳,在模型大小缩小时效果不会变差很多,甚至在输入视角较少的时候会出现模型大小越小,模型效果越好的情况。

3.5 消融实验与参数敏感性分析


3.6 与BCD基准对比
我们尝试实现了基于前述 BCD 算法的模型,但训练过程中模型损失与精度浮动极大,因此我们没有获得可展示的结果。这体现出了我们采用原创算法进行训练的必要性。
04. 结语
我们工作的主要贡献在于提出并实现了神经辐射场的可动态压缩性(Slimmability),同时为神经辐射场研究提供了低秩张量近似与秩增训练的新思路。在未来,我们会进一步将这一工作拓展到4D等其它场景,并将其应用化。
关于TechBeat人工智能社区
▼
TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。
我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。
期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!
更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区
相关文章:
3DV 2024 Oral | SlimmeRF:可动态压缩辐射场,实现模型大小和建模精度的灵活权衡
目前大多数NeRF模型要么通过使用大型模型来实现高精度,要么通过牺牲精度来节省内存资源。这使得任何单一模型的适用范围受到局限,因为高精度模型可能无法适应低内存设备,而内存高效模型可能无法满足高质量要求。为此,本文研究者提…...
【unity学习笔记】4.场景切换
创建空物体→创建脚本挂载在空物体上→打开脚本 1.创建所需要的场景 assets中点击创建场景 2.文件→生成设置 3.将需要的场景拖入 4.场景跳转 创建空对象,将脚本放在空对象上。 注意两个类:场景类、场景管理类 void Start(){//场景跳转SceneManager.Lo…...
LeetCode75| 滑动窗口
目录 643 子数组最大平均数 | 1456 定长子串中元音的最大数目 1004 最大连续1的个数 ||| 1493 删掉一个元素以后全为1的最长子数组 643 子数组最大平均数 | class Solution { public:double findMaxAverage(vector<int>& nums, int k) {double sum 0;double re…...
gulimall-002 分布式基础概念
1、微服务概念 微服务是一种非常流行的架构风格。 拒绝大型单体应用,基于业务边界进行服务微化拆分,各个服务独立部署运行。 每个服务运行在自己的单个进程使用轻量级机制通信可以使用不同的编程语言编写以及不同的数据存储技术 2、集群&分布式&…...
K8s之声明式APIs
大家好,我是升仔 引言 Kubernetes(K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用。在K8s中,声明式APIs(Application Programming Interfaces)是一种核心概念࿰…...
Hive执行计划
Hive提供了explain命令来展示一个查询的执行计划,这个执行计划对于我们了解底层原理,Hive 调优,排查数据倾斜等很有帮助。 使用语法如下: explain query;在 hive cli 中输入以下命令(hive 2.3.7): explain select s…...
Leetcode—62.不同路径【中等】
2023每日刷题(七十二) Leetcode—62.不同路径 超时dfs代码 class Solution { public:int uniquePaths(int m, int n) {int starti 1, startj 1;int ans 0;function<void(int, int)> dfs [&](int i, int j) {if(i m && j n) {a…...
【汇编笔记】初识汇编-内存读写
汇编语言的由来: CPU是计算机的核心,由于计算机只认识二进制,所以CPU执行的指令是二进制。 我们要想让CPU工作,就得给他提供它认识的指令,这一系列的指令的集合,称之为指令集。 指令集: 不同的体…...
Shell脚本通过渗透测试检测服务器安全!
以下是一个简单的 Shell 脚本通过渗透测试来发现服务器漏洞的例子: #!/bin/bash # 设置变量 server_url"http://example.com" server_port"80" script_path"/path/to/script.脚本" # 创建并打开 Web 服务器 web_server$(curl -s $se…...
数据结构--查找
目录 1. 查找的基本概念 2. 线性表的查找 3. 树表的查找 3.1 二叉排序树 3.1.1 定义: 3.1.2 存储结构: 3.1.3 二叉排序树的查找 3.1.4 二叉排序树的插入 3.1.5 二叉排序树删除 3.2 平衡二叉树(AVL 3.2.1 为什么要有平衡二叉树 3.2.2 定义 3.3 B-树 3.3.1…...
IntelliJ IDEA Apache Dubbo,IDEA 官方插件正式发布!
作者:刘军 最受欢迎的 Java 集成开发环境 IntelliJ IDEA 与开源微服务框架 Apache Dubbo 社区强强合作,给广大微服务开发者带来了福音。与 IntelliJ IDEA 2023.2 版本一起,Jetbrains 官方发布了一款全新插件 - Apache Dubbo in Spring Frame…...
使用Visual Studio 2022 winform项目打包成安装程序.exe
winform项目打包 1.安装扩展插件 Microsoft Visual Studio Installer Projects 20222.在解决方案上新建一个setup project 项目3.新建成功如下图,之后添加你的winform程序生成之后的debug下的文件4.在Application Folder上点击右键->Add->项目输出->主输出…...
报错-idea pom.xml 有一条灰色横线
1. 背景 打开 idea 更新代码,发现有个 module 的 pom.xml 有一条灰色横线,导致这个 module 没有加载成功。 2. 原因 1) 可能本地 Remove 了这个 module 2)本地删除了这个 module ,又从远端拉取了回来 3)…...
openmediavault(OMV) (19)云相册(3)mt-photos
简介 MT Photos是一款为Nas用户量身打造的照片管理系统。通过AI技术,自动将您的照片整理、分类,包括但不限于时间、地点、人物、照片类型。可以在任何支持Docker的系统中运行它。详情可查看mtmt.tech官网,mt-photos是付费订阅使用的,也可以一次性付费永久使用,具体使用mt…...
基于openGauss5.0.0全密态数据库等值查询小案例
基于openGauss5.0.0全密态数据库等值查询小案例 一、全密态数据库简介二、环境说明三、测试步骤四、使用约束 一、全密态数据库简介 价值体现: 密态数据库意在解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传…...
Oracle中varchar2和nvarchar2的区别
Oracle中的varchar2和nvarchar2都是可变长度的字符数据类型,这意味着它们能够根据实际存储的数据长度来动态调整占用的空间。但它们之间有以下主要区别: 1. 字符编码和存储: - VARCHAR2:存储的是字节字符串,对字符…...
linux环境下从一个服务器复制文件到另一个服务器
在Linux中使用scp命令可以将文件或目录从一台服务器复制到另外一台服务器。 # 从源服务器复制文件到目标服务器 scp /path/to/source_file usernamedestination:/path/to/destination_directory # 从源服务器复制目录及其内容到目标服务器 scp -r /path/to/source_directory us…...
JSoup 爬虫遇到的 404 错误解决方案
在网络爬虫开发中,使用JSoup进行数据抓取是一种常见的方式。然而,当我们尝试使用JSoup来爬虫抓取腾讯新闻网站时,可能会遇到404错误。这种情况可能是由于网站的反面爬虫机制检测到了我们的爬虫行为,从而拒绝了我们的请求。 假设我…...
Vue.set 方法原理
function set(target, key, value) {// 判断是否是数组,并且 key 是一个有效的索引值if (Array.isArray(target) && isValidArrayIndex(key)) {target.length Math.max(target.length, key)target.splice(key, 1, value)return value}// 判断 key 是否已经…...
CentOS 7的新特性
CentOS 7在发布时相较于CentOS 6引入了许多重要的变化和优化。以下是一些主要的改进和新特性: 系统初始化程序:CentOS 7使用了systemd作为其初始化系统,取代了之前版本的init系统。systemd提供了更快的启动时间和更好的管理服务。 内核更新&…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
