【计算机视觉】四篇基于Gaussian Splatting的SLAM论文对比

news2024/11/19 14:42:32

本文对比四篇论文:

[1] Gaussian Splatting SLAM
[2] SplaTAM: Splat, Track & Map 3D Gaussians for Dense RGB-D SLAM
[3] Gaussian-SLAM: Photo-realistic Dense SLAM with Gaussian Splatting
[4] GS-SLAM: Dense Visual SLAM with 3D Gaussian Splatting

文章目录

  • 一、文章概括
    • [1] Gaussian Splatting SLAM
      • 1. 相机追踪(Tracking)
      • 2. 关键帧选取(Keyframing)
      • 3. Gaussian的新增和删除
      • 4. 三维重建
    • [2] SplaTAM
      • 1. 初始化(Initialization)
      • 2. 相机追踪(Tracking)
      • 3. 高斯致密化(Gaussian Densification)
      • 4. 高斯场景更新(Gaussian Map Updating)
    • [3] Gaussian-SLAM
      • 1. 子场景(Sub-map)
      • 2. 形状和颜色编码(Geometry and Color Encoding)
      • 3. 相机追踪(Tracking)
    • [4] GS-SLAM
      • 1. 自适应3D高斯扩张重建(Adaptive 3D Gaussian Expanding Mapping)
      • 2. 相机追踪(Tracking)
      • 3. 关键帧选取
      • 4. Bundle Adjustment
  • 二、方法的异同
      • 共同点
      • 不同点
  • 三、性能对比
    • 1. 相机追踪精度
    • 2. 重渲染精度
    • 3. 训练和渲染FPS
  • 附录
    • 文章局限性
    • 迭代次数

一、文章概括

[1] Gaussian Splatting SLAM

这篇论文主要解决的是RGB-D或单目相机的三维重建问题。

1. 相机追踪(Tracking)

在估计相机外参时,该方法最小化以下目标函数:
其中 λ p h o \lambda_{pho} λpho是权重超参数,
I ( G , T C W ) I(\mathcal{G},\boldsymbol{T}_{CW}) I(G,TCW)表示从外参为 T C W \boldsymbol{T}_{CW} TCW的相机渲染高斯集合 G \mathcal{G} G所得的图片, I ˉ \bar{I} Iˉ是真实图片; E p h o E_{pho} Epho为图片误差。
E g e o E_{geo} Egeo为深度误差,仅在深度信息可用时引入, D ( G , T C W ) D(\mathcal{G},\boldsymbol{T}_{CW}) D(G,TCW)是渲染出来的深度(渲染方式和RGB值类似,均为按不透明度和透光率加权平均), D ˉ \bar{D} Dˉ是深度数据。

2. 关键帧选取(Keyframing)

该方法选取关键帧窗口 W k \mathcal{W}_k Wk,选取依据是两帧之间共同可见Gaussians的比例(判断Gaussian是否可见的方法就是判断到该Gaussian的透光率是否达到0.5)。定义共同可见度(covisibility)为当前帧 i i i与上一个关键帧 j j j之间可见Gaussians集合的IoU。若共同可见度低于某个阈值,或相对平移 t i j t_{ij} tij相对于深度中位数较大,则帧 i i i被视为关键帧。

同时,在当前帧 i i i被加入关键帧窗口时,也要移除 W k \mathcal{W}_k Wk中已经陈旧的关键帧。当帧 j ∈ W k j\in\mathcal{W}_k jWk与当前帧 i i i可见Gaussians的重叠系数(OC, Overlapping Coefficient)小于某个阈值时,就将其移除。OC的定义如下:

3. Gaussian的新增和删除

每个关键帧都会添加新Gaussians。该方法用关键帧中每个像素点的深度 D D D(在单目相机的情形该方法会渲染深度来估计 D D D的值)作为新增Gaussians的参考位置。由于 D D D不一定准确,新Gaussians的深度服从一个均值为 D D D、方差较小的正态分布;对于没有深度估计的像素,新Gaussians的深度服从均值为渲染图像深度中位数、方差较大的正态分布。在一开始还没有Gaussian时,新增Gaussian的位置是随机的。

当关键帧窗口 W k \mathcal{W}_k Wk已满,该方法执行删除操作。如果最近三个关键帧内新增的Gaussians没有在其他至少三帧内观察到,那就将它们移除。不透明度小于 0.7 0.7 0.7的Gaussians也会被移除。

4. 三维重建

这部分的目的是维持一个协调的3D结构并优化新插入的Gaussians。参与优化的帧集合为 W = W k ∪ W r \mathcal{W}=\mathcal{W}_k\cup \mathcal{W}_r W=WkWr,其中 W r \mathcal{W}_r Wr是随机选取的两个以往的帧。3D Gaussians的渲染过程没有对沿光线方向的Gaussian进行约束,这可能会导致SLAM过程中出现伪影。因此,该方法惩罚“拉得太长”的Gaussians,方法是引入各向同性约束(isotropic regularization):
其中 s i \mathbf{s}_i si是第 i i i个Gaussian的缩放参数, s ~ i \tilde{\mathbf{s}}_i s~i是其在各个方向的均值。

对于三维重建部分,该方法求解以下最优化问题: min ⁡ T C W k ∈ S E ( 3 ) ∀ k ∈ W , G ∑ ∀ k ∈ W E p h o k + λ i s o E i s o \min\limits_{\underset{\forall k\in\mathcal{W}}{\boldsymbol{T}_{CW}^k\in\mathbf{SE}(3)},\mathcal{G}} \sum\limits_{\forall k\in\mathcal{W}}E_{pho}^k+\lambda_{iso}E_{iso} kWTCWkSE(3),GminkWEphok+λisoEiso其中上标中的 k k k代表第 k k k帧, λ i s o \lambda_{iso} λiso E i s o E_{iso} Eiso的系数(是一个超参数)。

[2] SplaTAM

这篇论文处理的对象是“single unposed RGB-D camera”。

该方法引入了“silhouette image”(一种灰度图?)的概念,其计算公式如下:

其中 f i ( p ) f_i(\mathbf{p}) fi(p)代表Gaussian i i i投影到于像素 p \mathbf p p的不透明度。令 α i = f i ( p ) \alpha_i=f_i(\mathbf{p}) αi=fi(p)。注意到 1 − S ( p ) = 1 − ∑ i = 1 n α i ∏ j = 1 i − 1 [ 1 − α j ] = 1 − α 1 − ( 1 − α 1 ) α 2 − ( 1 − α 1 ) ( 1 − α 2 ) α 3 − ( 1 − α 1 ) ( 1 − α 2 ) ⋯ ( 1 − α n − 1 ) α n = ( 1 − α 1 ) [ 1 − α 2 − ( 1 − α 2 ) α 3 − ⋯ − ( 1 − α 2 ) ⋯ ( 1 − α n − 1 ) α n ] = ( 1 − α 1 ) ( 1 − α 2 ) [ 1 − α 3 − ⋯ − ( 1 − α 3 ) ⋯ ( 1 − α n − 1 ) α n ] = ⋯ = ( 1 − α 1 ) ( 1 − α 2 ) ⋯ ( 1 − α n ) \begin{aligned} 1-S(\mathbf{p})&=1-\sum\limits_{i=1}^n \alpha_i\prod\limits_{j=1}^{i-1}[1-\alpha_j]\\ &=1-\alpha_1-(1-\alpha_1)\alpha_2-(1-\alpha_1)(1-\alpha_2)\alpha_3 - (1-\alpha_1)(1-\alpha_2)\cdots(1-\alpha_{n-1})\alpha_n\\ &=(1-\alpha_1)[1-\alpha_2-(1-\alpha_2)\alpha_3-\cdots-(1-\alpha_2)\cdots(1-\alpha_{n-1})\alpha_n]\\ &=(1-\alpha_1)(1-\alpha_2)[1-\alpha_3-\cdots-(1-\alpha_3)\cdots(1-\alpha_{n-1})\alpha_n]\\ &=\cdots\\ &=(1-\alpha_1)(1-\alpha_2)\cdots(1-\alpha_n) \end{aligned} 1S(p)=1i=1nαij=1i1[1αj]=1α1(1α1)α2(1α1)(1α2)α3(1α1)(1α2)(1αn1)αn=(1α1)[1α2(1α2)α3(1α2)(1αn1)αn]=(1α1)(1α2)[1α3(1α3)(1αn1)αn]==(1α1)(1α2)(1αn)这就是光线穿过所有Gaussians后的透光率,所以 S ( p ) S(\mathbf p) S(p)也就是所有Gaussians(叠加)的不透光率。显然 S ( p ) < 1 S(\mathbf p)<1 S(p)<1。当 S ( p ) ≠ 1 S(\mathbf p)\ne 1 S(p)=1时,背景颜色将会对像素颜色有贡献。但是一个完全重建的场景不应该体现出背景颜色,故 S ( p ) S(\mathbf p) S(p)是否接近 1 1 1可以判断该像素点所对光线上的Gaussian重建程度,进而反映置信度。

值得注意的是,该方法中仅用RGB三个数表示Gaussian的颜色(不考虑从不同方向观察Gaussian颜色不同的问题),仅用一个半径 r r r表示Gaussian的尺度(即各向同性的)。

1. 初始化(Initialization)

第一帧不进行相机追踪,把RT矩阵设置为单位阵。第一帧的所有像素都用来初始化Gaussians。对于每个像素,新增一个颜色为该像素颜色、不透明度为 0.5 0.5 0.5、中心深度为该像素的深度值、半径满足投影到图像上的半径为一像素的Gaussian。换言之,Gaussian的半径等于 r = D f r=\frac{D}{f} r=fD,其中 D D D f f f分别为深度和焦距。

2. 相机追踪(Tracking)

t + 1 t+1 t+1帧,相机的位姿被初始化为第 t t t帧的位姿+一个恒定的速度,例如 E t + 1 = E t + ( E t − E t − 1 ) E_{t+1}=E_t+(E_t-E_{t-1}) Et+1=Et+(EtEt1)其中 E t E_t Et是第 t t t帧相机的位置坐标和旋转四元数。然后相机的位姿会经过梯度下降优化,目标函数为 L t = ∑ ∀ pixel  p [ S ( p ) > 0.99 ] [ L 1 ( D ( p ) ) + 0.5 L 1 ( C ( p ) ) ] L_t=\sum\limits_{\forall\text{pixel }\mathbf p} [S(\mathbf p)>0.99] [L_1(D(\mathbf p))+0.5L_1(C(\mathbf p))] Lt=pixel p[S(p)>0.99][L1(D(p))+0.5L1(C(p))]其中 L 1 L_1 L1代表 L 1  loss L_1\text{ loss} L1 loss D ( p ) D(\mathbf p) D(p) C ( p ) C(\mathbf p) C(p)分别代表像素 p \mathbf p p的深度和颜色。 0.5 0.5 0.5是颜色误差的权重(类似于论文[1]中的 λ p h o \lambda_{pho} λpho)。一个很重要的点是loss只计算 S ( p ) S(\mathbf p) S(p)较高的像素,因为这部分的重建已经是较完善的了。如果某一点的深度信息不存在,则 L 1  loss L_1\text{ loss} L1 loss返回 0 0 0

3. 高斯致密化(Gaussian Densification)

每一帧都会在重建不完全的地方插入新的Gaussians。该方法定义了以下“致密化掩码”来确定应该在哪里插入新Gaussians(其中的乘法和加法应理解为与和或):
也就是说会在两种情况下新增Gaussian:像素 p \mathbf p p处的 S S S值太小(后面的背景都露出来了),或者此处由Gaussians给出的预测深度 D D D小于真实深度 D G T D_{\mathrm{GT}} DGT且深度的 L 1 L_1 L1误差大于 λ \lambda λ(设为 50 50 50)乘以深度中位数误差(Median Depth Error, MDE)。对每个像素,如果该掩码为真,则以与初始化相同的方式插入新Gaussians。

4. 高斯场景更新(Gaussian Map Updating)

该方法从最新重建结果开始优化。每 n n n帧选取一帧作为关键帧。该方法选取 k k k帧指导优化,包括当前帧,上一帧和 k − 2 k-2 k2个与当前帧有高度重叠的以前的关键帧。重叠的判别方式是取当前帧深度图的点云并检查多少个点在每一个关键帧的视锥中。

这部分优化的loss与相机追踪阶段类似,只不过该方法不用 S ( p ) S(\mathbf p) S(p)(silouette mask)了,因为该方法想利用所有像素进行优化。此外,该方法还为RGB渲染添加了一个SSIM loss,并移除不透明度接近 0 0 0或者体积太大的Gaussians,就像Gaussian Splatting原论文所做的那样。

GS原论文中的loss公式:

[3] Gaussian-SLAM

该论文处理的对象依然是真实世界单个相机拍摄的RGBD视频。该方法对好的深度数据有较高要求(见论文14页Limitations and Future Work)。

1. 子场景(Sub-map)

为了避免灾难性遗忘、过拟合和计算复杂度过高,该方法将输入分块处理,对应不同的子场景。当前的子场景被称为活动子场景(active sub-map)。在当前帧相对于活动子场景首帧的平移超过阈值 d t h r e d_{\rm thre} dthre或欧拉角超过阈值 θ t h r e \theta_{\rm thre} θthre时,就新建一个子场景作为活动子场景。任何时候,算法都只会处理活动子场景。

每5帧取一帧作为关键帧(见Experiments的Implementation Details)。每个关键帧都可能会添加新Gaussians。对于每个子场景的第一帧,算法在帧中颜色梯度较高的区域均匀地选取 M c M_c Mc个点。在随后的关键帧中,算法在渲染的 α \alpha α值低于一个阈值 α n \alpha_n αn的区域随机选取 M k M_k Mk个点。新Gaussian的中心位置是随机选取的点,但还要满足以下要求:在当前子场景、半径为 ρ \rho ρ的邻域内没有其他Gaussian。新Gaussian是各向异性的(即不是球体),它们的缩放参数取当前子场景内离它最近的Gaussian的距离。

算法不会复制或删除Gaussian。算法会渲染一个子场景内的所有关键帧来进行优化,并将40%的迭代次数用在新的关键帧上。

2. 形状和颜色编码(Geometry and Color Encoding)

该论文与[2]一样使用 L 1 L_1 L1范数定义深度误差 L d e p t h L_{\mathrm{depth}} Ldepth和颜色误差 L c o l o r L_{\mathrm{color}} Lcolor,并且也加入了SSIM loss(颜色的 L 1 L_1 L1误差与SSIM之间的权重比例为 4 : 1 4:1 4:1)。同时,该论文也与[1]类似使用了各向同性正则化来惩罚拉得太长的Gaussians: L r e g = ∑ k ∈ K ∣ s k − s ˉ k ∣ 1 ∣ K ∣ L_{\mathrm{reg}} = \cfrac{\sum\limits_{k\in K}|s_k-\bar s_k|_1}{|K|} Lreg=KkKsksˉk1其中 s k s_k sk是Gaussian的缩放参数, s ˉ k \bar s_k sˉk是子场景中所有Gaussian缩放参数的均值(这一点与论文[1]不同,[1]中 s ˉ k \bar s_k sˉk是单个Gaussian缩放的均值) k k k是该子场景中Gaussian的ID, ∣ K ∣ |K| K是子场景中Gaussian的个数。

该方法以下面的式子作为目标函数优化当前子场景的Gaussians:

3. 相机追踪(Tracking)

这部分优化的是第 i i i帧相机相对于第 i − 1 i-1 i1帧的相对位姿(relative camera pose)。相机外参的初始值也遵循[2]中的“恒定速度假设”,即当前帧、上一帧和上上一帧的外参呈等差数列(就平移向量和旋转四元数而言)。在优化这部分时,Gaussians的参数是冻结的。这部分的目标函数是
其中 M i n l i e r M_{\mathrm{inlier}} Minlier是两一个布尔掩码,用于排除一些重建不完全的像素,这些像素的深度误差大于当前重渲染深度图中深度误差中位数的 50 50 50倍; M a l p h a = α 3 M_{\mathrm{alpha}}=\alpha^3 Malpha=α3(称为soft alpha mask,其中 α \alpha α是渲染出来的 α \alpha α值,相当于[2]中的 S ( p ) S(\mathbf p) S(p)),用于排除对于光线透明度较高的像素。

[4] GS-SLAM

这篇论文是最早的(2023年11月),其核心是“RGB-D re-rendering”。论文提出的方法也依赖高质量的深度数据。

1. 自适应3D高斯扩张重建(Adaptive 3D Gaussian Expanding Mapping)

对于每个关键帧,算法更新并优化3D高斯场景。优化的目标是最小化深度和颜色的 L 1 L_1 L1误差。

自适应3D高斯扩张策略:对于RGB-D序列的第一帧,算法从分辨率为 H × W H\times W H×W的图片中随机选取一半像素并利用深度数据将像素点反投影(back-projecting)到三维空间去,并以这些3D位置初始化Gaussians的中心坐标,此时Gaussians的球谐度数设置为0,颜色(直流分量)设置为像素点的颜色。在第一帧,场景通过重投影误差进行优化。另一半的像素用于将大Gaussians分解成小Gaussians并且从不同方向复制它们,从而弥补缺失的细节。

增加Gaussians:在每个关键帧,新的Gaussians会在不可靠的像素的反投影上创建。判断像素点是否可靠的方法是:检查其累积不透明度 T T T(等于[2]中的 S p S_\mathbf p Sp)是否小于阈值 τ T \tau_T τT或重渲染深度 D ^ \hat D D^的误差 ∣ D − D ^ ∣ |D-\hat D| DD^是否大于 τ D \tau_D τD。这些不可靠的像素点主要就是新观察到的区域。

删除Gaussians:由于自适应方法是不稳定的,有的时候会出现浮游(floating)的Gaussians。为了解决这个问题,算法在新增Gaussians后会检查当前相机视锥内的所有可见Gaussians并大幅度地减小位置不在场景表面的Gaussians的不透明度。准确的说,算法检查每个Gaussian中心投影到像平面后对应像素点的真实深度,并比较Gaussian深度与真实深度:若二者之差大于阈值 γ \gamma γ,则给该Gaussian的不透明度乘以 η \eta η η < < 1 \eta<<1 η<<1)。

2. 相机追踪(Tracking)

该论文依然遵循[2]中的“恒定速度假设”对相机位姿进行初始化。相机位姿优化的目标函数是颜色误差(注意这里没有用到深度误差)。

由粗到细的相机追踪:为了解决重投影时伪影影响相机位姿估计的问题,论文提出了Coarse-to-Fine Camera Tracking。首先渲染一个长宽各为原来一半的粗粒度图像(像素点是随机选取的),并迭代优化相机位姿 T c T_c Tc次。再用目前得到的相机位姿进行全分辨率的细粒度重投影,并像删除Gaussians的方法一样排除深度不对劲的Gaussians的影响。最后用细粒度图像迭代优化位姿 T f T_f Tf次。注意算法只投影以前观察到的区域。

3. 关键帧选取

选取的标准有两个:

  • 图像可靠部分与总大小的比例;
  • 当前帧与最近关键帧的差异是否达到阈值 μ k \mu_k μk

4. Bundle Adjustment

这一阶段算法共同优化相机位姿和3D Gaussians的参数。在关键帧数据库中随机选取 K K K个关键帧用于优化,目标函数和三维重建阶段类似。前一半迭代只优化3D Gaussians,后一半同时优化Gaussians和相机位姿。目标函数如下:

二、方法的异同

共同点

  1. 整体框架相同。方法都包含基于梯度下降的相机位姿优化、用3D Gaussians集合表示场景、动态增删Gaussians的策略,并且都用到了关键帧的概念;都在loss中引入了颜色误差和深度误差。
  2. 均简化了球谐(spherical harmonics)的表示(目的是提升速度)。[1][2][3]直接省略了球谐,用RGB值表示Gaussian的颜色。[4]用最大度数为 1 1 1的球谐,使得表示颜色的系数共有 12 12 12个。
  3. 深度和颜色误差均采用 L 1 L_1 L1范数;[2][3]均在计算颜色误差时引入了SSIM loss。
  4. [1][2][3]均注重Gaussian的各向同性(即趋近于球形,不能拉得太长)。其中[2]直接强制使用球形Gaussians,并进行了消融实验:如果采用各向异性的Gaussians,那么性能有可以忽略不计的提升,但时间和内存占用大幅升高(见[2]附录的S3)。[1][3]对控制Gaussian各向同性的loss做了消融实验,实验证明对于真实世界的数据这种loss可以显著优化场景并提高相机追踪的精度。
  5. [2][3][4]均以重建是否完全作为相机追踪和Gaussian新增的判断标准。[2]引入了“silhouette image” S ( p ) S(\mathbf p) S(p)来判断哪些像素参与相机追踪并辅助选取新Gaussian插入的位置。[3]引入了掩码 M i n l i e r M_{\mathrm{inlier}} Minlier M a l p h a M_{\mathrm{alpha}} Malpha分别从深度误差和不透明度的角度选取参与相机追踪的像素点;[4]用深度误差决定增删哪些Gaussians并判断哪些Gaussians在相机追踪时不予考虑(其中增加Gaussians时还考虑了不透明度是否小于一个阈值)。
  6. 在优化Gaussians均选取少量关键帧参与颜色误差的计算。[1]中用的是当前的关键帧窗口和随机选取的以往的两帧。[2]中用的是当前帧,上一帧和一些与当前帧有高度重叠的以前的关键帧。[3]中用的是当前子场景的所有关键帧。[4]中用的是随机选取的 K K K个关键帧。
  7. [1][2][4]中,新增Gaussian的深度均以图片像素反投影到三维空间中的深度为参考;其中[2][4]新增Gaussians的颜色为像素颜色。
  8. 文章的弱点相近。[2][3][4]均要求高质量的深度数据;四篇论文对轨迹偏移、移动模糊、突然旋转等极端场景效果均不好。

不同点

  1. 仅[1]可以处理不含深度的数据。
  2. 关键帧选取的策略不同。[1]的选取策略注重当前帧与上一个关键帧共同可见Gaussian的比例;[2][3]每隔固定的帧数(分别为 n n n、5)选一帧作为关键帧;[4]的选取依据是图像可靠部分的比例和当前帧与上一关键帧的差异。
  3. Gaussian增删的策略不同。[1][2][4]都围绕某些像素点的反投影创建像素,区别在于:[1]以一个围绕深度的正态分布插入Gaussians,删除在最近几帧无法观察到的Gaussians;[2]在满足致密化掩码条件的像素的反投影上创建新Gaussians,删除不透明度接近 0 0 0或体积过大的Gaussians;[4]在不透明度较小以及深度误差过大的像素的反投影创建Gaussians,并降低浮游Gaussians的不透明度。[3]则随机选点,并在比较“空”的位置创建新Gaussians。[3]不删除Gaussians。
  4. [1][4]共同优化相机位姿和Gaussians(即“bundle adjustment”);[2][3]分别优化位姿和Gaussians,优化其中一个的时候固定另一个。
  5. 只有[3]将输入序列分为多个子场景。当要完成时,[3]的算法会把所有子场景合并起来,方法是检查最近邻居,与子场景构建类似。最后的最后会执行一个颜色优化,迭代10000次。

三、性能对比

1. 相机追踪精度

指标为ATE (Absolute Trajectory Error) RMSE (Root Mean Square Error) (cm)。

论文\数据集(平均)TUM-RGBDReplica
[1] Gaussian Splatting SLAM1.580.79
[2] SplaTAM3.250.36
[3] Gaussian SLAM2.90.31
[4] GS-SLAM3.70.5

可以看到[1]在TUM-RGBD数据集上效果最好,[3]在Replica上效果最好。

注意:TUM-RGBD数据集的平均数我只统计了fr1/desk、fr2/xyz、fr3/office三个场景,与[2]中计算的平均数不同([2]中还统计了其他场景,但这些场景在其他论文中没有出现)。

2. 重渲染精度

下表是各方法在Replica数据集上的渲染精度:

论文\度量PSNR[dB] ↑ \uparrow SSIM ↑ \uparrow LPIPS ↓ \downarrow
[1] Gaussian Splatting SLAM34.830.9540.068
[2] SplaTAM34.110.970.10
[3] Gaussian SLAM38.880.9930.017
[4] GS-SLAM31.560.9680.094

可以看出[3]全面超越其他方法。

3. 训练和渲染FPS

论文\指标训练FPS渲染FPS
[1] Gaussian Splatting SLAM (RTX 4090)3.2(TUM单目相机数据集的fr3/office场景)769(Replica)
[2] SplaTAM (RTX 3080)0.42175
[3] Gaussian SLAM (RTX A6000)0.572175
[4] GS-SLAM8.34(Replica数据集中的Room 0场景)386

附录

文章局限性

[1] Gaussian Splatting SLAM

[2] SplaTAM

[3] Gaussian-SLAM

[4] GS-SLAM

迭代次数

[1] Gaussian Splatting SLAM:每帧进行100次相机追踪迭代,当更新值小于 1 0 − 4 10^{-4} 104时提前停止。场景重建的迭代次数是150次每帧。

[2] SplaTAM:每帧的追踪和重建迭代次数分别为40和60。

[3] Gaussian-SLAM:对每个子场景的首帧,在Replica、TUM-RGBD、ScanNet数据集的重建迭代次数分别为1000、100和500。此后每帧迭代100次,与数据集无关。在合并场景后的颜色优化环节,算法迭代10000次。

[4] GS-SLAM:对于Replica数据集迭代次数为10次追踪、100次重建;对TUM-RGBD数据集追踪迭代次数为30。

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

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

相关文章

MySQL数据库 数据库基本操作(一):数据库的认识与基本操作

1. 数据库的基本认识 1.1 什么是数据库 专家们设计出更加利于管理数据的软件——数据库&#xff0c;它能更有效的管理数据。数据库可以提供远程服务&#xff0c;即通过远程连接来使用数据库&#xff0c;因此也称为数据库服务器。 1.2 数据库的分类 数据库可以大体分为:关系…

基于Python的简单颜色替换

当我们临时需要改变一个照片的颜色&#xff0c;使其符合我们想要的主题色时&#xff0c;对于不会PS的我就只能使用一下Python来实现这个简单的过程 比如我想要中国农大农学院的院徽&#xff0c;但在官网上提取出来的图片是白色的 而我想要符合农学主题的绿色&#xff0c;将图片…

产品经理知识地图:与NPDP国际资格认证知识体系相吻合的实践探索

在数字化时代的浪潮下&#xff0c;产品经理的角色愈发关键。作为连接市场、技术与用户的桥梁&#xff0c;产品经理需要拥有全面的知识体系与多元化的能力。本文旨在构建与NPDP产品经理国际资格认证知识体系相吻合的产品经理知识地图&#xff0c;并结合实际案例&#xff0c;探讨…

VSCode安装及Python、Jupyter插件安装使用

VSCode 介绍 Visual Studio Code&#xff08;简称VSCode&#xff09;是一个由微软开发的免费、开源的代码编辑器。VSCode是一个轻量级但是非常强大的代码编辑器&#xff0c;它支持多种编程语言&#xff08;如C,C#&#xff0c;Java&#xff0c;Python&#xff0c;PHP&#xff0…

jupyter notebook 配置默认文件路径

Jupyter是一种基于Web的交互式计算环境&#xff0c;支持多种编程语言&#xff0c;如Python、R、Julia等。使用Jupyter可以在浏览器中编写和运行代码&#xff0c;同时还可以添加Markdown文本、数学公式、图片等多种元素&#xff0c;非常适合于数据分析、机器学习等领域。 安装 …

Redis底层数据结构-Dict

1. Dict基本结构 Redis的键与值的映射关系是通过Dict来实现的。 Dict是由三部分组成&#xff0c;分别是哈希表&#xff08;DictHashTable&#xff09;&#xff0c;哈希节点&#xff08;DictEntry&#xff09;&#xff0c;字典&#xff08;Dict&#xff09; 哈希表结构如下图所…

arm的状态寄存器

目录 一、arm 的 PSRs二、CPSR2.1 CPSR_cxsf 三、SPSR四、APSR 一、arm 的 PSRs arm 中有很多程序状态寄存器&#xff08;Program Status Registers&#xff0c;PSRs&#xff09;用于存储处理器的状态信息&#xff0c;包括 CPSR\SPSR\FPSR\APSR 等&#xff1a; CPSR&#xff…

基于vscode Arduino插件开发Arduino项目

基于vscode Arduino插件开发arduino项目 插件配置问题记录1. 指定编译输出文件夹2. 编译下载时不输出详细信息3. 输出端口信息乱码4. 通过串口输出中文&#xff0c;vscode对应的串口助手上会显示乱码&#xff08;未解决&#xff09; 插件配置 环境&#xff1a;Arduino插件版本…

【leetcode】将x减到0的最小操作数/水果成篮/找到字符串中所有字母异位词{史上最容易懂的解析}

文章目录 1.将x减到0的最小操作数2.水果成篮3.找到字符串中所有字母异位词 1.将x减到0的最小操作数 分析题目 x不断地减去数组两端的值 看能否减到0&#xff1b;是不是就是在问&#xff1a;nums数组中存不存在【左端右端】组成的连续区间&#xff0c;区间上数的和为x 继续分析 …

VSCode 插件 Template String Converter

1. 插件介绍 点击安装 Template String Converter 插件 Template String Converter 翻译后&#xff1a;模板字符串转换器。 插件作用&#xff1a;当 JavaScript 字符串中键入 ${ 时自动将引号转为反引号&#xff0c;当删除 ${ 时自动将反引号转为普通引号 功能示例&#xff…

Verilator入门11:仿真玄铁测试case

这一节&#xff0c;介绍下如何使用verilator仿真玄铁&#xff0c;之前有相关介绍&#xff0c;本节将进一步介绍下玄铁具体case的仿真&#xff0c;首先需要clone玄铁代码&#xff1a; git clone https://github.com/kknet/openc910.git 同时下载交叉编译工具&#xff0c;网站地…

YOLOv8 UI界面设计+热力图显示

进入可视化设计界面&#xff0c;设计UI pyside6-designer 设计好UI保存&#xff0c;然后通过以下命令将ui文件保存为py pyside6-uic myui.ui > myui.py 通过以下命令将资源文件qrc保存为py pyside6-rcc my_rc.qrc > my_rc.py 写主窗口函数实现功能... 项目基于yol…

vue 数据埋点

最近菜鸟做项目&#xff0c;需要做简单的数据埋点&#xff0c;不是企业级的&#xff0c;反正看渡一的视频&#xff0c;企业级特别复杂&#xff0c;包括但不限于&#xff1a;错误收集、点击地方、用户行为…… 菜鸟的需求就是简单收集一下用户的ip、地址、每个界面的访问时间&a…

Ubuntu20.04使用Neo4j导入CSV数据可视化知识图谱

1.安装JDK&#xff08; Ubuntu20.04 JDK11&#xff09; sudo apt-get install openjdk-11-jdk -y java -version which java ls -l /usr/bin/java ls -l /etc/alternatives/java ls -l /usr/lib/jvm/java-11-openjdk-amd64/bin/java确认安装路径为/usr/lib/jvm/java-11-openjd…

【VUE+ElementUI】el-table表格固定列el-table__fixed导致滚动条无法拖动

【VUEElementUI】el-table表格固定列el-table__fixed导致滚动条无法拖动 背景 当设置了几个固定列之后&#xff0c;表格无数据时&#xff0c;点击左侧滚动条却被遮挡&#xff0c;原因是el-table__fixed过高导致的 解决 在index.scss中直接加入以下代码即可 /* 设置默认高…

最优算法100例之26-翻转单词顺序

专栏主页&#xff1a;计算机专业基础知识总结&#xff08;适用于期末复习考研刷题求职面试&#xff09;系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 牛客最近来了一个新员工Fish&#xff0c;每天早晨总是会拿着一本英文杂志&#xff0c;写些句…

【北京迅为】《iTOP-3588开发板系统编程手册》第1章 系统编程初探

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

基于单片机的超声波测距仪设计_kaic

摘 要 如今社会持续深化转型&#xff0c;在人工智能领域&#xff0c;传感器采集外部数据&#xff0c;经过处理器对数 据运算和处理&#xff0c;从而实现相应的功能。比如自动驾驶技术中&#xff0c;超声波传感器应用广泛&#xff0c; 超声波是一种频率在 20khz 以上的声波&…

STM32-04基于HAL库(CubeMX+MDK+Proteus)中断案例(按键中断扫描)

文章目录 一、功能需求分析二、Proteus绘制电路原理图三、STMCubeMX 配置引脚及模式&#xff0c;生成代码四、MDK打开生成项目&#xff0c;编写HAL库的按键检测代码五、运行仿真程序&#xff0c;调试代码 一、功能需求分析 在完成GPIO输入输出案例之后&#xff0c;开始新的功能…

如何防止IP泄露,安全匿名上网?

当互联网成为每个家庭的重要组成部分后&#xff0c;IP地址就成了你的虚拟地址。您的请求从该地址开始&#xff0c;然后 Internet 将消息发送回该地址。那么&#xff0c;您担心您的地址被泄露吗&#xff1f; 对于安全意识高或者某些业务需求的用户&#xff0c;如果您正在寻找保护…