Neuralangelo:高保真神经表面重建
公众号:AI知识物语;B站暂定;知乎同名
视频入门介绍可以参考
B站——CVPR 2023最新工作!Neuralangelo:高保真Nerf表面重建
https://www.bilibili.com/video/BV1Ju411W7FL/spm_id_from=333.337.searchcard.all.click&vd_source=03387e75fde3d924cb207c0c18ffa567
图1所示。本文提出Neuralangelo,一种用神经体渲染从RGB图像中进行高保真3D表面重建的框架,即使没有分割或深度等辅助数据。图中显示的是一个提取的法院三维网格。
摘要
神经表面重建已被证明是有效的非常适合通过基于图像的神经渲染恢复密集的 3D 表面。 然而,当前的方法很难恢复现实世界场景的详细结构。 为了解决这个问题,我们提出了 Neuralangelo,它将多分辨率 3D 哈希网格的表示能力与神经表面渲染相结合。 我们的方法有两个关键要素:
(1) 用于计算高阶导数作为平滑操作的数值梯度;
(2) 对控制不同细节级别的哈希网格进行从粗到细的优化。
即使没有深度等辅助输入,Neuralangelo 也可以有效地从多视图图像中恢复密集的 3D 表面结构,其保真度显着超越以前的方法,从而实现详细的大规模场景从 RGB 视频捕获重建。
1. 简介
3D 表面重建旨在恢复密集的几何形状从不同视点观察到的多个图像中提取 ric 场景结构 [9]。 恢复的表面提供了对许多下游应用有用的结构信息,例如用于增强/虚拟/混合现实的 3D 资产生成或用于机器人自主导航的环境映射。 使用单目 RGB 相机进行摄影测量表面重建特别令人感兴趣,因为它使用户能够使用无处不在的移动设备随意创建现实世界的数字双胞胎。
经典的多视图立体算法 [6, 16, 29, 34]是稀疏 3D 重建的首选方法。 然而,这些算法的一个固有缺点是它们无法处理不明确的观察结果(批注:mask等),例如 地区具有大面积的均匀颜色、重复的纹理图案或强烈的颜色变化。 这将导致重建不准确,表面有噪声或缺失。
最近,神经表面重建方法 [36,41,42] 在解决这些局限性方面表现出了巨大的潜力。 这类新方法使用基于坐标的多层感知器(MLP)将场景表示为隐式函数,例如占用场[25]或有符号距离函数(SDF)[36,41,42]。 利用 MLP 和神经体积渲染的固有连续性 [22],这些技术允许优化的表面在空间位置之间进行有意义的插值,从而产生平滑且完整的表面表示。
尽管神经表面重建具有优越性与经典方法相比,当前方法恢复的保真度不能很好地随着 MLP 的容量扩展。 最近,穆勒等人。 [23]提出了一种新的可扩展表示,称为Instant-NGP(神经图形基元)。 Instant NGP 引入了混合 3D 网格结构,具有多分辨率哈希编码和轻量级 MLP,其内存占用与分辨率呈对数线性关系,更具表现力。 所提出的混合表示极大地提高了神经场的表示能力,并且在表示各种任务的非常细粒度的细节方面取得了巨大成功,例如对象形状表示和新颖的视图合成问题。 在本文中,我们提出了用于高保真的 Neuralangelo表面重建(图1)。 Neuralangelo 采用 Instant NGP 作为底层 3D 场景的神经 SDF 表示,通过神经表面渲染根据多视图图像观察进行优化 [36]。 我们提出了两项对于充分释放多分辨率哈希编码潜力至关重要的发现。 首先,使用数值梯度计算高阶导数,例如用于 eikonal 正则化的表面法线 [8,12,20,42],对于稳定优化至关重要。 其次,渐进式优化计划在恢复不同细节级别的结构方面发挥着重要作用。 我们将这两个关键要素结合起来,并通过对标准基准和真实场景的广泛实验,证明了基于图像的神经表面重建方法在重建精度和视图合成质量方面的显着改进。 总之,我们提出以下贡献:
• 我们提出了Neuralangelo 框架,将多分辨率哈希编码[23] 的表示能力自然地融入到神经SDF 表示中。
• 我们提出了两种简单的技术来提高散列编码表面重建的质量:具有数值梯度的高阶导数和具有渐进细节级别的从粗到精的优化。
• 我们凭经验证明了 Neuralangelo 在各种数据集上的有效性,显示出显着的效果与以前的方法相比的证明。
2. 相关工作
多视图表面重建。
早期基于图像的摄影测量技术使用体积占用网格来表示场景[4,16,17,29,32]。 如果满足相应投影图像像素之间的严格颜色恒定性,则访问每个体素并标记为已占用。 由于自动曝光或非朗伯材料(在现实世界中普遍存在),光度一致性假设通常会失败。 放宽这种跨视图的颜色恒常性约束对于真实的 3D 重建非常重要。 后续方法通常从 3D 点云开始来自多视图立体技术 [6, 7, 28, 34],然后执行密集表面重建 [13, 14]。 对生成点云质量的依赖通常会导致表面缺失或有噪声。 最近基于学习的方法通过学习图像特征和成本量构建来增强点云生成过程[2,10,40]。 然而,这些方法本质上受到成本体积分辨率的限制,并且无法恢复几何细节。
神经辐射场 (NeRF)。
NeRF [22] 实现了具有视图相关效果的显着照片级真实感视图合成。 NeRF 使用将 3D 空间位置映射到颜色和体积密度的 MLP 对 3D 场景进行编码。 使用神经体积渲染将这些预测合成为像素颜色。 然而,NeRF 及其变体 [1,30,43,46] 的一个问题是如何定义体积密度的等值面来表示底层的 3D 几何形状。 当前的实践通常依赖于密度值的启发式阈值; 然而,由于对水平集的约束不足,此类表面通常充满噪声,并且可能无法准确地建模场景结构 [36, 41]。 因此,对于摄影测量表面重建问题,更直接的表面建模是首选。
神经表面重建。
对于具有更好定义的 3D 表面的场景表示,隐式函数(例如占用网格 [24, 25] 或 SDF [42])比简单的体积密度场更受青睐。 为了与神经体积渲染 [22] 集成,人们提出了不同的技术 [36, 41] 将底层表示重新参数化回体积密度。 这些神经隐式函数的设计可以通过不牺牲质量的视图合成功能实现更准确的表面预测[42]。 后续工作将上述方法扩展到实际情况以牺牲表面保真度为代价 [18, 37],而其他人 [3, 5, 44] 使用辅助信息来增强重建结果。 值得注意的是,NeuralWarp [3] 使用来自运动结构 (SfM) 的给定协同可见性信息的补丁扭曲来指导表面优化,但补丁平面假设无法捕获高度变化的表面 [3]。 其他方法 [5, 45] 利用 SfM 的稀疏点云来监督 SDF,但它们的性能较差与经典方法一样,上限由点云的质量决定[45]。 使用单目深度和分割作为辅助数据也已通过无约束图像集合[31]或使用具有哈希编码的场景表示进行了探索[44]。 相比之下,我们的工作 Neuralangelo 基于哈希编码 [23] 来恢复表面,但不需要先前工作中使用的辅助输入 [3,5,31,44,45]。 并行工作[38]还提出了从粗到细的优化以改善表面细节,其中位移网络校正粗网络预测的形状。 相反,我们使用分层哈希网格并根据我们的数据控制细节级别高阶导数分析。
3. 方法
Neuralangelo 重建场景密集结构的方法来自多视图图像。 Neuralangelo 沿相机视图方向对 3D 位置进行采样,并使用多分辨率哈希编码对位置进行编码。 编码后的特征被输入到 SDF MLP 和颜色 MLP 中进行合成使用基于 SDF 的体积渲染的图像。
3.1. 预备知识
神经体积渲染
NeRF [22] 将 3D 场景表示为体积密度和色域。 给定已摆好姿势的相机和光线方向,体积渲染方案会集成沿光线采样点的颜色亮度。 第 i 个采样的 3D 位置 xi 距相机中心的距离为 ti。 使用坐标 MLP 预测每个采样点的体积密度 σi 和颜色 ci。 渲染出来的给定像素的颜色近似为黎曼和:
其中,αi = 1 − exp(−σiδi) 为第 i 个射线段的不透明度,δi = ti+1 − ti 为相邻样本之间的距离,Ti = Π (i-1)(j=1 ) (1 − αj) 是累积的透射率,表示到达相机的光的比例。 为了监督网络,在输入图像 c 和渲染图像 ^c 之间使用颜色损失
然而,使用这种密度公式并不能清楚地定义表面。 从基于密度的表示中提取表面通常会导致嘈杂且不切实际的结果 [36, 41]。 SDF 的体绘制。 最常见的表面表示形式之一是 SDF。 SDF 的表面 S 可以通过其零水平集隐式表示,即 S = {x ∈ R3|f(x) = 0},其中 f(x) 是 SDF 值。 在神经 SDF 的背景下,Wang 等人。 [36] 提出将 NeRF 中的体积密度预测转换为 SDF 表示,其中逻辑函数允许通过神经体积渲染进行优化。 给定 3D 点 xi 和 SDF 值 f(xi),方程中使用的相应不透明度值 αi。 1 计算为
其中 Φs 是 S 型函数。 在这项工作中,我们使用相同的基于 SDF 的体渲染公式 [36]。
多分辨率哈希编码。
最近,Müller 等人提出了多分辨率哈希编码。 [23]显示了神经场景表示的巨大可扩展性,为新颖的视图合成等任务生成细粒度的细节。 在 Neuralangelo 中,我们采用哈希编码的表示能力来恢复高保真表面。 哈希编码使用多分辨率网格,每个网格映射到哈希条目的网格单元角。 每个哈希条目存储编码特征。 令{V1,…,VL}为不同空间网格分辨率的集合。 给定输入位置 xi,我们将其映射到每个网格分辨率 Vl 的相应位置,即 xi,l = xi · Vl。 给定分辨率 Vl 的特征向量 γl(xi,l) ∈ Rc 是通过网格单元角处的哈希条目的三线性插值获得的。 所有空间分辨率的编码特征连接在一起,形成γ(xi) ∈ RcL 特征向量:
然后将编码后的特征传递给浅层 MLP。 哈希编码的一种替代方法是稀疏体素结构[30,33,39,43],其中每个网格角都是唯一定义的,不会发生碰撞。 然而,体积特征网格需要分层空间分解(例如八叉树)以使参数计数易于处理; 否则,内存将随着空间分辨率呈立方体增长。 考虑到这样的层次结构,设计的更精细的体素分辨率无法恢复由更粗糙的分辨率歪曲的表面[33]。 相反,哈希编码假设没有空间层次结构并解析基于梯度平均的自动碰撞[23]。
3.2. 数值梯度计算
我们在本节中展示了解析梯度 w.r.t.哈希编码的位置受到局部性的影响。 因此,优化更新仅传播到本地哈希网格,缺乏非本地平滑性。 我们提出了使用数值梯度来解决此类局部性问题的简单方法。 概述如图 2 所示。
SDF 的一个特殊属性是它与单位范数的梯度。 SDF 的梯度满足方程 ||∇f(x)||_2 = 1(几乎处处)。 为了强制优化的神经表示成为有效的 SDF,通常会对 SDF 施加 eikonal 损失 [8]预测:
图 2. 使用高阶导数的数值梯度将反向传播更新分布到本地哈希网格之外
细胞,从而成为分析梯度的平滑版本。
其中 N 是采样点的总数。 为了实现端到端优化,需要对 SDF 预测 f(x) 进行双重向后操作。 计算表面法线的事实上的方法SDFs ∇f(x) 是使用解析梯度[36,41,42]。 哈希编码的梯度分析 然而,在三线性插值下,位置在空间上并不连续。 为了找到体素网格中的采样位置,每个 3D 点 xi 首先按网格分辨率 Vl 进行缩放,写为 xi,l = xi ·Vl。
令(三)线性插值的系数为 β = xi,l − ⌊xi,l⌋。 得到的特征向量是
其中圆角位置 ⌊xi,l⌋, ⌈xi,l⌉ 对应于局部网格单元角。 我们注意到舍入运算 ⌊·⌋ 和 ⌈·⌉ 是不可微的。 结果,导数为哈希编码 该位置可以通过以下方式获得
哈希编码的导数是局部的,即当 xi 跨越网格单元边界时,对应的哈希条目将会不同。 因此,等式中定义的 eikonal 损失。 5 仅反向传播到本地采样的哈希条目,即 γl(⌊xi,l⌋) 和 γl(⌈xi,l⌉)。 当连续表面(例如平坦的墙壁)跨越多个网格单元时,这些网格单元应产生连贯的表面法线,而不会突然过渡。 为了确保表面表示的一致性,需要对这些网格单元进行联合优化。 然而,解析梯度仅限于局部网格单元,除非所有相应的网格单元恰好同时采样和优化。 这种采样并不总是有保证。
为了克服解析梯度的局域性哈希编码,我们建议使用数值梯度来计算表面法线。 如果数值梯度的步长小于哈希编码的网格大小,则数值梯度将等效于解析校准梯度; 否则,多个网格单元的哈希条目将参与表面法线计算。 因此,通过表面法线反向传播允许多个网格的哈希条目同时接收优化更新。 直观上,精心选择步长的数值梯度可以解释为对解析梯度表达式的平滑操作。 正常监督的另一种选择是师生课程 [35, 47],其中预测的噪声法线被驱动到 MLP 输出,以利用 MLP 的平滑性。 然而,这种师生损失的分析梯度仍然只能反向传播到本地网格单元进行哈希编码。 相比之下,数值梯度可以解决局部性问题,而不需要额外的网络。
使用数值法计算表面法线除此之外,还需要额外的 SDF 样本。 给定采样点 xi = (xi, yi, zi),我们另外在步长 ϵ 附近沿着 xi 周围的规范坐标的每个轴采样两个点。 例如,x 分量表面法线的计算公式为
其中 ϵx = [ϵ, 0, 0]。 数值表面法线计算总共需要六个额外的 SDF 样本。
3.3. 细节的渐进层次
由粗到细的优化可以更好地塑造损失土地-避免陷入错误的局部最小值。 这种策略在计算机视觉中得到了许多应用,例如基于图像的配准[19,21,26]。 Neuralangelo 还采用从粗到细的优化方案来重建具有渐进细节级别的表面。 使用高阶导数的数值梯度自然使 Neuralangelo 能够从两个角度进行从粗到细的优化。
步长 ϵ。 如前所述,数值梯度可以解释为平滑操作,其中步长 ϵ 控制分辨率和恢复细节的数量。 在数值表面法线计算中使用较大的 ϵ 来强加 Leik 可确保表面法线在更大范围内保持一致,从而产生一致且连续的表面。 另一方面,使用较小的 ϵ 来施加 Leik 会影响较小的区域并避免平滑细节。 在实践中,我们将步长 ϵ 初始化为最粗的哈希网格大小,并在整个优化过程中匹配不同的哈希网格大小以指数方式减小它。
哈希网格分辨率 V。如果从优化开始就激活所有哈希网格,为了捕获几何细节,精细哈希网格必须首先从大步长 ϵ 的粗优化中“忘却”,并用较小的 ϵ“重新学习”。 如果这样的过程由于收敛优化而失败,则几何细节将会丢失。 因此,我们只启用一组初始的粗散列网格并逐步激活。当 ϵ 减小到其空间大小时,在整个优化过程中会出现更精细的哈希网格。 因此可以避免重新学习过程以更好地捕获细节。 在实践中,我们还在所有参数上应用权重衰减以避免单分辨率特征主导了最终的结果。
图 3.DTU 基准的定性比较 [11]。 Neuralangelo 可生成更准确、保真度更高的表面
3.4. 优化 进一步促进重构的流畅性
表面,我们通过正则化 SDF 的平均曲率来施加先验。 平均曲率是通过类似于表面法线计算的离散拉普拉斯算子计算的,否则,当使用三线性插值时,哈希编码的二阶解析梯度处处为零。 这曲率损失 Lcurv 定义为:
我们注意到方程中用于表面法线计算的样本。 8 足以进行曲率计算。
总损失定义为损失的加权和:
所有网络参数,包括 MLP 和哈希编码,都是端到端联合训练的。
4实验
数据集
继之前的工作之后,我们对 DTU 数据集的 15 个以对象为中心的场景进行了实验 [11]。 每个场景都有 49 或 64 个由机器人手持的单目 RGB 相机捕获的图像。 基本事实是从结构化中获得的光扫描仪。 我们进一步对 Tanks and Temples 数据集 [15] 的 6 个场景进行实验,包括大型室内/室外场景。 每个场景包含使用手持式单目 RGB 相机拍摄的 263 至 1107 张图像。地面实况是使用 LiDAR 传感器获得的。
实施细节
我们的哈希编码分辨率涵盖 25 到 211,共 16 个级别。 每个哈希条目的通道大小为 8。每个分辨率的哈希条目的最大数量为 222。由于场景尺度的差异,我们在 DTU 数据集和 Tanks 和 Temples 的优化开始时分别激活 4 和 8 哈希分辨率。 当步长 ϵ 等于其网格单元大小时,我们每 5000 次迭代启用一个新的哈希分辨率。 对于所有实验,我们在优化过程中不使用分割或深度等辅助数据。
评价标准
我们报告了用于表面评估的倒角距离和 F1 分数 [11, 15]。 我们使用峰值信号到噪声比(PSNR)来报告图像合成质量。
4.1. DTU 基准
我们在图 3 中显示了定性结果,并在图 3 中显示了定量结果结果如表 1 所示。平均而言,即使不使用辅助输入,Neuralangelo 也能实现最低的倒角距离和最高的 PSNR。 结果表明,Neuralangelo 在恢复表面和合成图像时比以前的工作更普遍适用,尽管它在每个单独的场景中都没有表现最好。
我们根据以下条件进一步消融 Neuralangelo:
1)AG:分析梯度,
2)AG+P:分析梯度和渐进激活哈希分辨率,
3)NG:具有不同 ϵ 的数值梯度。 图 4 定性地显示了结果。 即使使用散列,AG 也会产生噪声表面决议逐步激活(AG+P)。 NG 提高了表面的光滑度,但牺牲了细节。 我们的设置 (NG+P) 可产生光滑的表面和精美的细节。
图 4. 不同从粗到精优化方案的定性比较。 使用分析梯度(AG 和 AG+P)时,粗糙表面通常包含伪影。 虽然使用数值梯度 (NG) 可以得到更好的粗糙形状,但细节也得到了平滑。 我们的解决方案 (NG+P) 可产生光滑的表面和精细的细节。
表 1. DTU 数据集的定量结果 [11]。 Neuralangelo 实现了最佳的重建精度和图像合成质量。 最好的结果。 第二好的成绩。 † 需要 SfM 的 3D 点。 最好以彩色形式观看。
4.2. Tanks and Temples
由于Tanks and Temples没有公开结果,我们按照我们的设置训练 NeuS [36] 和 NeuralWarp [3]。 我们还使用 COLMAP [27] 报告经典的多视图立体结果。 由于 COLMAP 和 NeuralWarp 不支持视图合成,因此我们仅报告 NeuS 的 PSNR。 结果总结在图 5 和表 2 中。Neuralangelo 实现了最高的平均 PSNR 和在F1分数方面表现最好。 与 NeuS [36] 相比,我们可以恢复具有复杂细节的高保真表面。 我们发现,COLMAP 生成的密集表面对稀疏点云中的异常值很敏感。
我们还发现 NeuralWarp 经常预测天空和背景的表面,这可能是由于它们的显色性方案遵循 VolSDF [41]。 为背景预测的额外表面被视为异常值,并且会显着恶化 F1 分数。 相反,我们遵循 NeuS [36] 并使用附加网络 [46] 来对背景进行建模。 与DTU结果类似,使用解析梯度产生噪声表面,从而导致 F1 分数较低。 我们进一步注意到,如图所示的法院大楼的重建。 1和5是同一栋建筑的不同侧面,展示了Neuralangelo大规模的能力颗粒重建。
4.3. 详细程度
随着 Neuralangelo 逐步优化哈希功能,为了提高分辨率,我们检查类似于 NGLOD [33] 的细节的渐进级别。 我们在图 6 中展示了定性可视化。虽然有些表面完全是被粗层次错过,例如树、表和自行车架,这些结构通过更精细的分辨率成功恢复。 恢复缺失表面的能力证明了我们无空间层次设计的优势。
此外,我们注意到平面是在足够高的分辨率下预测的(在本例中约为 8 级)。因此,仅依靠粗分辨率局部单元的连续性不足以重建大的连续表面。 该结果激发了对高阶导数使用数值梯度,使得后退传播超出了局部网格单元。
图 6.不同哈希分辨率下的结果。 而一些结构,如树、桌子和自行车架,在粗分辨率下会被遗漏(4 级)。 更精细的分辨率可以逐步恢复这些缺失的表面。 平坦连续的表面也需要足够精细的预测分辨率(8 级)。 当使用高阶导数的数值梯度时,结果会激发非局部更新。
表 2. Tanks and Temples 数据集 [15] 的定量结果。 Neuralangelo 实现了最佳的表面重建质量,并且在图像合成方面平均表现最佳。 最好的结果。 第二好的成绩。 最好以彩色形式观看。
图 7. 消融结果。 (a) 曲率正则化 Lcurv 提高了表面平滑度。 © 凹形更好
通过拓扑预热形成。
4.4. 烧蚀曲率正则化
我们消除了 Neuralangelo 中曲率正则化的必要性,并比较了图 7(a) 中的结果。 直观上,Lcurv 通过最小化表面曲率来充当平滑先验。 如果没有 Lcurv,我们发现表面往往会出现不希望的急剧过渡。 经过使用 Lcurv 可以消除表面噪声。
拓扑预热
我们遵循先前的工作并将 SDF 初始化为近似球体 [42]。 对于初始球形,使用 Lcurv 也会使凹面形状难以形成,因为 Lcurv 通过防止曲率奇点来保留拓扑。 因此,我们不是从优化过程一开始就应用 Lcurv,而是使用较短的预热期来线性增加曲率损失强度。 我们发现这个策略特别有帮助凹区域,如图7(b)所示。
5.结论
我们介绍 Neuralangelo,一种摄影测量神经表面重建方法。 Neuralangelo 的发现简单而有效:使用高阶导数的数值梯度和从粗到细的优化策略。 Neuralangelo 解锁了建模为 SDF 的神经表面重建的多分辨率哈希编码的表示能力。 我们证明,Neuralangelo 能够以极高的保真度有效地恢复以对象为中心的捕获和大规模室内/室外场景的密集场景结构,从而能够从 RGB 视频重建详细的大规模场景。 我们的方法目前从图像中随机采样像素,而不跟踪其统计数据和错误。 因此,我们使用长训练迭代来减少随机性并确保细节的充分采样。 探索更高效的采样策略是我们未来的工作
加速训练过程