3D 生成重建016-SA3D从nerf中分割一切
文章目录
-
- [0 论文工作](#0 论文工作)
- [1 方法介绍](#1 方法介绍)
- [2 实验结果](#2 实验结果)
0 论文工作
1 SAM的背景和目标:
SAM 是一种强大的二维视觉基础模型,能够在 2D 图像中进行任意物体的分割。传统上,SAM 在二维空间表现出色,但其无法直接应用于三维物体分割。
本文的目标是将 SAM 的能力扩展到 3D 物体分割,避免了 3D 数据采集和标注的昂贵过程。为了实现这一目标,SA3D 利用 Neural Radiance Field (NeRF) 作为桥梁,将 2D 图像和 3D 空间进行连接。
- 关键技术和创新:
NeRF 作为先验:
本文提出的方法通过利用 NeRF 学到的密度分布,将 SAM 得到的二维掩膜从一个视角映射到三维空间。NeRF 提供了从多视角图像到三维场景的连接,因此可以为不同视角之间的物体分割提供一致的指导。通过在 NeRF 中学习的视角一致的特征,可以在不同的视角中重建物体的三维掩膜。
掩膜反向渲染:首先从一个视角使用 SAM 对目标物体进行分割,得到一个二维掩膜。然后,通过反向渲染,将二维掩膜投影到 3D 空间,构建三维物体的体素掩膜。在这个过程中,NeRF 提供了密度信息来指导如何将二维掩膜有效地映射到三维空间。
自我提示:在完成当前视角的掩膜渲染后,SA3D 自动从 NeRF 渲染出的二维掩膜中提取有效的提示信息,并将其作为输入传递给 SAM,进行下一视角的分割。这个过程是交替进行的,直到通过多个视角生成完整的三维掩膜。
自我提示在简单场景中是一个可行的方法。但是场景比较复杂的话,比图说每个视图上有多个同类型的物体,在跨视图进行逆映射的时候,就会出现不一致。后面会有一些论文去优化这个问题。
paper
github
1 方法介绍
在 SA3D (Segment Anything in 3D) 方法中,自我提示(Self-Prompting) 是一种关键的技术,用来通过多视角的迭代过程生成三维掩膜。具体来说,自我提示的实现过程可以分为以下几个步骤:
初始二维掩膜生成:
1、给定一个视角中的目标物体,用户提供一个手动的粗略分割提示(例如一些粗略的点或框)。使用 SAM(Segment Anything Model)对这个视角中的物体进行分割,生成一个二维掩膜(mask)。
2、掩膜反向渲染。在生成了二维掩膜后,使用 NeRF(神经辐射场)技术将该掩膜投影到三维空间中。这一步是通过 反向渲染(inverse rendering)来完成的,即根据二维掩膜的密度分布信息,估计物体在三维空间中的分布。具体来说,NeRF 学习了一个三维场景的密度和颜色分布,通过这些信息可以将二维掩膜"反向映射"到三维空间中的体素网格,从而得到目标物体的三维掩膜。
3、跨视角自我提示:反向渲染得到三维掩膜后,SA3D 会自动生成用于下一视角的提示信息。这一步就是 自我提示 的关键。从 NeRF 渲染出的三维掩膜,通过与当前视角的关系,提取可靠的提示。具体来说,NeRF 渲染出的三维掩膜会被转换为该视角的二维图像,并与其他视角进行对比,寻找在其他视角中可能可靠的目标物体区域。这个过程类似于"从一视角生成另一视角的分割提示"。通过将已经生成的三维掩膜投影到新的视角,自动生成的提示信息可以帮助 SAM 在新的视角中进行物体分割。
4、循环迭代:自我提示的过程是 交替迭代 的。在每一轮迭代中,首先利用当前视角的二维掩膜通过 NeRF 渲染到三维空间,再利用三维掩膜在不同视角中生成新的二维分割提示,然后传递给 SAM 进行分割。随着迭代次数的增加,目标物体的三维掩膜逐渐变得更加精确和完整,因为每次迭代都会利用来自不同视角的信息进行完善。
自动生成提示:通过利用 NeRF 渲染出的三维掩膜,SA3D 自动提取出下一视角的分割提示,而无需人工干预。这意味着整个分割过程可以在没有更多人工输入的情况下继续进行。
跨视角信息利用:通过在不同视角间的交替提示,系统能够在多视角下自我调整并优化三维分割结果。
总结:自我提示的实现本质上是一种通过 NeRF 渲染的三维掩膜来生成可靠提示的过程,并通过跨视角的反馈和迭代逐步完善目标物体的三维分割结果。这使得 SA3D 能够在多视角间利用信息自我引导,快速生成高质量的三维物体分割,而无需人工提供多个视角的详细标注。