92、Nerfbusters: Removing Ghostly Artifacts from Casually Captured NeRFs

news2024/11/25 0:28:27

简介

主页:https://ethanweber.me/nerfbusters/
在这里插入图片描述
在远离训练视图的新视图上渲染nerf可能会导致伪影,例如浮动或糟糕的几何形状。这些工件在野外捕获(a)中很普遍,但在NeRF基准测试中很少看到,因为评估视图通常从与训练视图相同的相机路径中选择。现有的评估方案通常不能捕捉到这些效果,因为它们通常只在训练捕获的每8帧评估图像质量

现有的手工制作的正则化器并不能去除漂浮物,也不能改善场景的几何形状

提出了一个新的野外捕获数据集和一个更现实的评估过程(b),其中每个场景通过两条路径捕获:一条用于训练,一条用于评估。
在这里插入图片描述

提出了Nerfbusters,这是一种基于3D扩散的方法,该方法利用局部3D先验和一种新的基于密度的分数蒸馏采样损失来阻止NeRF优化过程中的伪影,可以改善场景几何形状并减少漂浮物©,在这个更现实的评估设置中显着改进了现有的正则器

论文从SDS优化程序中获得灵感,但使其以无条件的方式直接在3D密度值上监督NeRF密度,作为基础模型,在从ShapeNet对象中提取的局部3D立方体上训练一个3D扩散模型。

局部立方体内的几何(表面)分布明显比2D自然图像或全局3D对象简单,减少了对条件反射和高引导权重的需求

评估对象
在这里插入图片描述

  • 录制视频来捕捉场景(训练分割)
  • 从一组不同的视点录制第二个视频(评估分割)
  • 从两个视频中提取图像并计算所有图像的相机姿势
  • 在两个分割的组合上训练一个“伪地面真相”模型,并为评估视点保存深度、法线和可见性地图
  • 在训练分割上优化NeRF,并从评估分割中评估新的视点(使用捕获的图像和伪地面真值图)。

Masking valid regions
使用可见性掩膜只评估评估图像中在训练视图中共同观察到的区域

定义为(1)没有被任何训练视图看到的区域,或者(2)被预测太远(即预测深度>距离阈值)的区域。阈值设置为训练和评估分割中任意两个相机原点之间最大距离的两倍。在Nerfstudio代码库中,这对应于2的值,因为相机姿势被缩放以适应具有边界(-1,-1,-1)和(1,1,1)的框

Coverage

评估视点中所有像素中评估像素的百分比(即被可见性和深度掩盖后),这是深度补全中通常报告的一个度量

实现流程

  • 训练一个扩散模型来学习三维表面斑块的分布。该模型在合成数据上进行训练,无条件地生成局部三维立方体
  • 将该局部先验应用于真实3D场景的NeRF重建。通过在训练过程中查询场景中局部3D补丁的密度,并使用一种新的密度分数蒸馏分数(DSDS)损失来正则化采样密度来实现这一点,改进了监督信号稀疏区域的重建,并消除了浮动信号

Nerfbusters扩散模型

在这里插入图片描述
Nerfbusters扩散模型的训练数据。给定一个网格,提取按网格大小1 - 10%缩放的局部立方体。以 3 2 3 32^3 323 的分辨率对这些立方体进行体素化,并通过随机旋转和随机膨胀来增强它们。Shapenet的合成场景提供了多种多样的局部立方体,包括平面、圆形和精细结构。

将局部3D先验表示为去噪扩散概率模型(DDPM),该模型迭代地对占用 x 的32 × 32 × 32立方体进行去噪
在这里插入图片描述
其中 t ∼ μ ( 0 , 1000 ) , ϵ ∼ N ( 0 , I ) t \sim \mu(0,1000),\epsilon \sim N(0,I) tμ(0,1000)ϵN(0,I)

使用了一个小的7.2M参数的3D U-Net,从ShapeNet场景中提取的合成三维立方体上训练模型

为了收集用于训练的三维立方体,选择一个随机的ShapeNet网格,并沿着物体表面提取N个局部立方体有界的补丁,立方体大小在物体边界体积的1-10%之间变化。以 3 2 3 32^3 323 的分辨率对这些局部样本进行体素化。然后用随机数量的旋转和膨胀来增加立方体。

该数据处理管道快速,并在训练期间在线执行,以增加3D立方体的多样性。用膨胀调整表面的厚度(而不是将内部像素标记为已占用)对于非水密网格来说更快,定义更好

新的正则化策略

(1)从NeRF的非空部分采样占用立方体的机制;
(2)一种新的密度分数蒸馏采样(DSDS)损失,鼓励采样占用符合扩散模型的学习几何先验

采样策略

为了实现更有效的采样,存储了一个低分辨率的累积权重或密度网格,它可以用来告知对场景中不同位置进行采样的概率。该网格在NeRF训练过程中与指数移动平均(EMA)衰减联合更新,这样在训练的后期阶段不会重复采样删除浮动的区域。在使用累积权值和密度之间的选择有相关的权衡:使用累积权值产生的立方体主要是在经常看到的表面上采样,而使用密度则可以对遮挡区域进行采样。在实践中使用密度网格,限制为[0,1],以避免少数密度支配采样概率。这种重要性采样方法几乎没有额外的成本,因为存储密度或权重沿着已经用于体渲染的光线,并使用一个小的 2 0 3 20^3 203 网格。这个网格通知了3D立方体中心的选择,大小是在场景的1-10%的范围内随机选择的,体素分辨率为 3 2 3 32^3 323

DSDS损失

实验表明,NeRF的密度在 [ 0 , ∞ ] [0,\infty] [0,],以0.01为分界线,小于该值为空白区域,在[0.01,2000]为占用区域。论文采用密度分数蒸馏采样(DSDS)损失来处理密度之间的域间隙。

给定NeRF立方体密度 σ \sigma σ,将密度离散为二元占用: x t = 1 x_t = 1 xt=1 如果 σ > τ σ > τ σ>τ else −1对于扩散时间步 t,其中 τ 是一个超参数,决定在什么密度下将体素视为空的或已占据的。Nerfbusters扩散模型预测去噪后的立方体 x 0 x_0 x0。时间步长 t 是一个超参数,它决定了扩散模型应该去除多少噪声,并且可以解释为学习率。这里选择了一个小的 t ∈ [ 10 , 50 ] t \in [10,50] t[10,50]

得到去噪后的立方体 x 0 x_0 x0 ,惩罚扩散模型预测为空的NeRF密度,或增加扩散模型预测为被占据的密度
在这里插入图片描述
m = 1 { x 0 < 0 } m = 1 \{x_0<0\} m=1{x0<0}是基于去噪预测的掩码。

在扩散模型预测空白的地方惩罚密度,在模型预测占用的地方增加密度

W是一个超参数,它决定了在已占用空间中增加多少密度

max算子确保如果被占用的体素的密度已经超过 w,则不会产生损失

与SDS类似,DSDS损失通过单个前向传递提取扩散先验,而不通过扩散模型进行反向传播

与SDS不同,DSDS损失在将原始采样占有率提供给扩散模型之前,不会向其添加噪声

虽然可能会觉得占用网格采样削弱优化过程中不完全匹配的分布噪声数据集用于训练,不过发现去噪过程产生合理的样本都是在清洁表面的管汇和类似的输入数据集的内容

DSDS对于任何预测为空或已占用的密度都具有梯度

可见性损失函数

在这里插入图片描述
局部3D扩散模型改进了场景几何并去除了漂浮物,但它需要适当的启动密度,因为它在局部运行,因此需要上下文信息来接地其去噪步骤

提出了一个简单的损失,惩罚多个训练视图未看到的3D位置的密度
在这里插入图片描述
f σ ( q i ) f_\sigma(q_i) fσ(qi)为NeRF在3D点 q i q_i qi的密度, V ( q i ) = 1 { ∑ j = 1 v i j < 1 } V(q_i) = 1 \{\sum_{j=1} v_{ij}<1\} V(qi)=1{j=1vij<1} 表示该位置在任何训练视图中都不可见。用视锥检查来近似第 j 个训练视图中第 i 个3D位置的可见性 v i j v_{ij} vij∈{0,1}

通过在训练图像周围定义一个紧密的球体来实现这一点,并渲染从球体表面的随机位置发射的批量光线,通过场景中心,直到远处

使用建议采样器来对表面周围的样本进行重要采样,因此损失在快速剔除可见区域外高密度的任何浮动伪影方面是有效的

实验

为了评估目的,关闭姿态估计,然后训练Nerfacto进行30K次迭代,这需要半小时

使用不同的正则化器方法对这个检查点进行微调,将提出的方法与vanilla Nerfacto、Nerfacto与提出的可见性损失、Nerfacto与可见性损失和3D稀疏性损失、3D TV正则化和2D TV(如RegNeRF)进行了比较
在这里插入图片描述

使用了Nerfacto默认开启的失真损失,所有方法在前1K次微调迭代内都是有效的(在NVIDIA RTX A5000上用于Nerfbusters约4分钟),但训练了5K次迭代

对于3D基线,每次迭代采样 403 2 3 40 32^3 40323个立方体,对于2D基线RegNeRF,渲染 3 2 2 32^2 322 个补丁。通常的NeRF重建损失也应用在微调期间,每批4096条射线
在这里插入图片描述
在这里插入图片描述

limitations

提出的模型只适用于密度,这有一些局限性。它不能区分漂浮物和透明物体(左)。它不会产生幻觉纹理,因此最终会移除所有训练视图中被遮挡的区域(右)。
在这里插入图片描述
在这里插入图片描述

future work

Transparent objects

nerf能够通过为透明对象分配低密度来表示透明对象。这些透明密度的行为类似于漂浮物,它需要语义信息来区分两者。由于局部扩散先验没有语义信息,它删除了透明物体
Hallucinating texture
由于方法对密度进行操作,因此该方法可以清除几何形状,但不能编辑纹理。这意味着可以移除含有漂浮物的区域或填充孔洞,但不能给这些区域上色。

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

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

相关文章

HTB_Under Construction—jwt伪造与sqlite注入

根据提示&#xff0c;此题目应该是代码审计类型的&#xff0c;文件结构如下 一般思路有两个&#xff0c;一是看有没有什么敏感信息&#xff0c;二就是看参数传递的地方能否利用&#xff0c;包括注入&#xff0c;伪造等 分析代码 index.js 先来分析入口文件&#xff0c;这是标…

零基础C/C++开发到底要学什么?

作者&#xff1a;黑马程序员 链接&#xff1a;https://www.zhihu.com/question/597037176/answer/2999707086 先和我一起看看&#xff0c;C/C学完了可以做什么&#xff1a; 软件工程师&#xff1a;负责设计、开发、测试和维护各类型的软件应用程序&#xff1b;游戏开发&#x…

【机智云物联网低功耗转接板】+模拟MCU快速上手

GE211是机智云自研的定制化转接板&#xff0c;使用 ESP32-C3-WROOM-02 通讯模块&#xff0c;适用于白色智能家电等设备应用。 转接板已经烧录了机智云连云的最新GAgent固件&#xff0c;所以不需要烧写任何软件就可以快速上手使用。 GE211板卡带有一个串口&#xff0c;一般是把这…

YOLOv1代码复现2:数据加载器构建

YOLOv1代码复现2&#xff1a;数据加载器构建 前言 ​ 在经历了Faster-RCNN代码解读的摧残后&#xff0c;下决心要搞点简单的&#xff0c;于是便有了本系列的博客。如果你苦于没有博客详细告诉你如何自己去实现YOLOv1&#xff0c;那么可以看看本系列的博客&#xff0c;也许可以帮…

同步辐射X射线断层扫描成像在各行业的应用

同步辐射X射线断层扫描成像在各行业的应用 同步辐射X射线断层扫描成像&#xff08;synchrotron radiation X-ray computed tomography&#xff0c;SRCT&#xff09;是一种非侵入式、高分辨率的成像技术&#xff0c;利用同步辐射光束产生的高强度、高亮度、单色性和相干性的X射线…

【C#】DockContent的使用

下载主题包和控件包 nuget Install-Package DockPanelSuite -Version 3.0.6 Install-Package DockPanelSuite.ThemeVS2015 -Version 3.0.6 在要靠的子界面继承DockContent 子界面上添加DockPanel控件&#xff0c;并将dock设置为fill。 主界面创建一个dockPanel1&#xff1b…

LDR6020全球第一颗PD MCU 无敌 Type-C手机背夹散热器方案

最近发现了个新玩意儿&#xff0c;因为经常玩游戏&#xff0c;手机发热的厉害&#xff0c;都可以煎鸡蛋了&#xff0c;心想着要买个东西给手机散散热&#xff0c;没想到还真的有手机散热器。 不知道手机散热器的也正常&#xff0c;毕竟一般人正常玩玩手机&#xff0c;发热就发…

局域网 - 高速以太网(百兆、千兆、万兆)

文章目录 1 概述1.1 802.3 物理层规范1.2 以太网标准中后缀 -T、-F、-X 含义 2 分类2.1 快速以太网&#xff08;802.3μ、百兆&#xff09;2.2 千兆以太网&#xff08;802.3z、802.3ab&#xff09;2.3 万兆以太网&#xff08;802.3ae&#xff09; 3 扩展3.1 网工软考真题 1 概述…

English Learning - L2-15 英音地道语音语调 语音语调四步法 2023.04.17 周一

English Learning - L2-15 英音地道语音语调 语音语调 2023.04.17 周一 语调概念和汉语拼音对比 语音语调四步法语调练习意群划分重音重中之重语调的选择 语调的含义 语调概念 广义&#xff1a;语音技巧&#xff0c;连读&#xff0c;失去爆破&#xff0c;音同化&#xff0c;还…

【Unity3D插件】Embedded Browser嵌入式浏览器插件使用教程

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 好久没有介绍插件了&#xff0c;今天分享一款比较好用的嵌入式…

【MySQL】GROUP BY分组子句与联合查询基本操作

目录 前篇都在这里喔~ MySQL的增删改查 MySQL数据库约束和聚合函数的使用 1.GROUP BY子句 练习表如下&#xff1a; 1.查询不包含董事长的平均工资 2.按照角色分组计算平均工资 3.过滤掉平均工资大于一万的角色 4.♥过滤数据♥ 2.联合查询 以下列表作为依据 1.内连接 …

Netty核心源码分析(五)核心组件EventLoop源码分析

文章目录 系列文章目录一、EventLoop源码分析1、NioEventLoop源码2、EventLoop的父接口SingleThreadEventExecutor&#xff08;1&#xff09;addTask方法&#xff08;2&#xff09;startThread方法 3、NioEventLoop的run方法&#xff08;核心&#xff01;&#xff09;&#xff…

网口通讯与串口通讯

目录 一、简介以及数据格式&#xff1a; 二、网口通讯与串口通讯主要区别&#xff1a; 三、工具小助手&#xff1a; 一、简介以及数据格式&#xff1a; 网口通讯&#xff08;Ethernet&#xff09;和串口通讯&#xff08;Serial&#xff09;都是用于数据传输的通信协议。 1、…

Netty简介

1.Netty是什么? 1>.Netty是由JBOSS提供的一个Java开源框架,现在为Github上的独立项目; 2>.Netty是一个异步的,基于事件驱动的网络应用框架,用于快速开发高性能的,高可靠的网络IO程序; 如图:异步与同步 说明: 同步: 在传统的BS开发模式中(左图),浏览器端发送一个请求…

接口策略PBR

实验原理 接口策略路由只对转发的报文起作用,对本地下发的报文(比如本地的Ping报文)不起作用,接口策略路由通过在流行为中配置重定向实现,只对接口入方向的报文生效。缺省情况下,设备按照路由表的下一跳进行报文转发,如果配置了接口策略路由,则设备按照接口策略路由指…

Flowable 流程定义(流程模板)的部署及设计的数据库表

一.简介 我们使用了 Spring Boot 之后&#xff0c;默认情况下流程是会自动部署的&#xff0c;基本上不需要我们额外做什么事情&#xff0c;我们称之为默认部署。 有的时候&#xff0c;我们的流程可能并不是提前设计好的&#xff0c;而是项目启动之后&#xff0c;动态部署的&am…

Verilog阻塞与非阻塞赋值详解

基本概念 关于阻塞赋值&#xff08;&#xff09;和非阻塞赋值&#xff08;<&#xff09;&#xff0c; 阻塞赋值&#xff08;&#xff09;是顺序敏感的&#xff0c;非阻塞赋值&#xff08;<&#xff09;是顺序独立的。阻塞赋值按它们在程序块中列出的顺序顺序执行。当它们…

分库分表,shardingJdbc和Mycat区别

shardingJdbc和Mycat都可以用来分库分表 MyCatshardingJdbc本质第三方应用,中间件代理层jar包是否需要修改代码否是可跨数据库否是是否跨语言是否性能下架&#xff0c;因为多了一层好 sharding-jdbc后续发展为Sharding-Sphere&#xff0c;包含sharding-jdbc、Sharding-Proxy、…

C. Painting the Fence(思维 + 前缀和)

Problem - C - Codeforces You需要油漆一个由n个部分组成的长围栏。不幸的是&#xff0c;它没有被涂漆&#xff0c;所以你决定雇用q名画家来完成这项工作。第i名画家将会油漆所有满足lisxsri的部分x. 不幸的是&#xff0c;你的预算很紧&#xff0c;所以你只能雇用q-2名画家。显…

Java线程池详解,内含实战演练~

本文是向大家介绍线程池的使用和一些注意事项&#xff0c;它能够实现高并发下快速处理业务&#xff0c;能够帮助开发人员深入理解线程池的价值。 1. 简介 线程池是使用池化技术管理和使用线程的一种机制。池化技术&#xff1a;提前准备一些资源&#xff0c;在需要时可以重复使…