经典文献阅读之--NoPe-NeRF(优化无位姿先验的神经辐射场)
0. 简介
在没有预先计算相机姿态的情况下训练神经辐射场(NeRF)是具有挑战性的。最近在这个方向上的进展表明,在前向场景中可以联合优化NeRF和相机姿态。然而,这些方法在剧烈相机运动时仍然面临困难。我们通过引入无畸变单目深度先验来解决这个具有挑战性的问题。这些先验是通过在训练期间校正比例和平移参数生成的,从而能够约束连续帧之间的相对姿态。这种约束是通过我们提出的新型损失函数实现的。对真实世界室内和室外场景的实验表明,我们的方法可以处理具有挑战性的相机轨迹,并在新视角渲染质量和姿态估计精度方面优于现有方法。本文《NoPe-NeRF: Optimising Neural Radiance Field with No Pose Prior》的项目页面是https://nope-nerf.active.vision。
1. 主要贡献
综上所述,我们提出了一种方法来联合优化摄像机的姿势和来自具有大量摄像机运动的图像序列的NeRF。我们的系统是由三个方面的贡献促成的。
-
我们提出了一种新的方法,通过明确地模拟比例和位移失真,将单深度整合到无姿势的NeRF训练中。
-
我们通过使用未扭曲的单深度地图的帧间损失,为摄像机-NeRF联合优化提供相对位置。
-
我们通过一个基于深度的表面渲染损失来进一步规范我们的相对姿势估计。
2. 详细内容
文中解决了在无姿态NeRF训练中处理大型相机运动的挑战。考虑到给定一系列图像,相机内参和它们的单目深度估计,我们的方法同时恢复相机姿态和优化NeRF。我们假设相机内参在图像元块中可用,并运行一个现成的单目深度网络DPT[7]来获取单目深度估计。在不重复单目深度的好处的情况下,我们将围绕单目深度的有效集成到无posed-NeRF训练中展开。
训练是NeRF、相机姿态和每个单目深度地图的畸变参数的联合优化。通过最小化单目深度地图与从NeRF渲染的深度图之间的差异来监督畸变参数,这些深度图是多视角一致的。反过来,无畸变深度地图有效地调解了形状-辐射(shape-radiance)的歧义,从而简化了NeRF和相机姿态的训练。
具体来说,无畸变深度地图提供了两个约束条件。我们通过在无畸变深度地图中反投影出的两个点云之间的基于Chamfer距离的对应来提供相邻图像之间的相对姿态,从而约束全局姿态估计。此外,我们通过将无畸变深度视为表面,使用基于表面的光度一致性来规范相对姿态估计。
3. NeRF与Pose
3.1 NeRF
Neural Radiance Field(NeRF)[24] 将场景表示为一个映射函数 F Θ : ( x , d ) → ( c , σ ) F_Θ:(x,d)→(c,σ) FΘ:(x,d)→(c,σ),其中 x ∈ R 3 x ∈ \mathbb{R}^3 x∈R3 为 3D位置, d ∈ R 3 d ∈ \mathbb{R}^3 d∈R3 为视角方向, c ∈ R 3 c ∈ \mathbb{R}^3 c∈R3为辐射颜色, σ σ σ 为体密度值。该映射通常是由参数化的神经网络 F Θ F_Θ FΘ 实现的。给定 N N N 张图像 I = { I i ∣ i = 0... N − 1 } I = \{I_i | i = 0 . . . N − 1\} I={Ii∣i=0...N−1} 及其相机姿态 Π = { π i ∣ i = 0... N − 1 } Π = \{π_i | i = 0 . . . N − 1\} Π={πi∣i=0...N−1},可以通过最小化合成图像 I ^ \hat{I} I^ 与捕获图像 I I I 之间的光度误差 L r g b = ∑ i N ∥ I i − h a t I i ∥ 2 2 L_{rgb} = \sum^ N_i \| I_i − hat{I}_i\|^2_2 Lrgb=∑iN∥Ii−hatIi∥22 来优化 NeRF。
在这里, I ^ i \hat{I}_i I^i是通过聚合相机射线 r ( h ) = o + h d r(h) = o + hd r(h)=o+hd上的辐射颜色在近界和远界 h n h_n hn和 h f h_f hf之间渲染的。更具体地说,我们使用体积渲染函数来合成 I ^ i \hat{I}_i I^i。
其中, T ( h ) = e x p ( − ∫ h n h σ ( r ( s ) ) d s ) T(h) = exp(−\int^h_{h_n} σ(r(s))ds) T(h)=exp(−∫hnhσ(r(s))ds) 是沿着一条射线累积的透射率。更多细节请参见[24]。
3.2 联合优化姿态和 NeRF
之前的研究 [12、18、45] 表明,可以通过在 Eq. (2) 中使用相同的体积渲染过程,在最小化上述光度误差 L r g b L_{rgb} Lrgb 的同时估计相机参数和 NeRF。
关键在于将相机光线投射的条件设置为可变的相机参数 Π Π Π,因为相机光线 r r r 是相机姿态的函数。数学上,这种联合优化可以表示为:
其中,符号 Π ^ \hat{\Pi} Π^表示在优化过程中更新的相机参数。请注意,公式(1)和公式(3)之间的唯一区别在于公式(3)将相机参数视为变量。
一般来说,相机参数 Π \Pi Π包括相机内参、姿态和镜头畸变。本文只考虑估计相机姿态,例如,第 i i i帧图像的相机姿态是一个变换 T i = [ R i ∣ t i ] T_i=[R_i|t_i] Ti=[Ri∣ti],其中 R i ∈ S O ( 3 ) R_i\in SO(3) Ri∈SO(3)表示旋转, t i ∈ R 3 t_i\in \mathbb{R}^3 ti∈R3表示平移。
3.3. 单目深度的校正
使用现成的单目深度网络(如DPT [28]),我们从输入图像生成单目深度序列 D = D i ∣ i = 0... N − 1 D = {D_i | i = 0 . . . N-1} D=Di∣i=0...N−1。不出所料,单目深度图并不是多视角一致的,因此我们的目标是恢复一系列多视角一致的深度图,这些深度图进一步在我们的相对位姿损失项中得到利用。
具体而言,我们为每个单目深度图考虑两个线性变换参数,从而得到所有帧的变换参数序列 Ψ = ( α i , β i ) ∣ i = 0... N − 1 Ψ = {(α_i,β_i) | i = 0 . . . N-1} Ψ=(αi,βi)∣i=0...N−1,其中 α i α_i αi和 β i β_i βi分别表示比例因子和偏移量。在NeRF的多视角一致性约束下,我们的目标是恢复 D i D_i Di的多视角一致深度图 D i ∗ D^∗_i Di∗:
通过联合优化 α i α_i αi和 β i β_i βi以及NeRF,来实现这种联合优化,主要是通过在未畸变的深度图 D i ∗ D^∗_i Di∗和通过NeRF渲染的深度图 D ^ i \hat{D}_i D^i之间强制实现一致性来实现的。这种一致性通过深度损失来实现:
其中
式(5)对NeRF和单目深度图都有好处。一方面,单目深度图为NeRF训练提供了强的几何先验,降低了形状-辐射度模糊性。另一方面,NeRF提供了多视角一致性,因此我们可以恢复一组多视角一致的深度图用于相对姿态估计。
…详情请参照古月居
相关文章:

经典文献阅读之--NoPe-NeRF(优化无位姿先验的神经辐射场)
0. 简介 在没有预先计算相机姿态的情况下训练神经辐射场(NeRF)是具有挑战性的。最近在这个方向上的进展表明,在前向场景中可以联合优化NeRF和相机姿态。然而,这些方法在剧烈相机运动时仍然面临困难。我们通过引入无畸变单目深度先…...

在docker中没有vi如何修改docker中的文件
今天在做学成在线的项目,遇到了一个问题,就是死活登不上xxl-job,按照之前遇到的nacos的问题,我怀疑很大概率是和当时的ip设置有关,不知道nacos的ip怎么修改的同学,可以看看这篇文章:关于docker中…...

【Docker】Docker应用部署之Docekr容器安装Nginx
目录 一、搜索镜像 二、拉取镜像 三、创建容器 四、测试使用 一、搜索镜像 docker search nginx 二、拉取镜像 docker pull nginx # 不加冒号版本号 默认拉取最新版 三、创建容器 首先我们需要在宿主机创建数据卷目录 mkdir nginx # 创建目录 cd nginx # 进入目录 mkd…...

flutter开发实战-jsontodart及 生成Dart Model类
flutter开发实战-jsontodart及 生成Dart Model类。 在开发中,经常遇到请求的数据Json需要转换成model类。这里记录一下Jsontodart生成Dart Model类的方案。 一、JSON生成Dart Model类 在开发中经常用到将json转成map或者list。通过json.decode() 可以方便 JSON 字…...

C++复刻:[流光按钮]+[悬浮波纹按钮]
目录 参考效果实现main.cppdialog.hdialog.cppflowingRayButton.h 流动光线按钮flowingRayButton.cpp 流动光线按钮hoveringRippleButton.h 悬浮波纹按钮hoveringRippleButton.cpp 悬浮波纹按钮模糊知识点 源码 参考 Python版本:GitHub地址 B站主页 效果 实现 ma…...

CompletableFuture 详解
目录 简单介绍 常见操作 创建 CompletableFuture new 关键字 静态工厂方法 处理异步结算的结果 简单介绍 CompletableFuture 同时实现了 Future 和 CompletionStage 接口。 public class CompletableFuture<T> implements Future<T>, CompletionStage<T…...

el-table数据处理
在写表格时遇到,后端返回的数据是对象,并且缺少字段 1.每一条数据加上 一个字段 2.将对象转成数组 以下是数据 {"groupA": {"groupName": null,"orgName": null,"orgId": null,"allPeoper": &quo…...

IPv4网络用户访问IPv6网络服务器
NAT64静态映射为一对一的对应关系,通常应用在IPv4网络主动访问IPv6网络的场景中。 要求位于IPv4网络中的PC通过IPv4地址1.1.1.10能够直接访问位于IPv6网络中Server。 操作步骤 配置FW。 # 配置接口GigabitEthernet 0/0/1的IPv4地址。 <FW> system-view [F…...
程序员是怎么记住代码的?
程序员能记住所有东西吗? 程序员不会记住他们使用的所有代码,相反,他们倾向于阅读文档,学习基本概念,并使用软件社区来解决问题。大约55%的软件开发人员报告每天至少使用一次StackOverflow来帮助解决编程问题。 使用…...
华为云NFS使用API删除大文件目录
最近在使用华为云SFS时,如果一个目录存储文件数超过100W,执行 “rm -rf path”时,存在删不动的情况,可以使用华为云API接口,执行异步删除。 华为官网: 删除文件系统目录_弹性文件服务 SFS_API参考_SFS Tu…...
国家金融监督管理总局明确将数据安全管理纳入操作风险管理范畴
为进一步完善银行保险机构操作风险监管规则,提升银行保险机构的操作风险管理水平,国家金融监督管理总局起草了《银行保险机构操作风险管理办法(征求意见稿)》(以下简称《办法》),现向社会公开征…...
.asScala爆红
转载:asScala报错 解决方案: 导入隐式转换 import scala.collection.JavaConverters._ //asScala需要使用隐式转换 代码中的asScala就可能不标红了,如果标红,就直接去掉,去掉就不报错了...

SOLIDWORKS Utilities应用
在实际的生产设计制造中,经常会遇到同一个零件多个版本,有可能再次调用零件的时间已经是很长时间之后,对于版本之间的区别就不会那么清楚,碰到简单明显的零件还可以轻松的找到区别,但是复杂的零件区别的查找可能会造成…...
发现的宝藏开源软件
1.华夏erp https://github.com/jishenghua/jshERP 2.s2b2c商城 后端 lilishop商城 电商 java商城系统: lilishop商城基于SpringBoot 全端开源 电商商城系统 支持小程序商城 H5商城 APP商城 PC商城 。支持业务模式包含 O2O商城 B2B商城 多语言商城 跨境电商 B2B2C商城 F2B2C商…...

【八】mybatis 日志模块设计
mybatis 日志模块设计 简介:闲来无事阅读一下mybatis的日志模块设计,学习一下优秀开源框架的设计思路,提升自己的编码能力 模块设计 在Mybatis内部定义了4个级别:Error:错误 、warn:警告、debug:调试、trance,日志优…...

Python-如何使用正则表达式
如何利用Python使用正则表达式 目录 正则表达式常用匹配规则 编辑re库的使用 match()方法: search()方法: findall()方法 : sub()方法: compile()方法; 通用匹配 贪婪与非贪婪匹配 贪婪匹配 非贪婪匹配 修饰符 转义匹配 正则表达式是处理字符的强大…...
分解质因子,将一个不小于2的整数分解质因数,例如,输入90,则输出:90=2*3*3*5
假设一个不小于2的整数n,对从2开始的自然数k,这个试探它是否是整数n的一个因子,如果是,则输出该因子,并将n/k的结果赋给n(接下来只需要对n除以已经找到的因子之后的结果继续找因子)。如果n的值不…...

C语言,vs各种报错分析(不断更新)
1.引发了异常: 写入访问权限冲突2.#error: Error in C Standard Library usage 1.引发了异常: 写入访问权限冲突 这里是malloc没有包含头文件<stdlib.h>,包含之后就好了 2.#error: Error in C Standard Library usage 这里就是用C语言写程序时使用了C的头文件…...

AR开发平台 | 探索AR技术在建筑设计中的创新应用与挑战
随着AR技术的不断发展和普及,越来越多的建筑师开始探索AR技术在建筑设计中的应用。AR(增强现实)技术可以通过将虚拟信息叠加到现实场景中,为设计师提供更加直观、真实的建筑可视化效果,同时也可以为用户带来更加沉浸式的体验。 AR开发平台广…...

小白到运维工程师自学之路 第六十集 (docker的概述与安装)
一、概述 1、客户(老板)-产品-开发-测试-运维项目周期不断延后,项目质量差。 随着云计算和DevOps生态圈的蓬勃发展,产生了大量优秀的系统和软件。软件开发人员可以自由选择各种软件应用环境。但同时带来的问题就是需要维护一个非…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...

【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...
ArcPy扩展模块的使用(3)
管理工程项目 arcpy.mp模块允许用户管理布局、地图、报表、文件夹连接、视图等工程项目。例如,可以更新、修复或替换图层数据源,修改图层的符号系统,甚至自动在线执行共享要托管在组织中的工程项。 以下代码展示了如何更新图层的数据源&…...