ICCV 2023 Oral | 从无约束图像集合中生成新视角的交叉光线神经辐射场

image.png

文章链接:https://arxiv.org/abs/2307.08093
代码链接:https://github.com/YifYang993/CR-NeRF-PyTorch.git

01. 介绍

本工作旨在通过从不受限制的图像集合(例如从互联网中爬取的图像)中合成新视角图片,从而提供3D沉浸式体验。本方法使用户能够从多视角欣赏任意季节的国际地标,例如德国柏林的勃兰登堡门和意大利罗马的特维尔喷泉。

具体来说,假设用户想去勃兰登堡门欣赏不同时间和天气的风景,但由于学业、工作等原因旅行成本过高,无法亲身前往。那么如何不出门就能在多种天气、多种时间、从多种角度下“云游玩”该景点呢?

这时,我们提出的CR-NeRF即可派上用场。用户只需从互联网上收集任意关于勃兰登堡门的照片,不论是白天、晚上、春夏秋冬的场景都可以,再利用CR-NeRF,便能生成勃兰登堡门的新视角图像。CR-NeRF能根据用户给定的相机角度和图像风格来渲染图像。通过这一方法,用户可以在虚拟环境中体验勃兰登堡门的多样化场景,感受不同时间和天气带来的景观变化,让用户在家中就能畅游世界名胜,享受沉浸式的旅行体验。这种技术不仅节省了旅行成本和时间,还为用户提供了更多探索世界的可能性。

02. 摘要

神经辐射场(NeRF)是一种革命性的渲染场景方法,通过对每个像素采样单个光线,在从静态场景图像生成新视角方面展示出令人印象深刻的能力。然而,在实践中,我们通常需要从无约束的图像集合中恢复NeRF,这面临两个挑战:

1)图像通常由于拍摄时间和相机设置的不同而具有外观上的动态变化;

2)图像可能包含人和汽车等瞬态对象,导致遮挡和伪影。

传统方法通过局部利用单个光线来解决这些挑战。相比之下,人类通常通过在多个像素之间全局利用信息来感知外观和对象。为了模拟人类的感知过程,在本文中,我们提出了交叉光线NeRF(CR-NeRF),利用跨多个光线的交互信息合成无遮挡、与图像外观相同的新视角。具体而言,为了建模不同的外观,我们首先提出使用新颖的交叉光线特征表示多个光线,然后通过融合光线的全局统计信息(即光线特征的协方差和图像外观)来恢复外观。

此外,为了避免瞬态对象引入的遮挡,我们提出了一个瞬态对象处理器,并引入了网格采样策略来屏蔽瞬态对象。我们在理论上发现,利用多个光线之间的相关性有助于捕捉更多的全局信息。此外,在大型真实数据集上的实验结果验证了CR-NeRF的有效性。

03. 方法动机

通过CR-NeRF,我们输入不同光照条件下的照片,从而重建的可控外观的3D场景,同时消除图像中的遮挡。用互联网图像数据集重建NeRF面临着以下两个挑战。

  1. 不同的外观: 假设两个游客即使在相同的视点拍摄照片,他们也仍然处在不同的条件下:不同的拍摄时间,不同的天气(如晴天,雨天,雾天),不同的相机设置(如光圈,快门,ISO)。这种变化的条件导致对同一个场景拍摄的多张同视角照片可能会呈现截然不同的外观。

  2. 瞬态遮挡: 瞬态物体如汽车和乘客可能会遮挡场景。由于这些物体通常仅存在于单张图片中,因此高质量地重建这些物体通常是不切实际的。上述挑战与NeRF的静态场景假设相冲突,导致重建不准确、过度平滑和重影伪影[1]。

最近,研究者们已经提出了几种方法(NeRF-W[1] ;Ha-NeRF[2])来解决上述挑战。从图1(a)中,NeRF-W和Ha-NeRF利用单相机光线方式重建3D场景。具体来说,这种方法分别与单射线特征融合外观特征和遮挡物特征,随后独立合成新视图像素的每种颜色。这种方式的一个潜在问题是它依赖于每条射线的局部信息(例如,单个图像像素的信息)来识别外观和瞬态物体。

相比之下,人类倾向于利用全局信息(例如跨多个图像像素的信息),这提供了对物体更全面的了解,以观察其外观并处理遮挡。基于此,我们提出使用交叉射线范式来处理变化的外观和瞬态物体(见图1(b)),我们利用来自多射线的全局信息来恢复外观并处理瞬态物体。然后,我们同时合成一个新视图的区域。

MOTIVATION.png
图1: CR-NeRF的动机图

04. 方法

基于交叉射线范式,我们提出了一个交叉射线神经辐射场(cross-ray Neural Radiance Fields, CR-NeRF),如图2, CR-NeRF由两个部分组成:

  1. 为了模拟可变的外观,我们提出了一种新的交叉射线特征来表示多射线的信息。然后,我们通过使用全局统计(例如,交叉射线的特征协方差)的交叉射线变换网络融合交叉射线特征和输入图像的外观特征。将融合特征送入解码器以同时获得多个像素的颜色。

  2. 在瞬态目标处理方面,我们提出了一种独特的视角,将瞬态目标处理视为一个分割问题,通过考虑图像区域的全局信息来检测瞬态目标。具体来说,我们分割了输入的图像,以获得物体的可见性图。为了减少计算开销,我们引入了一种网格采样策略,对输入的光线和分割后的映射进行相同的采样,使两者配对。我们从理论上分析了利用多射线之间的相关性可以捕获更多的全局信息。

接下来,我们具体描述CR-NeRF的两个部分。

PS: 我们假设读者了解关于NeRF, 相机模型等知识,若尚未掌握相关知识,请查阅CR-NeRF论文中的preliminary部分。

pipelinev41.png

图2: CR-NeRF的方法流程

4.1 风格迁移模块

4.2 遮挡处理模块

05. 实验

5.1 定量结果

我们在Brandenburg Gate, Sacre Coeur和Trevi Fountain数据集上进行了大量的实验。如表1所示,我们观察到原始的NeRF在所有方法中表现最差,因为NeRF假设训练图像背后的场景是静态的。通过对样式嵌入建模和处理瞬态对象,NeRF-W和Ha-NeRF在PSNR、SSIM和LPIPS方面取得了相当的性能。由于交叉射线的优势,我们的CR-NeRF优于NeRF-W和Ha-NeRF。

quant.png
表1: CR-NeRF与SOTA方法的对比

5.2 可视化实验

我们在图3中展示所有比较方法的定性结果。我们观察到NeRF产生雾状伪影和不准确的外观。NeRF-W和Ha-NeRF能够从地面真实图像重建更有前途的3D几何形状和模型外观。然而,重建的几何形状不够精确,例如,勃兰登堡的绿色植物的形状和围绕柱子的幽灵效应,Sacre的空腔等。此外,现有方法生成的外观不够逼真,例如Sacre的雕像上的阳光,Trevi的蓝色天空和灰色屋顶的颜色。相比较,我们的CR-NeRF引入了交叉射线范式,因此实现了更真实的外观建模,并通过抑制瞬态物体重建一致的几何形状。

hallucination_gifv21.png
图3: CR-NeRF与SOTA方法的对比

5.3 交叉光线外观迁移模块和瞬态物体处理模块的消融实验

表2展示了CR-NeRF在Brandenburg、Sacre和Trevi数据集上的消融实验结果。我们观察到我们的基线(CR-NeRF-B)的性能通过添加交叉光线外观迁移模块(CR-NeRF-A)和瞬态处理模块(CR-NeRF-T)后在逐渐提升。

ablation.png
表2: CR-NeRF的消融实验

5.4 推理速度

inferencetime.png
表3: CR-NeRF与Ha-NeRF的推理时间对比

5.5 更多实验

我们对外观特征进行了插值实验,与SOTA方法进行了外观迁移比较实验,还制作了视频demo等。请阅读我们的论文和访问github链接。

06. 总结和展望

6.1 总结

本工作的贡献总结如下:

  • 从无约束的照片集合中合成新视图的新交叉射线范式: 我们发现现有的方法无法通过单射线水平范式从无约束的照片集合中产生令人满意的视觉结果,主要是由于忽略了多射线之间潜在的合作相互作用。为了解决这个问题,我们提出了一种新的交叉射线范式,它利用了跨多条射线的全局信息。

  • 用于处理不同外观的交互式和全局方案: 与独立处理每条光线的现有方法不同,我们通过引入交叉射线特征来表示多条光线,这通过特征协方差促进了光线之间的相互作用。这使我们能够在场景中注入全局信息的外观表示,从而实现更逼真、更高效的外观建模。我们的理论分析证明了在外观建模中考虑多射线的必要性。

  • 处理瞬态对象的一种新的分割技术: 我们将瞬态对象问题重新表述为分割问题。我们利用无约束图像的全局信息分割可视图。此外,我们还采用网格采样将地图与多个光线配对。实验结果表明,CR-NeRF消除了重建图像中的瞬态目标。

6.2 展望

本工作还有很多可提升的空间。例如,我们在论文末尾所说,当前,由于瞬时物体没有GT监督,完全依赖深度模型从数据中自动学习数据模式,尚缺乏精细的建模。更重要的是,我们认为瞬时物体的定义仍然是一个未解决的问题,我们把它留给我们未来的工作。

引用

[1] Martin-Brualla, Ricardo, et al. "Nerf in the wild: Neural radiance fields for unconstrained photo collections." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021.

[2] Chen, Xingyu, et al. "Hallucinated neural radiance fields in the wild." Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022.

[3] Schwarz, Katja, et al. "Graf: Generative radiance fields for 3d-aware image synthesis." Advances in Neural Information Processing Systems 33 (2020): 20154-20166.


  关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区

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

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

相关文章

5.网络原理之初识

文章目录 1.网络发展史1.1独立模式1.2网络互连1.3局域网LAN1.3.1基于网线直连1.3.2基于集线器组建1.3.3基于交换机组建1.3.4基于交换机和路由器组建1.3.4.1路由器和交换机区别 1.4广域网WAN 2.网络通信基础2.1IP地址2.2端口号2.3认识协议2.4五元组2.5 协议分层2.5.1 分层的作用…

DTC状态变化例子 4

例子1: 此示例概述了两个操作周期排放相关的 OBD DTC 中 DTC 状态位的操作。该图显示了两个操作周期排放相关的 OBD DTC 的处理。该处理也可应用于非排放相关的 OBD DTC,此处显示仅供一般参考。 0 接收到清除诊断信息 → DTC 状态字节初始化。 1, 2 相关…

(动态规划) 剑指 Offer 48. 最长不含重复字符的子字符串 ——【Leetcode每日一题】

❓剑指 Offer 48. 最长不含重复字符的子字符串 难度:中等 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为…

JVM7:垃圾回收是什么?从运行时数据区看垃圾回收到底回收哪块区域?垃圾回收如何去回收?垃圾回收策略,引用计数算法及循环引用问题,可达性分析算法

垃圾回收是什么?从运行时数据区看垃圾回收到底回收哪块区域? 垃圾回收如何去回收? 垃圾回收策略 引用计数算法及循环引用问题 可达性分析算法 垃圾回收是什么?从运行时数据区看垃圾回收到底回收哪块区域?垃圾回收如何去…

ctfshow web入门 web103-web107

1.web103 和102一样 payload: v2115044383959474e6864434171594473&v3php://filter/writeconvert.base64-decode/resource1.php post v1hex2bin2.web104 值只要一样就可以了 payload: v21 post v113.web105 考查的是$$变量覆盖,die可以带出数据,输出一条消息&#xf…

C# winform加载yolov8模型测试(附例程)

第一步:在NuGet中下载Yolov8.Net 第二步:引用 using Yolov8Net; 第三步:加载模型 private IPredictor yolov8 YoloV8Predictor.Create("D:\\0MyWork\\Learn\\vs2022\\yolov_onnx\\best.onnx", mylabel); 第四步:图…

c++存取dat数据

众所周知,dat是一个类似加密的二进制格式文件,很多人喜欢将游戏数据保存在dat文件中,只有知道你的存放格式,才能够将数据破解出来,因而研究了dat文件的存取方式。其实就是c文件的操作,只不过是在取的时候需…

0基础入门C++之类和对象下篇

目录 1.再谈构造函数1.1构造函数赋值1.2初始化列表1.3explicit关键字 2.static成员2.1概念2.1静态成员变量2.2静态成员函数2.3特性 3.匿名对象4.友元函数4.1友元函数4.2友元类 5.内部类6.再次理解类和对象 1.再谈构造函数 首先我们先来回忆一下构造函数: 构造函数是…

华为OD-整数对最小和

题目描述 给定两个整数数组array1、array2,数组元素按升序排列。假设从array1、array2中分别取出一个元素可构成一对元素,现在需要取出k对元素,并对取出的所有元素求和,计算和的最小值 代码实现 # coding:utf-8 class Solution:…

【工具使用】Git的使用

dev代表开发版 1. git clone 命令 通过 git add <name> 对文件进行跟踪&#xff0c;把<name>加入到暂存区 git commit -m XXXXXXX 提交修改并补充XXXXX作为注释 “暂存”状态&#xff1a;出现了一些修改&#xff0c;但是还没有提交 对于Java来说&#xff0c;.cl…

goland 中的调试器 -- Evaluate

今天一个好朋友 找到我&#xff0c;问我关于goland中Evaluate 小计算器的使用方式&#xff0c;说实话&#xff0c;我在此之前也没用过这个东西&#xff0c;然后我就找一些相关文档&#xff0c;但是这类文档少的可怜&#xff0c;所以我就稍微研究一下&#xff0c;找找材料&#…

数组名和函数名是指针?指针和引用底层一样?

在2023/8/26日晚上&#xff0c;我看到一个所谓“典”的视频&#xff0c;一开始还没太在意&#xff0c;后面想了想发现我貌似也一直犯了以下的错误&#xff0c;而错误的原因在于我在新手阶段学习C/C并不是查阅文档扎好脚步学习的&#xff0c;而是被铺天盖地的新手学习基础教程里…

Java“牵手”天猫商品列表数据,关键词搜索天猫商品数据接口,天猫API申请指南

天猫商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取天猫商品列表和商品详情页面数据&#xff0c;您可以通过开放平台的接口或者直接访问天猫商城的网页来获取商品详情信息。以下是两种常用方法的介绍&…

Vue2向Vue3过度Vuex核心概念actions

目录 1 核心概念 - actions1.定义actions2.组件中通过dispatch调用 2 辅助函数 -mapActions 1 核心概念 - actions state是存放数据的&#xff0c;mutations是同步更新数据 (便于监测数据的变化, 更新视图等, 方便于调试工具查看变化)&#xff0c; actions则负责进行异步操作 说…

云南森林火灾vr消防模拟安全演练系统训练消防员火灾和事故的适应和应对能力

据统计,每一场破坏性地震发生后,会引发次生的灾害,而火灾是其中之一。导致火灾的原因,推测是地震时使供电线路短路,引燃易燃物,火灾就随即发生。所以,在日常生活中,定期的消防演练还是非常必要的, VR消防&#xff0c;是VR公司深圳华锐视点利用VR虚拟现实技术&#xff0c;将VR和…

Unity项目如何上传Gitee仓库

前言 最近Unity项目比较多&#xff0c;我都是把Unity项目上传到Gitee中去&#xff0c;GitHub的话我用的少&#xff0c;可能我还是更喜欢Gitee吧&#xff0c;毕竟Gitee仓库用起来更加方便&#xff0c;注意Unity项目上传时最佳的方式是把 Asste ProjectSetting 两个文件夹上传上…

CFC编程入门_【10分钟学会】

什么是CFC&#xff1a; 【差不多10分钟全学会】 CFC是图形化编程&#xff0c; 跟单片机的连线一样&#xff0c; 唯一的区别&#xff1a;功能块右侧是【只能输出】引脚。 只有左侧引脚可以输入输出。 有哪些控件&#xff1a; 指针&#xff1a;用于拖动功能块。 控制点&#xf…

<七> objectARX开发:创建自定义实体

1、介绍 在某些情况下,CAD中的实体对象无法满足需求,我们需要针对实际情况来设计并绘制自定义的实体,下面就用一个简单的例子来介绍一下自定义实体绘制。 实体形状:包括实体夹点和文字夹点拖动实现。 2、效果 3、创建自定义实体的步骤 新建一个从AcDbEntity继承的类,如C…

谷歌面试-扔鸡蛋

今天想跟大家分享一个有意思的面试题&#xff0c;这让我再一次感叹思维的奇妙&#xff0c;接下来我们一起看看吧~ 首先来看看题目&#xff1a; 你有2颗鸡蛋&#xff0c;需要以最少的尝试次数来判断在100层的高楼上&#xff0c;哪一层楼是鸡蛋的安全层。 换句话说&#xff0c…