【论文精读】Pose-Free Neural Radiance Fields via Implicit Pose Regularization

今天读的是一篇发表在ICCV 2023上的文章,作者来自NTU。
文章地址:点击前往

文章目录

  • Abstract
  • 1 Intro
  • 2 Related Work
  • 3 Preliminary
  • 4 Proposed Method
    • 4.1 Overall Framework
    • 4.2 Scene Codebook Construction
    • 4.3 Pose-Guided View Reconstruction
    • 4.4 Training Process
    • 5 Experiment
    • 5.1 Datasets and Implementation Details
    • 5.2 Comparisons with SOTA
    • 5.3 Ablation Studies
    • 5.4 Visualization
    • 5.5 Parameters Investigation
  • 6 Limitation
  • 7 Conclusion

Abstract

Pose-free的NeRF最近很火,近期的工作大部分先是使用渲染的图片训练一个粗略的姿态估计器,再对NeRF和姿态进行联合优化。然而,训练期间只使用了rendered image,姿态估计经常偏移或不准确,因为渲染图与真实图片之间本来就有domain gap。这导致了很差的robustness,并且在联合优化中会陷入局部最优。我们设计了IR-NeRF,使用implicit pose regularization来细化pose estimator。该框架创建了scene codebook来存储scene features并且获取scene- specific pose distribution implicity作为先验。

1 Intro

在这里插入图片描述
简介,主要贡献有:

  • 提出了IR-NeRF来通过unposed images来训练
  • 建立了scene codebook来编码场景特征,并隐式地获取相机姿态分布来作为先验
  • 设计了一个pose-guided重建范式来使用场景先验来使用unposed images细化pose estimator,提升了其robustness。

2 Related Work

介绍了NeRF、Pose- Free NeRF和Visual Codebook的相关工作。

3 Preliminary

介绍了一些基础知识,比如相机姿态估计和NeRF的形式。
这一章很短,我个人认为直接并入2就可以了。

4 Proposed Method

4.1 Overall Framework

给一个随机采样的相机pose序列,先使用adversarial loss学一个coarse NeRF,然后render出相机pose的图片。pose estimator P是通过两步训练来预测相机姿态的。首先,它被训练regress 初始的pose,使用了渲染出来的图片。然后,使用一个implicit pose regularization 来refine 这个 P P P,使用unposed real images。这个implicit pose regularization呢可以提升鲁棒性,因为只用这个渲染出来的图片来训练是不准确的。

这个implicit pose regularization的要点其实是scene codebook construction和pose-guided view reconstruction with view consistency loss。这个codebook C C C首先通过重建真实图片来获得。然后,给定一个real image,pose-guided view reconstruction使得 P P P来估算该图片的相机姿态,进一步使用该姿态来指导 C C C里面的linear combination of feature embeddings,来重建对应的图片。implicit pose regularization可以通过计算视觉一致性loss来实现。我们同样联合refine了学习得到的粗略NeRF和预测的相机姿态。

4.2 Scene Codebook Construction

在这里插入图片描述

我们没有单纯地把输入图片编码到representations里面去,这样会导致难以获得整体的pose分布。我们设计了新的scene codebook construction,使用linear combination,这可以作为implicit distribution prior来达到健壮的姿态估计性能。

这个scene codebook construction由三个部分组成:image-weight learner E I E_{I} EI ,一个scene codebook C = { c n } n = 1 N C=\{c_{n}\}_{n=1}^{N} C={cn}n=1N,和一个decoder G G G。这个codebook通过重建unposed real images来学习。这个image-weight learner被使用来得到一个权重组合 X = { x n } n = 1 N X=\{x_{n}\}_{n=1}^{N} X={xn}n=1N基于真实图片 I I I

X = S o f t m a x ( E I ( I ) ) X = Softmax(E_{I}(I)) X=Softmax(EI(I))

feature embedding f f f of the real image I I I 在之后被创建,通过codebook里面的这个线性权重组合,可以表达为:

f = Σ n = 1 N c n x n f = \Sigma_{n=1}^{N}c_{n}x_{n} f=Σn=1Ncnxn

有了 f f f之后,真实图片 I I I可以通过decoder G G G来重建:

I ≈ I ˆ = G ( f ) I \approx \^I =G(f) IIˆ=G(f)

其中 I ˆ \^I Iˆ代表的是reconstructed image。配备了image reconstruction loss L r e c L_{rec} Lrec后,scene codebook可以被学习:

L r e c ( E I , C , G ) = ∣ ∣ I − I ˆ ∣ ∣ 2 L_{rec}(E_{I}, C, G) = || I-\^I||^{2} Lrec(EI,C,G)=∣∣IIˆ2

为了降低联合训练它们的难度,提升训练稳定性,我们采用了预训练的VGG19来初始化scene codebook C C C,通过编码一系列真实图片:

C i n i = V G G ( [ I 0 , I 1 , . . . , I T ] ) C_{ini}=VGG([I_{0}, I_{1}, ..., I_{T}]) Cini=VGG([I0,I1,...,IT])

后续这个 C i n i C_{ini} Cini会被image reconstruct loss L r e c L_rec Lrec来优化的。

4.3 Pose-Guided View Reconstruction

在有了 C C C G G G之后,可以保证只有姿态在场景姿态分布内的图片会被重建,在这个条件下,我们设计了pose引导的view reconstruction with view consistency loss来使用unposed images对姿态估计进行refine。基于针对真实图片 I I I估算出来的相机姿态 ϕ ′ \phi' ϕ,与 ϕ ′ \phi' ϕ对应的图片 I ′ I' I被通过codebook里面的feature embeddings的线性组合来重建。更具体而言,一个pose-weight learner E P E_{P} EP被首先使用来产生一系列权重,基于估计的相机姿态 ϕ ′ \phi' ϕ

X ′ = S o f t m a x ( E P ( ϕ ′ ) ) X' = Softmax(E_{P}(\phi')) X=Softmax(EP(ϕ))

对于和 ϕ ′ \phi' ϕ对应的feature embedding f ′ f' f的重建,可以被表达为 f ′ = Σ n = 1 N c n x n ′ f' = \Sigma_{n=1}^{N} c_{n}x_{n}' f=Σn=1Ncnxn,其中 c n c_{n} cn x n ′ x_{n}' xn代表第n个feature1 embedding和第n个权重。最后,图片 I ′ I' I可以被通过被frozen的decoder G G G来重建,它注重于解码codebook里面特征的线性组合。

通过使用这个被decoder重建出来的图片 I ^ \hat I I^作为pseudo GT,一个视觉一致性loss L c L_{c} Lc计算了重建的图片和伪真值之间的关系:

L c ( P , E P ) = 1 i Σ i = 1 N ∣ ∣ I i ′ − I ^ i ∣ ∣ 2 L_{c}(P, E_{P}) = \frac{1}{i} \Sigma_{i=1}^{N}||I_{i}'-\hat I_{i}||^{2} Lc(P,EP)=i1Σi=1N∣∣IiI^i2

如果被 P P P估算出来的相机姿态 ϕ ′ \phi' ϕ 偏移了姿态分布,那么对应的由C和G重建出来的视角 I ′ I' I就不会和伪GT对齐。这样,分布之外的姿态就会被抑制住。

4.4 Training Process

训练过程包括粗略NeRF训练、相机姿态估计、联合优化NeRF与相机姿态。对于粗略NeRF训练,我们使用了adversarial loss,并用随机初始化的姿态,因为缺乏已知的pose。

对于相机姿态估计,我们首先使用MSE loss和渲染出来的图片来优化粗略的 P P P,然后使用implicit pose regularization来refine。codebook在使用unposed real images来发挥功能,在 L r e c L_{rec} Lrec的监督之下。在有了codebook和decoder之后,pose estimator可以被优化,来预测真实图片的相机姿态,被视觉一致性loss L c L_{c} Lc驱动。在此之外,还用了光度一致性loss来联合优化。注意,NeRF在相机姿态估计期间被frozen,但在联合优化期间是可以被训的。

5 Experiment

5.1 Datasets and Implementation Details

使用了NeRF- Synthetic数据集和DTU数据集来分别代表合成数据与现实世界场景。对于NeRF-Synthetic数据集,训练时,每个场景使用100张图片并且resize到了400400像素,测试时,随机从test set里面选8张图片;对于DTU数据集,训练时,每个场景使用43张图片并且resize到了500400,测试时,使用剩下的6张。

介绍了一些实现细节和参数。

5.2 Comparisons with SOTA

只和GNeRF做了对比,在视觉合成与相机姿态估计两个维度进行了比较。

5.3 Ablation Studies

针对implicit pose regularization、codebook和view consistency loss做了消融实验。

5.4 Visualization

画了个图统计,说在分布之外的离谱的姿态少了很多。

5.5 Parameters Investigation

探讨了codebook的大小参数 N N N的变化对性能的影响。更大的数意味着存储更多的场景特征,可以提升合成图片的质量,但是也意味着模型训练时的计算开销和显存消耗变大。在本文中,N被设置为了1024。

6 Limitation

最大的缺点是,NeRF训练、姿态估计、联合优化,这三个阶段加在一起,训练的时间太长。

7 Conclusion

总结了创新点。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows 微PE WePE_64_V2.3 PE模式下启用账号和修改密码

启动PE后,进入桌面打开运行dism程序 选择带有系统的盘符(默认选的是PE盘),然后打开会话 选择左侧工具箱,然后右侧找到账户管理 然后就可以对已有账号进行管理了 结束。

【python自动化】Playwright基础教程(四)事件操作①高亮元素匹配器鼠标悬停

本文目录 文章目录 前言高亮显示元素定位 - highlighthighlight实战highlight定位多个元素 元素匹配器 - nthnth实战演示 元素匹配 - first&last 综合定位方式时间操作进行实战,巩固之前我们学习的定位方式。 这一部分内容对应官网 : https://playwright.dev/py…

Java SE 封装、包、static关键字和代码块

1.封装 1.1封装的概念 面向对象程序三大特性:封装、继承、多态。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说 就是套壳屏蔽细节。 封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细…

关于反弹Shell个人的一些理解与学习收获

反弹Shell 概念: 反弹shell(reverse shell),就是控制端(攻击者所有)监听某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转发到控制端。reverse shell与telnet,ssh等标准shell对应,本质上是…

C++模拟实现——AVL树

AVL树 1.介绍 AVL树是对搜索二叉树的改进,通过特定的方法使得每个节点的左右子树高度差绝对值不超过1,使得避免出现歪脖子的情况,最核心的实现在于插入值部分是如何去实现平衡调整的,由于前面详细实现和解析过搜索二叉树&#x…

Android问题笔记四十四:关于RecyclerView出现Inconsistency detected崩溃

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

Linux---(六)自动化构建工具 make/Makefile

文章目录 一、make/Makefile二、快速查看(1)建立Makefile文件(2)编辑Makefile文件(3)解释(4)效果展示 三、背后的基本知识、原理(1)如何清理对应的临时文件呢…

vite 深入浅出

vite 深入浅出 简介 vite(轻量&#xff0c;轻快的意思) 是一个由原生 ES Module 驱动的 Web 开发前端构建工具。 浏览器原生 ESM&#xff1a;浏览器支持的 JavaScript 模块化标准&#xff0c;可以直接使用 <script type"module"> 标签加载模块&#xff0c;无…

第二证券:定增价公布后第二天股价表现?

近年来&#xff0c;定增成为一种较为老练的公司融资方法&#xff0c;它通过向指定政策定向发行股份来筹集资金&#xff0c;相关于非公开发行股票或增发股份&#xff0c;定增的市场轰动和价格变化相对较小。但是&#xff0c;定增股票发行通常会推动股价的不坚决和出资者的心境崎…

Prometheus+Ansible+Consul实现服务发现

一、简介 1、Consul简介 Consul 是基于 GO 语言开发的开源工具&#xff0c;主要面向分布式&#xff0c;服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。 在没有使用 consul 服…

【社会网络分析第5期】gephi使用指南

gephi数据可视化 gephi数据可视化1、软件安装2、数据处理与导入&#xff08;1&#xff09;导入节点&#xff08;2&#xff09;导入边&#xff08;3&#xff09;改变节点的颜色&#xff08;4&#xff09;根据pagerank调整节点的大小&#xff08;5&#xff09;根据pagerank调整边…

上海亚商投顾:沪指缩量调整跌 高位强势股继续退潮

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数11月10日弱势震荡&#xff0c;上证50盘中跌超1%&#xff0c;以保险为首的权重板块走势较弱。 高位强…

SpringCloudalibaba

一、分布式和微服务 分布式系统和服务是现代软件开发中的两个重要概念。它们为复杂的应用程序提供了模块化和可扩展性&#xff0c;使其能够在多台机器上运行&#xff0c;并为大量用户提供服务。 分布式系统 定义: 分布式系统是由多个独立组件组成的系统&#xff0c;这些组件…

Maven 插件统一修改聚合工程项目版本号

目录 引言直接修改 pom.xml 的版本号的问题Maven 插件修改版本号开源项目微服务商城项目前后端分离项目 引言 在Maven项目中&#xff0c;我们通常有两种常见的方式来修改版本号&#xff1a;直接在pom.xml文件中手动编辑和利用Maven插件进行版本号调整。 本文将比较这两种修改…

R语言编写代码示例

R语言编写的爬虫程序&#xff0c;使用了requests库来发送请求&#xff0c;使用BeautifulSoup库来解析HTML。 r # 第一步&#xff0c;安装必要的库 install.packages("xml2") install.packages("requests") install.packages("httr") install.pac…

【系统安装】ubuntu20.04安装,正经教程,小白安装教程,百分百成功安装

1、安装的前提是有启动盘&#xff0c;这个比较好处理&#xff0c;清华源找到ubuntu20.04.iso镜像文件下载&#xff0c;然后用Rufus来制作启动盘就可以了&#xff0c;需要注意的是目标文件系统需要是UEFI&#xff0c;其他的话就没太多要求了&#xff0c;如果卡在这一步的话&…

助力燃气安全运行:智慧燃气管网背景延展

关键词&#xff1a;城市燃气管网、智慧燃气管网、智慧管网、智慧燃气管网解决方案、智慧燃气 01背景 当前&#xff0c;随着我国城市化进程不断加快&#xff0c;城市燃气管网也不断延伸&#xff0c;运行规模庞大&#xff0c;地下管线复杂&#xff0c;不少城市建设“重地上轻地…

Windows系统下使用docker部署redis

使用虚拟机部署redis&#xff0c;虚拟机很占用电脑资源&#xff0c;所以选择使用docker对redis进行部署。 一、安装docker 安装链接&#xff1a;https://docker.p2hp.com/ 二、配置redis.conf文件 下载配置文件&#xff1a;https://download.redis.io/redis-stable/redis.con…

Js 语句

JavaScript 语句向浏览器发出的命令&#xff0c;语句的作用是告诉浏览器该做什么&#xff1b;分号用于分隔 JavaScript 语句&#xff0c;通常我们在每条可执行的语句结尾添加分号&#xff1b;使用分号的另一用处是在一行中编写多条语句。 JavaScript 语句通常以一个 语句标识符…

【C语言】深入解开指针(二)

&#x1f308;write in front :&#x1f50d;个人主页 &#xff1a; 啊森要自信的主页 &#x1f308;作者寄语 &#x1f308;&#xff1a; 小菜鸟的力量不在于它的体型&#xff0c;而在于它内心的勇气和无限的潜能&#xff0c;只要你有决心&#xff0c;就没有什么事情是不可能的…