ScanNet 等当代 3D 分割基准的最先进模型使用和标记数据集提供的 3D 点云,这些点云是通过感测的多视图 RGB-D 图像的后处理获得的。它们通常在域内进行训练,放弃大规模 2D 预训练,并优于以 RGBD 多视图图像为特征的替代方案。使用姿势图像的方法与后处理的 3D 点云的方法之间的性能差距让人更加相信 2D 和 3D 感知需要不同的模型架构。在本文中,我们挑战了这一观点,并提出了 ODIN(全维实例分割),这是一种可以分割和标记 2D RGB 图像和 3D 点云的模型,使用在 2D 视图内和 3D 跨视图之间交替的转换器架构。视图信息融合。我们的模型通过所涉及标记的位置编码来区分 2D 和 3D 特征操作,该编码捕获 2D 补丁标记的像素坐标和 3D 特征标记的 3D 坐标。ODIN 在 ScanNet200、Matterport3D 和 AI2THOR 3D 实例分割基准上实现了最先进的性能,在 ScanNet、S3DIS 和 COCO 上实现了具有竞争力的性能。当使用感测到的 3D 点云代替从 3D 网格采样的点云时,它的性能大大优于以前的所有工作。当在可指导的具体代理架构中用作 3D 感知引擎时,它在 TEACh 对话行动基准上树立了新的最先进水平。
1 引言
人们对将 2D 基础图像特征移植到 3D 场景理解的兴趣激增。一些方法使用感测深度将预训练的 2D 图像特征提升为 3D 特征云。其他人通过按场景训练它们来渲染预训练骨干的 2D 特征图,将 2D 主干提取为可微分的参数化 3D 模型,例如 NeRF。尽管做出了这些努力,并且 2D 主干的能力不断增强,但 ScanNet 和 ScanNet200 等既定 3D 分割基准的最新技术仍然由直接在 3D 中运行的模型组成,无需任何 2D 预训练阶段。鉴于 2D 预训练的明显威力,为什么在这些 3D 任务中取得改进如此困难?
我们提出全维实例分割 (ODIN)†,这是一种用于 2D 和 3D 对象分割和标记的模型,可以解析单视图 RGB 图像和/或多视图构成的 RGB-D 图像。如图 1 所示,ODIN 在其架构中交替使用 2D 和 3D 阶段,融合每个图像视图内的 2D 信息以及跨姿势图像视图的 3D 信息。在每次 2D 到 3D 转换时,它使用深度图和相机参数将 2D 标记取消投影到其 3D 位置,并且在每次 3D 到 2D 转换时,它将 3D 标记投影回其图像位置。我们的模型通过所涉及标记的位置编码来区分 2D 和 3D 特征,该位置编码捕获 2D 补丁标记的像素坐标和 3D 特征标记的 3D 坐标。在处理 2D 单视图输入时,我们的架构只是跳过 3D 层并仅使用 2D 层进行前向传递。
我们在 2D COCO 对象分割基准和 ScanNet、ScanNet200、Matterport3D、S3DIS 和 AI2THOR 的 3D 基准上测试了 ODIN 的 2D 和 3D 实例分割以及 3D 语义分割。与使用预先计算的网格点云作为输入的方法相比,我们的方法在 ScanNet 和 S3DIS 上的表现比最先进的方法稍差,但在 ScanNet200 和 Matterport3D 上表现更好。当使用真实传感器数据作为输入,并从所有方法的束重建中获得姿势时,我们的方法表现得更好,在所有数据集中都大大优于所有先前的工作。我们证明了我们的模型在 3D 和 2D 数据集上联合训练的能力可以提高 3D 基准的性能,并且在 2D COCO 基准上产生具有竞争力的分割精度。我们的消融表明,交错的 2D 和 3D 融合操作优于我们首先在 2D 中处理然后转向 3D 的设计,或者简单地用 2D 特征绘制 3D 点。为了实现我们更广泛的体现视觉目标,我们还在模拟基准 TEACh 上部署 ODIN 作为 SOTA 体现代理模型的 3D 对象分割器,可以访问来自模拟器的 RGB-D 和姿势信息,并证明我们的模型设定了新的最先进水平。
2 相关工作
3D 实例分割。
3D 实例分割中的早期方法将其语义分割输出分组为各个实例。最近,Mask2Former 通过实例化对象查询实现了最先进的 2D 实例分割,每个查询通过与输入图像的特征图进行点积直接预测实例分割掩码。受其启发,Mask3D放弃了之前3D模型的分组策略,转而使用Mask2Former的简单解码头。MAFT 和 QueryFormer 通过合并更好的查询初始化策略和/或相对位置嵌入来改进 Mask3D。虽然这种向 Mask2Former 式架构的转变使 3D 实例分割架构更接近 2D 对应架构,但输入和主干仍然非常不同:2D 模型使用预先训练的主干,而 3D 方法在点云上运行并使用基于稀疏卷积的主干,在小规模 3D 数据集上从头开始训练。在这项工作中,我们建议直接使用 RGB-D 输入和设计架构,可以利用强大的 2D 主干在 3D 基准上实现强大的性能。
3D 数据集和基准。
大多数 3D 模型主要在点云上运行,避免使用基于图像的特征,部分原因是流行基准的设计。这些基准测试通过处理原始 RGB-D 传感器数据来生成点云,涉及手动和噪声步骤,导致重建点云和传感器数据之间不一致。例如,ScanNet 经历了复杂的网格重建步骤,包括束重建、隐式 TSDF 表示拟合、行进立方体、合并和删除噪声网格顶点,最后手动删除高度未对准的网格重建。与在提供的点云上训练和测试的方法相比,网格重建过程引入的错位可能会导致直接处理传感器数据的方法表现不佳。此外,某些数据集(例如 HM3D)无法访问原始 RGB-D 数据。虽然网格重建有其应用,但许多实时应用程序需要直接处理传感器数据。
基于 2D 的 3D 分割。
与实例分割文献不同,MVPNet、BPNet 和 DeepViewAgg 等几种语义分割方法直接利用传感器点云,而不是网格采样点云。Virtual Multiview Fusion 放弃了传感器 RGB-D 图像,转而从提供的网格渲染 RGB-D 图像,以对抗 ScanNet 图像中的错位和低视野。与我们的方法类似,BPNet 和 DeepViewAgg 集成了各种特征尺度的 2D-3D 信息,并使用预训练的特征初始化其 2D 流。具体而言,它们使用单独的 2D 和 3D U-Net 来处理相应的模态,并通过连接模块融合来自两个流的特征。我们的架构不是使用不同的流来特征化原始数据,而是实例化一个统一的 U-Net,它交错 2D 和 3D 层,可以用一个统一的架构处理 2D 和 3D 感知任务。值得注意的是,虽然这些工作仅仅关注语义分割,但我们的单一架构在语义和实例分割任务中都表现出色。
2D 基础模型的最新进展促使人们努力将其应用于 3D 任务,例如点云分类、零样本 3D 语义分割以及最近的零样本实例分割。通常,这些方法利用 2D 基础模型来表征 RGB 图像,将 3D 点云投影到这些图像上,使用深度进行遮挡推理,并通过均值池等简单技术集成所有视图的特征。值得注意的是,这些方法主要关注语义分割,强调像素级标记,而不是实例标记,这需要跨视图推理来跨多个视图关联相同的对象实例。OpenMask3D 是我们所知的唯一尝试使用 2D 基础模型进行 3D 实例分割的方法,方法是在 3D 点云上训练与类无关的 3D 对象分割器并利用 CLIP 特征对其进行标记。尽管它们在零样本设置中很有效,但它们通常落后于 SOTA 3D 监督方法 15-20%。某些作品不依赖基础模型的特征,而是使用预先训练的 2D 模型创建 3D 伪标签。另一项工作涉及拟合神经辐射场 (NeRF),结合来自 CLIP 的功能或来自最先进的 2D 分割器的按视图实例分割。这些方法需要昂贵的每场景优化,从而禁止在所有测试场景上进行测试以与 SOTA 3D 判别模型进行比较。Omnivore 没有将 2D 基础模型重新用于 3D 任务,而是建议构建一个统一的架构,可以处理图像、视频和单视图 RGB-D 图像等多种视觉模式,但它们仅显示分类任务的结果。同样,我们提出了一个统一模型,能够执行单视图 2D 和多视图 3D 实例和语义分割任务,同时为我们的大部分架构利用预先训练的权重。
跨视图 3D 融合:
跨视图融合的目标是使各个图像的表示在各个视图之间保持一致。正如我们在消融中所示,跨视图特征一致性对于 3D 实例分割至关重要:它使分割头能够认识到从多个视图观察到的 3D 对象确实是单个实例,而不是每个视点中的单独实例。
2D 到 3D 反投影:我们通过使用最近邻深度和已知的相机内在和外在参数,使用针孔相机模型将每个特征向量提升到相应的 3D 位置,从而将每个 2D 特征图反投影到 3D。随后,生成的特征化点云进行体素化,其中 3D 空间被离散化为体积网格。在每个占用的网格单元(体素)内,对特征和 XYZ 坐标进行均值池化,以导出新的 3D 特征标记集及其各自的 3D 位置。
具有相对位置的 3D k-NN Transformer:我们使用 k 最近邻注意力和相对 3D 位置嵌入来融合 3D 标记之间的信息。这与 Point Transformers类似,但我们只是使用普通的交叉注意力而不是这些作品中提出的向量注意力。具体来说,在我们的方法中,每个 3D 标记都会关注其 k 个最近的邻居。此操作中的位置嵌入与查询标记的位置相关。我们通过使用 MLP 对标记与其邻居之间的距离向量进行编码来实现这一点。查询的位置嵌入只是 0 向量的编码。因此我们有:
其中 pi 表示 3D token,形状为 N × 1 × 3,pj 表示每个 pi 的 k 个最近邻居,形状为 N ×k×3。这样,注意力操作对于 3D 标记的绝对坐标是不变的,并且仅取决于它们的相对空间排列。虽然每个 3D token 总是关注相同的 k 个邻居,但其有效感受野会跨层增长,因为邻居的特征在执行自己的关注时会更新。
3D 到 2D 投影:将标记置于 3D 环境中后,我们将特征投影回其原始 2D 位置。我们首先将每个体素的特征复制到该体素内的所有点。然后,我们将这些点重塑回多视图 2D 特征图,以便它们可以由下一个 2D 模块处理。特征向量在此转换中保持不变;区别在于它们的解释和形状。在 2D 中,特征的形状为 V × H × W × F,表示每个视点的特征图;在 3D 中,特征的形状为 N ×F,表示统一的特征云,其中 N = V · H · W.
跨尺度融合和上采样:
在多个单视图和跨视图阶段之后,我们可以访问每个图像以不同分辨率的多个特征图。我们借助可变形 2D 注意力(类似于 Mask2Former)来合并这些,在三个最低分辨率尺度(1/32、1/16、1/8)上运行。当我们有 3D 输入时,我们在可变形注意力之后在每个尺度应用额外的 3D 融合层,以恢复 3D 一致性。最后,我们在 1/8 分辨率特征图上使用一个简单的上采样层,使其达到 1/4 分辨率,并通过跳跃连接添加到主干网的 1/4 特征图。
传感器深度到网格点云特征传输:
对于 ScanNet和 ScanNet200 等 3D 基准测试,目标是标记从网格导出的点云,而不是传感器的深度图。因此,在这些基准测试中,我们不是将 1/8 分辨率特征图上采样到 1/4,而是将 1/8 分辨率特征图的特征三线性插值到从网格采样的提供的点云。这意味着:对于网格中的每个顶点,我们根据计算的 3D 特征进行三线性插值以获得插值特征。我们还从主干中未投影的 1/4 分辨率特征图进行类似的插值,以实现加性跳过连接。
共享2D-3D分割掩码解码器:
我们的分割解码器是一个Transformer,类似于Mask2Former的解码器头,它以上采样的2D或3D特征图作为输入,并输出相应的2D或3D分割掩码及其语义类。具体来说,我们实例化一组 N 个可学习对象查询,负责解码各个实例。这些查询由查询细化块迭代细化,该块包括对上采样特征的交叉关注,然后是查询之间的自关注。除了位置嵌入之外,所有注意力和查询权重在 2D 和 3D 之间共享。我们在 2D 中使用傅立叶位置编码,而在 3D 中我们使用 MLP 对 3D 标记的 XYZ 坐标进行编码。细化的查询用于预测实例掩码和语义类别。对于掩模预测,查询使用最高分辨率的上采样特征进行标记式点积。对于语义类别预测,我们在查询上使用 MLP,将它们映射到类别逻辑。我们建议读者参阅 Mask2Former 了解更多详细信息。
开放词汇类解码器:
从之前的开放词汇检测方法中汲取灵感,我们引入了一种能够处理任意数量语义类的替代分类头。此修改对于多个数据集的联合训练至关重要。与 BUTD-DETR 和 GLIP 类似,我们为模型提供一个检测提示,该提示是通过将对象类别连接成一个句子(例如“Chair.Table.Sofa.”)而形成的,并使用 RoBERTa 对其进行编码。在查询细化块中,查询在关注上采样的特征图之前还关注这些文本标记。对于语义类别预测,我们首先在查询和语言标记之间执行点积运算,在检测提示中为每个标记生成一个 logit。然后,对与特定对象类的提示标记相对应的逻辑进行平均,以得出每类逻辑。这可以处理多词名词短语,例如“浴帘”,我们对“淋浴”和“窗帘”对应的逻辑进行平均。分割掩模是通过像素/逐点点积来预测的,与前面描述的方式相同。
图 2. ODIN 架构:模型的输入是单个 RGB 图像或多视图 RGB-D 姿势序列。我们将它们输入 ODIN 的主干网络,该主干网络交错 2D 视图内融合层和 3D 跨视图注意层,以提取不同分辨率(尺度)的特征图。这些特征图通过多尺度注意力操作交换信息。额外的 3D 融合层用于提高多视图一致性。然后,使用掩码解码器头来初始化和细化可学习槽,这些槽参与多尺度特征图并预测对象片段(掩码和语义类)。
实现细节:
我们使用在 COCO 上训练的 Mask2Former 的预训练权重来初始化我们的模型。随后,我们端到端地训练所有参数,包括来自 3D 融合层的预训练参数和新参数。在 3D 场景训练期间,我们的模型处理 N 个连续帧的序列,通常包含 25 帧。在测试时,我们将场景中的所有图像输入到模型中,ScanNet 中每个场景平均有 90 张图像。除了在 2D-3D 数据集上联合训练之外,我们在所有实验中都使用普通的封闭词汇解码头。在那里,我们使用开放词汇类解码器来处理这些数据集中的不同标签空间。在训练过程中,我们对 2D 和 3D 联合数据集采用开放词汇掩码解码,否则采用普通封闭词汇解码。训练将持续进行,直到在 2 个具有 40 GB VRAM 的 NVIDIA A100 上进行收敛,3D 中的有效批量大小为 6,2D 中的有效批量大小为 16。对于 2D 和 3D 数据集的联合训练,我们交替采样 2D 和 3D 批次,每个 GPU 的批次大小分别为 3 和 8。我们采用 Mask2Former 的策略,使用匈牙利匹配将查询与真实实例和监督损失进行匹配。虽然我们的模型仅针对实例分割进行训练,但它可以像 Mask2Former 一样在测试时免费执行语义分割。我们参考 Mask2Former 了解更多细节。
4 实验
4.1 3D基准评估
数据集:
首先,我们在 ScanNet 和 ScanNet200 基准中对 3D 实例和语义分割模型进行测试。这些基准的目标是标记从原始传感器数据重建的场景的 3D 网格中提取的点云。ScanNet 对 20 个常见语义类进行评估,而 ScanNet200 使用 200 个类,这更能代表现实世界中遇到的长尾对象分布。我们在此处报告这些数据集的官方验证分割结果,并在补充材料中报告官方测试分割结果。
ODIN 优于具有传感器点云输入的 SOTA 3D 方法,但在基线使用网格采样点云时表现不佳(表 1a):
我们的模型显着优于具有传感器点云输入的 SOTA Mask3D 模型,并实现了与使用网格采样点的方法相当的性能由于 3D 网格和传感器点云之间未对准,mAP25 指标上的云输入远远落后于 mAP 指标。