工信部信息备案网站查询,湖南旅游攻略,网络营销的整体概念,野花韩国视频在线观看免费高清文章目录 IntroductionApproachPlanar Image Alignment(2D)Neural Radiance Fields (3D)Bundle-Adjusting Neural Radiance Fields Experiment平面图像对齐的定性实验合成场景上的定量实验 Introduction
在计算机视觉三维重建中#xff0c;求解3D场景的表示和定位给定的相机帧… 文章目录 IntroductionApproachPlanar Image Alignment(2D)Neural Radiance Fields (3D)Bundle-Adjusting Neural Radiance Fields Experiment平面图像对齐的定性实验合成场景上的定量实验 Introduction
在计算机视觉三维重建中求解3D场景的表示和定位给定的相机帧的相机位姿是两个非常重要的任务这两个问题互为依赖一方面恢复3D场景的表示需要使用已知的相机位姿进行观察另一方面定位相机需要来自特征点的可靠对应。
错误的相机位姿会对重建的输出和性能产生一系列负面影响包括 图像合成质量下降 当相机位姿不准确时生成的视角合成图像可能会出现明显的畸变或模糊导致最终图像的质量较差。 三维场景表示不准确 错误的位姿会导致三维场景中的几何结构和深度信息的错误重建使得模型无法正确理解场景的空间布局。 影像重叠和视差问题 不准确的位姿可能会造成图像重叠区域的视差不一致进而导致合成图像中的物体位置、大小等出现明显的不自然或错位现象。 优化过程的困难 由于相机位姿的误差优化算法如Adam可能会在优化过程中陷入局部最优解无法收敛到正确的场景表示和相机位置。 训练效率降低 不准确的相机位姿会使得训练过程变得更加复杂模型需要更多的迭代才能调整出合理的场景表示从而延长训练时间。 潜在的视觉伪影 由于误差合成图像可能出现视觉伪影artifacts如不连贯的阴影、错误的光照等使得生成的图像看起来不真实。 红框是伪影蓝框是错位。
在《3D Gaussian Splatting for Real-Time Radiance Field Rendering》发布后很多重建方法都尝试在3D表征上进行创新它们普遍使用预输入的相机位姿进行重建而不同时考虑相机位姿的校准这些预输入的相机位姿通常是由colmap软件估计得到的。此次介绍的两篇文章《BARF》和《HGSLoc》在进行场景重建的同时进行相机位姿的优化它们使用一些来自不同视角的图像和这些图像的粗略位姿作为输入并且在相机位姿优化的方法上做出了改进。
Approach
Planar Image Alignment(2D)
首先BARF考虑2D的平面图像对齐问题。 设 x ∈ R 2 为像素坐标系下的一个坐标 W : R 2 → R 2 是与相机参数 p 有关的几何变换 I : R 2 → R 3 是我们的图像生成过程图像的 3 个通道所以是 R 2 → R 3 \begin{array}{c} 设\mathbf{x} \in \mathbb{R}^2为像素坐标系下的一个坐标 \mathcal{W}: \mathbb{R}^2 \rightarrow \mathbb{R}^2 是与相机参数\mathbf{p}有关的几何变换\\ \mathcal{I}: \mathbb{R}^2 \rightarrow \mathbb{R}^3是我们的图像生成过程图像的3个通道所以是\mathbb{R}^2 \rightarrow \mathbb{R}^3 \end{array} 设x∈R2为像素坐标系下的一个坐标W:R2→R2是与相机参数p有关的几何变换I:R2→R3是我们的图像生成过程图像的3个通道所以是R2→R3
我们的目标是使得生成的图片与原图片尽可能地相似这个联合优化的目标用最小二乘来表达就是 min p ∑ x ∥ I 1 ( W ( x ; p ) ) − I 2 ( x ) ∥ 2 2 \min _{\mathbf{p}} \sum_{\mathbf{x}}\left\|\mathcal{I}_{1}(\mathcal{W}(\mathbf{x} ; \mathbf{p}))-\mathcal{I}_{2}(\mathbf{x})\right\|_{2}^{2} pminx∑∥I1(W(x;p))−I2(x)∥22
相机参数的维度可以记作 p ∈ R P \mathbf{p} \in \mathbb{R}^P p∈RP
这个最小二乘问题的基础迭代步骤可以记作 Δ p − A ( x ; p ) ∑ x J ( x ; p ) ⊤ ( I 1 ( W ( x ; p ) ) − I 2 ( 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)x∑J(x;p)⊤(I1(W(x;p))−I2(x))
其中 J 是从输出到待优化变量求导的雅克比矩阵 I 2 是给定的 g r o u n d t r u t h I 1 是我们想要优化的。而 A ( x ; p ) 取决于我们选择的优化策略。 \begin{array}{c} \mathbf{J}是从输出到待优化变量求导的雅克比矩阵\mathcal{I}_2是给定的ground truth\\ \mathcal{I}_1是我们想要优化的。而\mathbf{A}(\mathbf{x} ; \mathbf{p})取决于我们选择的优化策略。 \end{array} J是从输出到待优化变量求导的雅克比矩阵I2是给定的groundtruthI1是我们想要优化的。而A(x;p)取决于我们选择的优化策略。 J ( x ; p ) ∂ I 1 ( 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))∂p∂W(x;p)
残差 r ( x ) I 2 ( x ) − I 1 ( W ( x ; p ) ) 有的资料中把 J 看作是残差对待优化变量的导数即 ∂ r ∂ p 因此 Δ p 也可以写成 \begin{array}{c} \mathbf{r}(\mathbf{x})\mathcal{I}_{2}(\mathbf{x}) - \mathcal{I}_{1}(\mathcal{W}(\mathbf{x} ; \mathbf{p}))\\ 有的资料中把\mathbf{J}看作是残差对待优化变量的导数即\frac{\partial\mathbf{r}}{\partial\mathbf{p}}因此\Delta \mathbf{p}也可以写成 \end{array} r(x)I2(x)−I1(W(x;p))有的资料中把J看作是残差对待优化变量的导数即∂p∂r因此Δp也可以写成 Δ p − A ( x ; p ) ∑ x J ( 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)x∑J(x;p)⊤r(x) 如果选择一阶优化方法 A 就是一个标量也就是学习率 如果选择二阶优化方法有时 A ( x ; p ) ( ∑ x J ( x ; p ) ⊤ J ( x ; p ) ) − 1 这取决于具体的优化策略。 \begin{array}{c} 如果选择一阶优化方法\mathbf{A}就是一个标量也就是学习率\\ 如果选择二阶优化方法有时\mathbf{A}(\mathbf{x};\mathbf{p})(\sum_\mathbf{x}\mathbf{J}(\mathbf{x};\mathbf{p})^\top\mathbf{J}(\mathbf{x};\mathbf{p}))^{-1}这取决于具体的优化策略。 \end{array} 如果选择一阶优化方法A就是一个标量也就是学习率如果选择二阶优化方法有时A(x;p)(∑xJ(x;p)⊤J(x;p))−1这取决于具体的优化策略。
以上是对这个最小二乘问题的概述。这种基于梯度的优化策略的核心在于输入信号是否足够平滑否则很容易陷入局部次优解。输入信号的平滑程度等价于 ∂ I ( x ) ∂ x 亦即图像梯度 \frac{\partial\mathcal{I}(\mathbf{x})}{\partial\mathbf{x}}亦即图像梯度 ∂x∂I(x)亦即图像梯度
为了避免局部最优通常在优化的前期对图像进行模糊处理。图像梯度通过数值差分方法得出而并非解析的。 B A R F 并没有采用模糊操作它用神经网络作为 I 优化目标就可以写成 min p i , Θ ∑ i 1 M ∑ x ∥ f ( W ( x ; p i ) ; Θ ) − I i ( x ) ∥ 2 2 其中 f : R 2 → R 3 Θ 是网络的参数 M 是图像个数。 然后图像梯度就变为可解析的 ∂ f ( x ) ∂ x 而不是数值差分的估计。 \begin{array}{c} BARF并没有采用模糊操作它用神经网络作为\mathcal{I}优化目标就可以写成\\ \min_{\mathbf{p}_i,\boldsymbol{\Theta}}\sum_{i1}^M\sum_\mathbf{x}\left\|f(\mathcal{W}(\mathbf{x};\mathbf{p}_i);\boldsymbol{\Theta})-\mathcal{I}_i(\mathbf{x})\right\|_2^2\\ 其中f:\mathbb{R}^2 \rightarrow \mathbb{R}^3\boldsymbol{\Theta}是网络的参数M是图像个数。\\ 然后图像梯度就变为可解析的\frac{\partial{f}(\mathbf{x})}{\partial\mathbf{x}}而不是数值差分的估计。 \end{array} BARF并没有采用模糊操作它用神经网络作为I优化目标就可以写成minpi,Θ∑i1M∑x∥f(W(x;pi);Θ)−Ii(x)∥22其中f:R2→R3Θ是网络的参数M是图像个数。然后图像梯度就变为可解析的∂x∂f(x)而不是数值差分的估计。
通过操纵网络f还可以对对齐的信号平滑度进行更原则性的控制而不必依赖于图像的启发式模糊从而使这些形式可推广到3D场景表示。稍后将会介绍barf如何操作f对信号进行平滑度控制。
Neural Radiance Fields (3D)
接下来BARF将以上过程拓展为3D具体如下 多层感知机 f : R 3 → R 4 M L P 参数 Θ 3 D 点坐标 x ∈ R 3 3 D 点坐标对应的颜色 c ∈ R 3 体素密度 σ ∈ R 相机位姿变换 W 其有 6 个自由度 x , y , z , ϕ , θ , ψ , 故 p ∈ R 6 且 [ c ; σ ] ⊤ f ( x ; Θ ) 像素齐次坐标 u ˉ [ u ; 1 ] ⊤ ∈ R 3 , 深度 z i , x i z i u ˉ \begin{array}{c} 多层感知机f:\mathbb{R}^3 \rightarrow \mathbb{R}^4\\ MLP参数\boldsymbol{\Theta}\\ 3D点坐标\mathbf{x} \in \mathbb{R}^3\\ 3D点坐标对应的颜色\mathbf{c} \in \mathbb{R}^3\\ 体素密度\sigma \in \mathbb{R}\\ 相机位姿变换\mathcal{W}其有6个自由度{x,y,z,\phi,\theta,\psi},故\mathbf{p}\in \mathbb{R}^6\\ 且[\mathbf{c};\sigma]^{\top}f(\mathbf{x};\boldsymbol{\Theta})\\ 像素齐次坐标\bar{\mathbf{u}}[\mathbf{u};1]^{\top} \in \mathbb{R}^3,深度z_i,\\ \mathbf{x}_iz_i\bar{\mathbf{u}} \end{array} 多层感知机f:R3→R4MLP参数Θ3D点坐标x∈R33D点坐标对应的颜色c∈R3体素密度σ∈R相机位姿变换W其有6个自由度x,y,z,ϕ,θ,ψ,故p∈R6且[c;σ]⊤f(x;Θ)像素齐次坐标uˉ[u;1]⊤∈R3,深度zi,xiziuˉ
体渲染表达式 I ^ ( u ) ∫ z n e a r z f a r T ( u , z ) σ ( z u ˉ ) c ( z u ˉ ) d z , 其中 z n e a r 和 z f a r 是感兴趣的深度上下限 I 仍然是 R 2 → R 3 表示这个像素坐标对应的 R G B 数值。 T ( u , z ) exp ( − ∫ z m a x z σ ( z ′ u ˉ ) d z ′ ) \begin{array}{c} \hat{\mathcal{I}}(\mathbf{u})\int_{z_{\mathrm{near}}}^{z_{\mathrm{far}}}T(\mathbf{u},z)\sigma(z\bar{\mathbf{u}})\mathbf{c}(z\bar{\mathbf{u}})\mathrm{d}z ,\\ 其中z_{\mathrm{near}}和z_{\mathrm{far}}是感兴趣的深度上下限\mathcal{I}仍然是\mathbb{R}^2 \rightarrow \mathbb{R}^3\\ 表示这个像素坐标对应的RGB数值。\\ T(\mathbf{u},z)\exp\bigl(-\int_{z_{\mathrm{max}}}^{z}\sigma(z^{\prime}\bar{\mathbf{u}})\mathrm{d}z^{\prime}\bigr) \end{array} I^(u)∫znearzfarT(u,z)σ(zuˉ)c(zuˉ)dz,其中znear和zfar是感兴趣的深度上下限I仍然是R2→R3表示这个像素坐标对应的RGB数值。T(u,z)exp(−∫zmaxzσ(z′uˉ)dz′)
T对应3dgs中的透射率。这两个式子和3dgs的体渲染公式也是极为接近的 C i ∑ n ≤ N c n ⋅ α n ⋅ T n , where T n ∏ m n ( 1 − α m ) , α n o n ⋅ exp ( − σ n ) , σ n 1 2 Δ n ⊤ Σ ′ − 1 Δ n . C_i\sum_{n\leq N}c_n\cdot\alpha_n\cdot T_n,\text{ where }T_n\prod_{mn}(1-\alpha_m),\\ \alpha_no_n\cdot\exp(-\sigma_n),\quad\sigma_n\frac12\Delta_n^\top\Sigma^{\prime{-1}}\Delta_n. Cin≤N∑cn⋅αn⋅Tn, where Tnmn∏(1−αm),αnon⋅exp(−σn),σn21Δn⊤Σ′−1Δn.
区别在于3dgs中的T是通过累乘得出体素密度则取决于椭球投影到平面的形状再乘以不透明度。而nerf中的颜色值和体素密度是通过MLP直接得出。 令 y [ c ; σ ] ⊤ f ( x ; Θ ) 继续改写 I ^ ( u ) g ( y 1 , … , y N ) , g : R 4 N → R 3 I ^ ( u ; p ) g ( f ( W ( z 1 u ˉ ; p ) ; Θ ) , … , f ( W ( z N u ˉ ; p ) ; Θ ) ) , W : R 3 → R 3 \begin{array}{c} 令\mathbf{y}[\mathbf{c};\sigma]^{\top}f(\mathbf{x};\boldsymbol{\Theta})\\ 继续改写\hat{\mathcal{I}}(\mathbf{u})g\left(\mathbf{y}_1,\ldots,\mathbf{y}_N\right),g:\mathbb{R}^{4N} \rightarrow \mathbb{R}^3\\ \hat{\mathcal{I}}(\mathbf{u};\mathbf{p})g\Big(f(\mathcal{W}(z_1\bar{\mathbf{u}};\mathbf{p});\boldsymbol{\Theta}),\ldots,f(\mathcal{W}(z_N\bar{\mathbf{u}};\mathbf{p});\boldsymbol{\Theta})\Big),\mathcal{W}:\mathbb{R}^{3} \rightarrow \mathbb{R}^3 \end{array} 令y[c;σ]⊤f(x;Θ)继续改写I^(u)g(y1,…,yN),g:R4N→R3I^(u;p)g(f(W(z1uˉ;p);Θ),…,f(W(zNuˉ;p);Θ)),W:R3→R3
最后这个联合优化问题变为 min p 1 , . . . , p M , Θ ∑ i 1 M ∑ u ∥ I ^ ( u ; p i , Θ ) − I i ( u ) ∥ 2 2 \min_{\mathbf{p}_1,...,\mathbf{p}_M,\boldsymbol{\Theta}}\sum_{i1}^M\sum_\mathbf{u}\left\|\hat{\mathcal{I}}(\mathbf{u};\mathbf{p}_i,\boldsymbol{\Theta})-\mathcal{I}_i(\mathbf{u})\right\|_2^2 p1,...,pM,Θmini1∑Mu∑ I^(u;pi,Θ)−Ii(u) 22
Bundle-Adjusting Neural Radiance Fields
barf与Nerf差异最大的一点在于barf需要在优化网络参数的同时考虑到相机参数。而barf认为直接使用nerf的位置编码方案使得相机参数优化变得困难对此barf做出了改进提出了捆绑优化的动态调整策略这也是这篇文献最大的贡献之一。
Nerf最初的位置编码方案为 γ ( x ) [ x , γ 0 ( x ) , γ 1 ( x ) , … , γ L − 1 ( x ) ] ∈ R 3 6 L \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}^{36L} γ(x)[x,γ0(x),γ1(x),…,γL−1(x)]∈R36L
这里的L是超参数。 γ k ( x ) [ cos ( 2 k π x ) , sin ( 2 k π x ) ] ∈ R 6 \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 2 k π ⋅ [ − sin ( 2 k π x ) , cos ( 2 k π 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的做法是从低频段到高频段逐步激活位置编码 γ k ( x ; α ) w k ( α ) ⋅ [ cos ( 2 k π x ) , sin ( 2 k π x ) ] , w k ( α ) { 0 if α k 1 − cos ( ( α − k ) π ) 2 if 0 ≤ α − k 1 1 if α − k ≥ 1 ∂ γ k ( x ; α ) ∂ x w k ( α ) ⋅ 2 k π ⋅ [ − sin ( 2 k π x ) , cos ( 2 k π x ) ] . α ∈ [ o , L ] 是与优化进度成正比的可控的一个超参数。 \begin{array}{c} \gamma_k(\mathbf{x};\alpha)w_k(\alpha)\cdot\left[\cos(2^k\pi\mathbf{x}),\sin(2^k\pi\mathbf{x})\right], \\ w_k(\alpha)\begin{cases}0 \text{if }\alphak \\ \frac{1-\cos((\alpha-k)\pi)}{2} \text{if }0\leq\alpha-k1 \\ 1\text{if }\alpha-k\geq1\end{cases}\\ \frac{\partial\gamma_k(\mathbf{x};\alpha)}{\partial\mathbf{x}}w_k(\alpha)\cdot2^k\pi\cdot\left[-\sin(2^k\pi\mathbf{x}),\cos(2^k\pi\mathbf{x})\right]. \end{array}\\ \alpha \in [o,L] 是与优化进度成正比的可控的一个超参数。 γk(x;α)wk(α)⋅[cos(2kπx),sin(2kπx)],wk(α)⎩ ⎨ ⎧021−cos((α−k)π)1if αkif 0≤α−k1if α−k≥1∂x∂γk(x;α)wk(α)⋅2kπ⋅[−sin(2kπx),cos(2kπx)].α∈[o,L]是与优化进度成正比的可控的一个超参数。
从原始3D输入x(α0)开始barf逐渐激活较高频段的编码直到启用完整位置编码(αL)相当于原始 NeRF 模型。这使得 BARF 能够通过最初平滑的信号发现正确的Δp然后将重点转移到学习高保真场景表示。
Experiment
平面图像对齐的定性实验
给定图像块barf的目标是恢复整个图像的对齐和神经网络重建其中初始化为b中所示的中心裁剪而相应的真实变换ground-truth warps如c所示。 实验结果(a)为直接使用位置编码(b)为不使用位置编码©是barf的结果。 合成场景上的定量实验
SceneCamera pose registrationView synthesis qualityRotation (°) ↓Translation ↓PSNR ↑SSIM ↑LPIPS ↓full pos.enc.w/o pos.enc.BARFfull pos.enc.w/o pos.enc.BARFfull pos.enc.w/o pos.enc.BARFref. NeRFfull pos.enc.w/o pos.enc.BARFref. NeRFfull pos.enc.w/o pos.enc.BARFref. NeRFChair7.1860.1100.09616.6380.5550.42819.0230.2231.1631.910.8040.9420.9540.9610.2230.0650.0440.036Drums3.2080.0570.0437.3220.2550.22520.8323.5623.9123.960.8400.8930.9000.9020.1660.1160.0990.095Ficus9.3680.0950.08510.1350.4300.47419.7525.5826.2626.580.8360.9260.9340.9410.1820.0700.0580.051Hotdog3.2900.2250.2486.3441.1221.30828.1534.0034.5434.910.9230.9670.9700.9730.0830.0400.0320.029Lego3.2520.1080.0824.8410.3910.29124.2326.3528.3329.280.8760.8800.9270.9420.1020.1120.0500.037Materials6.9710.8450.84415.1882.6782.69216.5126.8627.4828.060.7470.9260.9360.9420.2940.0680.0580.049Mic10.5540.0810.07522.7240.3560.30115.1030.9331.1831.830.7880.9660.9690.9710.3340.0560.0490.046Ship5.5060.0950.0747.2320.3540.32622.1226.7827.5028.000.7550.8330.8490.8580.2550.1750.1320.118Mean6.1670.2020.19311.3030.7680.75622.1226.7827.5029.400.8210.9170.9300.9360.2050.0870.0650.057 本文由博客一文多发平台 OpenWrite 发布