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

news2024/10/7 20:29:28

今天读的是一篇发表在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

总结了创新点。

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

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

相关文章

【带头学C++】----- 五、字符串操作函数 ---- 5.1 字符串操作函数

5.1字符串操作函数(以str开头的字符串处理函数默认遇到\0结束操作) 5.1.1 测量字符串的长度strlen() strlen() 函数用于计算一个字符串的长度。 #include <string.h> //注意&#xff1a;该头文件必须包含 size_t strlen(const char *s); // s指的是需要测量字符串的首地…

计算机二级Office真题解析 excel减免税,订单,成绩

第一题 1.将“Excel 减免税.xlsx”文件另存为 excel.xlsx&#xff0c;最后提交该文件&#xff08;1 分&#xff09;。 2.将“对应代码.xlsx”文件中的 sheet1 工作表插入到 excel.xlsx 中&#xff0c;工作 表名重命名为“代码”&#xff08;3 分&#xff09;。 3.在"序号&…

Rust 中的引用与借用

目录 1、引用与借用 1.1 可变引用 1.2 悬垂引用 1.3 引用的规则 2、slice 类型 2.1 字符串字面量其实就是一个slice 2.2 总结 1、引用与借用 在之前我们将String 类型的值返回给调用函数&#xff0c;这样会导致这个String会被移动到函数中&#xff0c;这样在原来的作用域…

2023年亚太杯数学建模思路 - 案例:FPTree-频繁模式树算法

文章目录 赛题思路算法介绍FP树表示法构建FP树实现代码 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模式树算法&#…

git 命令行回退版本

git 命令行回退版本 git 命令行回退版本命令: 1.切换到需要回退的分支 git checkout branch-v2.0.02.更新远程分支 git fetch3.找到需要回退版本的版本号git revert a6914da55ff40a09e67ac2426b86f1212e6580eb4.清除工作区缓存git clean -df5.强制提交git push -f

[Linux] dns域名解析服务

一、DNS 1.1 DNS简介 域名解析&#xff1a;&#xff08;英文&#xff1a;Domain Name System&#xff0c;缩写&#xff1a;DNS&#xff09;是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便地访问互联网。DNS使用udp53和tcp53…

互联网Java工程师面试题·微服务篇·第三弹

目录 34、什么是端到端微服务测试&#xff1f; 35、Container 在微服务中的用途是什么&#xff1f; 36、什么是微服务架构中的 DRY&#xff1f; 37、什么是消费者驱动的合同&#xff08;CDC&#xff09;&#xff1f; 38、Web&#xff0c;RESTful API 在微服务中的作用是什…

C++字典树算法:找出强数对的最大异或值 II

涉及知识点 数学 字典树 题目 给你一个下标从 0 开始的整数数组 nums 。如果一对整数 x 和 y 满足以下条件&#xff0c;则称其为 强数对 &#xff1a; |x - y| < min(x, y) 你需要从 nums 中选出两个整数&#xff0c;且满足&#xff1a;这两个整数可以形成一个强数对&…

Mybatis框架——mybatis是什么

第一&#xff0c;mybatis是一个持久层的框架&#xff0c;它支持自定义SQL&#xff0c;存储过程以及高级映射。 mybatis几乎代替了所有的JDBC代码以及设置参数和获取结果集的工作&#xff0c;可以通过简单的XML或者注解来配置和映射原始类型、接口和Java POJO&#xff08;Plain…

webgoat-Challenges

AdminLostpassword 这一题密码藏在logo图片里 请求GET /WebGoat/challenge/logo 搜索admin看到密码&#xff0c;使用账号admin和这个密码登录拿到flag Without password 题目要求&#xff1a;在不知道Larry的密码情况下登录 考虑使用SQL注入 密码输入 123 or 11 -- Admin p…

【数据结构——队列的实现(单链表)】

数据结构——队列的实现&#xff08;单链表&#xff09; 一.队列1.1队列的概念及结构 二.队列的实现2.1 头文件的实现——&#xff08;Queue.h&#xff09;2.2 源文件的实现—— &#xff08;Queue.c&#xff09;2.3 源文件的实现—— &#xff08;test.c&#xff09; 三.队列的…

20.1 platform 设备驱动

一、Linux 驱动的分离与分层 1. 驱动的分隔和分离 现在有三个平台&#xff0c;A、B 和 C&#xff0c;这三个平台都有 MPU6050 设备。编写最简单的驱动框架如下图&#xff1a; 每个平台下都有一个主机驱动和设备驱动&#xff0c;主机驱动是必要的&#xff0c;因为不同的平台 I2…

【算法】新的开始(Kruskal算法,虚拟源点)

题目 发展采矿业当然首先得有矿井&#xff0c;小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了 n 口矿井&#xff0c;但他似乎忘记了考虑矿井供电问题。 为了保证电力的供应&#xff0c;小 FF 想到了两种办法&#xff1a; 在矿井 i 上建立一个发电站&#xff0c;费用…

【计算机网络笔记】IP子网划分与子网掩码

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

项目笔记记录

一、node下载版本报错&#xff1a;npm install --legacy-peer-deps 二、Scheduled: 任务自动化调度 Scheduled 标记要调度的方法的注解&#xff0c;必须指定 cron&#xff0c;fixedDelay或fixedRate属性之一 fixedDelay&#xff1a;固定延迟 延迟执行任务&#xff0c;任务在…

sqli-labs关卡17(基于post提交的单引号闭合的报错盲注)通关思路

文章目录 前言一、回顾上一关知识点二、靶场第十四关通关思路1、判断注入点2、爆显位3、爆数据库名4、爆数据库表5、爆数据库列6、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识&#xff0c;禁止用于做非法攻击。注意靶场是可以练习的平台&#xff0c;不…

使用validator实现枚举类型校验

使用validator实现枚举类型校验 前言&#xff1a; 在前端调用后端接口传递参数的过程中&#xff0c;我们往往需要对前端传递过来的参数进行校验&#xff0c;比如说我们此时需要对用户的状态进行更新&#xff0c;而用户的状态只有正常和已删除&#xff0c;并且是在代码中通过枚…

20.有效的括号(LeetCode)

思路&#xff1a;用栈的后进先出的特性&#xff0c;来完成题目的要求 因为C有库&#xff0c;可以直接用&#xff0c;而C语言没有&#xff0c;所以我们直接把写好的栈拷贝上来用。 首先&#xff0c;完成框架的搭建 其次&#xff0c;再实现循环内的部分。1.左括号入栈 2.右括…

键盘接受一串字符到BUF为首地址的字节单元中,要求用下列方法分别编程,将它们以相反的次序显示在屏幕的下一行中

(1).按地址从尾向前依次显示。 (2)利用堆栈反向显示。 (3).利用交换的方法反序后&#xff0c;然后显示&#xff1a;即ai<——>aj

通过流量分析查看业务系统运行和访问情况

在当今数字化时代&#xff0c;应用程序的运行和访问情况对于企业和组织来说至关重要。无论是在线销售平台、移动应用还是企业内部系统&#xff0c;应用的性能和可用性直接影响着用户体验、业务流程以及组织效率。因此&#xff0c;对应用的运行和访问情况进行全面分析和评估&…