【CameraPoseRefinement】以BARF为例介绍三维重建中的位姿优化

2024/12/1 21:33:00

本文主要是介绍【CameraPoseRefinement】以BARF为例介绍三维重建中的位姿优化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Introduction


在计算机视觉三维重建中,求解3D场景的表示和定位给定的相机帧的相机位姿是两个非常重要的任务,这两个问题互为依赖,一方面,恢复3D场景的表示需要使用已知的相机位姿进行观察;另一方面,定位相机需要来自特征点的可靠对应。

错误的相机位姿会对重建的输出和性能产生一系列负面影响,包括:

  1. 图像合成质量下降

    • 当相机位姿不准确时,生成的视角合成图像可能会出现明显的畸变或模糊,导致最终图像的质量较差。
  2. 三维场景表示不准确

    • 错误的位姿会导致三维场景中的几何结构和深度信息的错误重建,使得模型无法正确理解场景的空间布局。
  3. 影像重叠和视差问题

    • 不准确的位姿可能会造成图像重叠区域的视差不一致,进而导致合成图像中的物体位置、大小等出现明显的不自然或错位现象。
  4. 优化过程的困难

    • 由于相机位姿的误差,优化算法(如Adam)可能会在优化过程中陷入局部最优解,无法收敛到正确的场景表示和相机位置。
  5. 训练效率降低

    • 不准确的相机位姿会使得训练过程变得更加复杂,模型需要更多的迭代才能调整出合理的场景表示,从而延长训练时间。
  6. 潜在的视觉伪影

    • 由于误差,合成图像可能出现视觉伪影(artifacts),如不连贯的阴影、错误的光照等,使得生成的图像看起来不真实。

红框是伪影,蓝框是错位。

在《3D Gaussian Splatting for Real-Time Radiance Field Rendering》发布后,很多重建方法都尝试在3D表征上进行创新,它们普遍使用预输入的相机位姿进行重建,而不同时考虑相机位姿的校准,这些预输入的相机位姿通常是由colmap软件估计得到的。此次介绍的两篇文章《BARF》和《HGSLoc》在进行场景重建的同时进行相机位姿的优化,它们使用一些来自不同视角的图像和这些图像的粗略位姿作为输入,并且在相机位姿优化的方法上做出了改进。

Approach

Planar Image Alignment(2D)

首先,BARF考虑2D的平面图像对齐问题。

KaTeX parse error: Expected & or \\ or \end at position 19: …egin{array}{c} 设̲\mathbf{x} \in …

我们的目标是使得生成的图片与原图片尽可能地相似,这个联合优化的目标用最小二乘来表达,就是:

min⁡p∑x∥I1(W(x;p))−I2(x)∥22 \min _{\mathbf{p}} \sum_{\mathbf{x}}\left\|\mathcal{I}_{1}(\mathcal{W}(\mathbf{x} ; \mathbf{p}))-\mathcal{I}_{2}(\mathbf{x})\right\|_{2}^{2} pminxI1(W(x;p))I2(x)22

相机参数的维度可以记作

p∈RP \mathbf{p} \in \mathbb{R}^P pRP

这个最小二乘问题的基础迭代步骤可以记作:

Δp=−A(x;p)∑xJ(x;p)⊤(I1(W(x;p))−I2(x)) \Delta \mathbf{p}=-\mathbf{A}(\mathbf{x} ; \mathbf{p}) \sum_{\mathbf{x}} \mathbf{J}(\mathbf{x} ; \mathbf{p})^{\top}\left( \mathcal{I}_{1}(\mathcal{W}(\mathbf{x} ; \mathbf{p})) - \mathcal{I}_{2}(\mathbf{x}) \right) Δp=A(x;p)xJ(x;p)(I1(W(x;p))I2(x))

其中,

KaTeX parse error: Expected & or \\ or \end at position 29: …}{c} \mathbf{J}是̲从输出到待优化变量求导的雅克比…

J(x;p)=∂I1(W(x;p))∂W(x;p)∂W(x;p)∂p \mathbf{J}(\mathbf{x};\mathbf{p})=\frac{\partial\mathcal{I}_1(\mathcal{W}(\mathbf{x};\mathbf{p}))}{\partial\mathcal{W}(\mathbf{x};\mathbf{p})}\frac{\partial\mathcal{W}(\mathbf{x};\mathbf{p})}{\partial\mathbf{p}} J(x;p)=W(x;p)I1(W(x;p))pW(x;p)

残差:

KaTeX parse error: Expected & or \\ or \end at position 128: …\mathbf{p}))\\ 有̲的资料中把\mathbf{J}…

Δp=−A(x;p)∑xJ(x;p)⊤r(x) \Delta \mathbf{p}=-\mathbf{A}(\mathbf{x} ; \mathbf{p}) \sum_{\mathbf{x}} \mathbf{J}(\mathbf{x} ; \mathbf{p})^{\top} \mathbf{r}(\mathbf{x}) Δp=A(x;p)xJ(x;p)r(x)

KaTeX parse error: Expected & or \\ or \end at position 19: …egin{array}{c} 如̲果选择一阶优化方法,\math…

以上是对这个最小二乘问题的概述。这种基于梯度的优化策略的核心在于输入信号是否足够平滑,否则,很容易陷入局部次优解。输入信号的平滑程度等价于:

KaTeX parse error: Expected 'EOF', got ',' at position 60: …tial\mathbf{x}},̲亦即图像梯度

为了避免局部最优,通常在优化的前期对图像进行模糊处理。图像梯度通过数值差分方法得出,而并非解析的。

KaTeX parse error: Expected & or \\ or \end at position 23: …{array}{c} BARF并̲没有采用模糊操作,它用神经网络…

通过操纵网络f,还可以对对齐的信号平滑度进行更原则性的控制,而不必依赖于图像的启发式模糊,从而使这些形式可推广到3D场景表示。稍后,将会介绍barf如何操作f对信号进行平滑度控制。

Neural Radiance Fields (3D)

接下来,BARF将以上过程拓展为3D,具体如下:

KaTeX parse error: Expected & or \\ or \end at position 19: …egin{array}{c} 多̲层感知机:f:\mathbb{…

体渲染表达式:

KaTeX parse error: Expected & or \\ or \end at position 177: …mathrm{d}z ,\\ 其̲中,z_{\mathrm{ne…

T对应3dgs中的透射率。这两个式子和3dgs的体渲染公式也是极为接近的:

KaTeX parse error: Expected 'EOF', got '\\' at position 88: …n}(1-\alpha_m),\̲\̲ \alpha_n=o_n\c…

区别在于,3dgs中的T是通过累乘得出,体素密度则取决于椭球投影到平面的形状再乘以不透明度。而nerf中的颜色值和体素密度是通过MLP直接得出。

KaTeX parse error: Expected & or \\ or \end at position 19: …egin{array}{c} 令̲\mathbf{y}=[\ma…

最后,这个联合优化问题变为:
KaTeX parse error: Expected '}', got '\boldsymbol' at position 38: ….,\mathbf{p}_M,\̲b̲o̲l̲d̲s̲y̲m̲b̲o̲l̲{\Theta}}\sum_{…

Bundle-Adjusting Neural Radiance Fields

barf与Nerf差异最大的一点在于,barf需要在优化网络参数的同时考虑到相机参数。而barf认为直接使用nerf的位置编码方案使得相机参数优化变得困难,对此,barf做出了改进,提出了捆绑优化的动态调整策略,这也是这篇文献最大的贡献之一。

Nerf最初的位置编码方案为:

γ(x)=[x,γ0(x),γ1(x),…,γL−1(x)]∈R3+6L \gamma(\mathbf{x})=\begin{bmatrix}\mathbf{x},\gamma_0(\mathbf{x}),\gamma_1(\mathbf{x}),\ldots,\gamma_{L-1}(\mathbf{x})\end{bmatrix}\in\mathbb{R}^{3+6L} γ(x)=[x,γ0(x),γ1(x),,γL1(x)]R3+6L

这里的L是超参数。

γk(x)=[cos⁡(2kπx),sin⁡(2kπx)]∈R6 \gamma_k(\mathbf{x})=\begin{bmatrix}\cos(2^k\pi\mathbf{x}),\sin(2^k\pi\mathbf{x})\end{bmatrix}\in\mathbb{R}^6 γk(x)=[cos(2kπx),sin(2kπx)]R6

那么,k阶位置编码的雅克比矩阵为:
∂γk(x)∂x=2kπ⋅[−sin⁡(2kπx),cos⁡(2kπx)] \frac{\partial\gamma_k(\mathbf{x})}{\partial\mathbf{x}}=2^k\pi\cdot\left[-\sin(2^k\pi\mathbf{x}),\cos(2^k\pi\mathbf{x})\right] xγk(x)=2kπ[sin(2kπx),cos(2kπx)]

它将来自MLP的梯度信号放大,并且其方向以相同频率变化。这使得预测有效更新Δp变得困难,因为来自采样的3D点的梯度信号在方向和幅度方面是不相干的,并且很容易相互抵消。因此,对于barf的联合优化来说,不能直接应用位置编码。


barf的做法是从低频段到高频段逐步激活位置编码:
KaTeX parse error: Expected 'EOF', got '\\' at position 441: …t]. \end{array}\̲\̲ \alpha \in [o,…

从原始3D输入x(α=0)开始,barf逐渐激活较高频段的编码,直到启用完整位置编码(α=L),相当于原始 NeRF 模型。这使得 BARF 能够通过最初平滑的信号发现正确的Δp,然后将重点转移到学习高保真场景表示。

Experiment

平面图像对齐的定性实验

给定图像块,barf的目标是恢复整个图像的对齐和神经网络重建,其中初始化为(b)中所示的中心裁剪,而相应的真实变换(ground-truth warps)如(c)所示。

实验结果:(a)为直接使用位置编码,(b)为不使用位置编码,©是barf的结果。

合成场景上的定量实验

Scene Camera pose registration View synthesis quality
Rotation (°) ↓ Translation ↓ PSNR ↑ SSIM ↑ LPIPS ↓
full pos.enc.w/o pos.enc.BARF full pos.enc.w/o pos.enc.BARF full pos.enc.w/o pos.enc.BARFref. NeRF full pos.enc.w/o pos.enc.BARFref. NeRF full pos.enc.w/o pos.enc.BARFref. NeRF
Chair7.1860.1100.096 16.6380.5550.428 19.0230.2231.1631.91 0.8040.9420.9540.961 0.2230.0650.0440.036
Drums3.2080.0570.043 7.3220.2550.225 20.8323.5623.9123.96 0.8400.8930.9000.902 0.1660.1160.0990.095
Ficus9.3680.0950.085 10.1350.4300.474 19.7525.5826.2626.58 0.8360.9260.9340.941 0.1820.0700.0580.051
Hotdog3.2900.2250.248 6.3441.1221.308 28.1534.0034.5434.91 0.9230.9670.9700.973 0.0830.0400.0320.029
Lego3.2520.1080.082 4.8410.3910.291 24.2326.3528.3329.28 0.8760.8800.9270.942 0.1020.1120.0500.037
Materials6.9710.8450.844 15.1882.6782.692 16.5126.8627.4828.06 0.7470.9260.9360.942 0.2940.0680.0580.049
Mic10.5540.0810.075 22.7240.3560.301 15.1030.9331.1831.83 0.7880.9660.9690.971 0.3340.0560.0490.046
Ship5.5060.0950.074 7.2320.3540.326 22.1226.7827.5028.00 0.7550.8330.8490.858 0.2550.1750.1320.118
Mean6.167<0.202<0.193 11.3030.7680.756 22.1226.7827.5029.40 0.8210.9170.9300.936 0.2050.0870.0650.057

本文由博客一文多发平台 OpenWrite 发布!



这篇关于【CameraPoseRefinement】以BARF为例介绍三维重建中的位姿优化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程