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

今天读的是一篇发表在ICCV 2023上的文章,作者来自NTU。

文章地址:点击前往

文章目录

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

介绍了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) I≈Iˆ=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)=∣∣I−Iˆ∣∣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∣∣Ii′−I^i∣∣2

如果被 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

总结了创新点。

相关推荐
artificiali4 小时前
Anaconda配置pytorch的基本操作
人工智能·pytorch·python
#include<菜鸡>6 小时前
动手学深度学习(pytorch土堆)-04torchvision中数据集的使用
人工智能·pytorch·深度学习
chnyi6_ya7 小时前
深度学习的笔记
服务器·人工智能·pytorch
安逸sgr8 小时前
1、CycleGAN
pytorch·深度学习·神经网络·生成对抗网络
shiming887912 小时前
MATLAB图像处理
图像处理·计算机视觉·matlab
点PY14 小时前
基于Sparse Optical Flow 的Homography estimation
人工智能·opencv·计算机视觉
独木三绝15 小时前
OpenCV第八章——腐蚀与膨胀
人工智能·opencv·计算机视觉
柠檬少少开发16 小时前
图像拼接算法及实现(一)
人工智能·算法·计算机视觉
繁依Fanyi16 小时前
828 华为云征文|华为 Flexus 云服务器部署 RustDesk Server,打造自己的远程桌面服务器
运维·服务器·开发语言·人工智能·pytorch·华为·华为云
红米煮粥16 小时前
OpenCV-直方图
人工智能·opencv·计算机视觉