NeurIPS 2022 | 3D点云自监督预训练的自编码器 :Point-M2AE
NeurIPS 2022 | 3D点云自监督预训练的自编码器 :Point-M2AE
作者:HT | 来源:微信公众号「3DCV」
关注知乎@3DCV,第一时间看到3D视觉行业最新动态,包括工业3D视觉、SLAM和自动驾驶。
论文题目:《Point-M2AE: Multi-scale Masked Autoencoders for Hierarchical Point Cloud Pre-training》
作者机构:香港中文大学-商汤科技联合实验室; 上海人工智能实验室; 感知与交互智能中心
论文链接:https://arxiv.org/abs/2205.14401
项目主页:https://github.com/ZrrSkywalker/Point-M2AE(基于 PyTorch )
这篇论文介绍了一种新型自监督预训练框架,用于学习 3D 点云的分层表示。Point-M2AE 通过掩码自编码器(MAE)来学习 3D 点云数据的不规则表示。关键的改进包括以下几点:
与传统的 MAE 中的标准 Transformer 不同,Point-M2AE 将编码器和解码器修改为金字塔架构,这有助于逐步建模空间几何形状,并捕获 3D 形状的细粒度和高级语义。
论文引入了一种多尺度掩蔽策略,该策略可以生成跨尺度一致的可见区域,保持局部几何形状的完整性和网络的连贯性。在微调过程中,Point-M2AE 使用了局部空间自注意力机制,以便更好地关注相邻的模式。
为了更好地从局部到全局的角度重建3D几何形状,论文提出了利用跳连接以补充解码器中来自编码器相应阶段的细粒度信息
Point-M2AE 显示出强大的3D表示学习能力和优越的迁移能力,表现出 SOTA 的性能。使用预训练后的编码器,Point-M2AE 在 ModelNet40 上达到了 92.9% 的线性准确率,这甚至超过了一些全监督训练过的方法! 在对下游任务进行微调后,在 ScanObjectNN 上的准确率达到 86.43%。
论文提出了一种名为Point-M2AE的多尺度掩码自编码器,利用了分层架构和掩蔽策略来学习和重建多尺度的3D点云表征。通过这种方法,论文旨在实现对3D点云的有效表示学习,以提高3D相关任务,如分类、检测和分割等的性能。
论文的核心动机来源于解决现存的3D点云表征学习的挑战,特别是如何通过自监督学习有效地获取丰富而深层次的3D几何信息。这些挑战包括但不限于以下几点:
无序和不规则的数据格式:3D点云数据由于其无序和不规则的特性,使得传统的机器学习和深度学习方法难以直接应用。因此,需要设计新的学习框架来适应这种数据格式。
需要大量标注数据:传统的监督学习方法需要大量的人工标注数据来进行模型训练。然而,对3D点云数据进行人工标注是一项既费时又费力的工作,尤其是在大规模3D数据中。因此,采用自监督的学习方法,即通过设计一种无需人工标注的训练机制,可以大大降低学习的成本。
缺乏考虑多尺度信息:3D物体往往包含多尺度的几何和语义信息,例如从整体形状到局部细节。然而,现有的方法往往忽视了这些信息的存在,导致表征的学习不够充分和深入。
论文中,作者提出了一种名为Point-M2AE的多尺度掩蔽自编码器,主要的设计策略包括分层架构,多尺度掩蔽策略和自监督预训练。
分层架构:作者设计了一个分层架构,用于编码和解码3D点云的多尺度表征。在编码器端,模型先学习全局的粗粒度信息,然后逐级学习更加细致的局部信息。在解码器端,模型采取相反的顺序,先从细节开始恢复,然后逐步恢复全局信息。此外,作者还在编码器和解码器之间引入了跳连接,使解码器能够获取编码器在相同级别的特征。这这种架构能够自然地捕捉到3D物体从全局形状到局部细节的多层次信息,也更适合处理其无序和不规则性。
多尺度编码:为了捕捉到3D点云数据中从全局到局部的多层次信息,作者提出了一种分层的多尺度编码器。具体来说,编码器由三个级别的编码器组成,每个级别的编码器都使用Transformer模块来捕获点云数据中的全局和局部关系。这种多尺度编码器的设计,使模型能够更好地学习和表征3D点云数据中不同层次的特征,同时也能适应不同的输入尺度和点云密度,这对于处理复杂的3D数据非常关键。
分层解码:与多尺度编码器相对应,作者提出了一种分层的解码器。这个解码器同样由三个级别的解码器组成,用于逐级地恢复被掩蔽的3D点云。为了在解码过程中能够利用编码器学习到的特征,作者在编码器和解码器之间添加了跳连接。这种设计可以使解码器在恢复被掩蔽点云时,得到更丰富的信息源。
多尺度掩蔽策略:作者提出了一种在不同尺度上随机掩蔽点云部分的策略,通过在不同尺度上随机掩蔽点云的一部分,而在每个尺度上模型需要从剩余的可见点中预测被掩蔽的点,从而在自监督的情况下学习3D点云的表征。这种设计鼓励模型从不同尺度的视角理解3D点云,以便更准确地重建被掩蔽的部分
自监督预训练:通过自编码器的方式,作者设计了一个自监督的预训练任务,即重建被掩蔽的3D点云。这种方法无需人工标注的训练数据,大大降低了学习的成本。
作者设计这种方法的出发点主要是解决当前3D点云表征学习中的一些主要挑战,包括数据的无序和不规则性,学习的高成本,以及忽视了多尺度信息等问题。而作者选择这种方法的理由主要是:
分层架构可以更好地处理3D数据的无序和不规则性,同时模型可以自然地捕捉到3D物体从全局形状到局部细节的多层次信息。
多尺度掩蔽策略通过增加模型的学习难度,可以鼓励模型学习到更丰富和深层次的3D表征。模型可以从不同尺度的视角理解3D点云,以便更准确地重建被掩蔽的部分。
通过自监督预训练,模型可以在无需人工标注的情况下有效地学习3D点云的表征。
总的来说,这种方法旨在通过自监督的方式,利用分层架构和多尺度掩蔽策略,有效地学习3D点云的多尺度表征。
掩膜自编码器(MAE) 在语言和 图像变换的自监督预训练中显示出巨大的潜力。然而,如何利用掩模自编码来学习不规则点云的 表示仍然是一个悬而未决的问题。
本文提出了一种用于 点云分层自监督学习的强多尺度MAE预训练框架 Point-M2AE。
与MAE中的标准 transformer 不同,作者将编码器和解码器修改为金字塔架构,以逐步建模空间几何形状,并捕获3D形状的细粒度和高级语义。
对于分阶段下采样点 token 的编码器,作者设计了一种多尺度掩蔽策略来生成跨尺度一致的可见区域,并在微调过程中采用局部空间自注意机制来聚焦相邻模式。
通过多尺度token传播,轻量级解码器逐步从编码器上采样具有互补跳连接的点token,进一步促进了从全局到局部的重构。
大量的实验证明了Point-M2AE在3D表示学习中的最先进性能。
使用预训练后的冻结编码器,Point-M2AE在ModelNet40上对线性支持向量机 SVM的准确率达到了 ,甚至超过了一些完全训练过的方法。
通过对下游任务的微调,Point-M2AE在ScanObjectNN上的准确率达到 ,次之为 ,极大地有利于分级预训练方案的few-shot分类、部件分割和3D目标检测。
图1: MAE(上) 和Point-M2AE(下) 的比较。 用于 图像预训练的MAE采用的是普通编码器-解码器的标准 transformer,而Point-M2AE则引入了带跳连接的分层 transformer进行多尺度点云预训练。
在自然语言处理、计算机视觉和多模态学习等领域,学习从没有标注的数据中进行表示被称为自监督学习。通过对大规模原始数据的预训练,该网络具有鲁棒的表示能力,并且可以通过微调显著地有利于下游任务。
基于掩模语言建模,MAE等方法采用非对称编码器-解码器 transformer 对 图像进行自监督学习的掩模自编码。
它们将输入图像表示为多个局部小块,并以高比例随机掩码来构建重建的代理任务。
具体来说,编码器旨在从有限的可见 patch 中捕获高级潜在表示,而轻量级解码器则重建被掩蔽patch的RGB值上面。
尽管它在基于网格的图像上具有优势,但我们提出了一个问题: MAE风格的掩码自编码能否作为一种强大的 表示学习器适用于不规则点云?
为了解决这一挑战,我们提出了多尺度掩码自编码器,通过自监督预训练 ( 称为Point-M2AE) 来学习点云的分层表示。我们将点云表示为一组描绘不同空间局部区域的点 token ,并继承MAE的 pipeline ,首先对可见点 token 进行编码,然后重建被遮挡的 坐标。
与 图像不同, 点云的掩模自编码有三个特点需要特别考虑。
第一,了解局部部件与整体 形状之间的关系至关重要,这些形状具有很强的几何和语义依赖性。
例如,该网络可以从机翼开始识别飞机,或者从飞机的全局特征中分割机翼部分。
因此,我们认为带有普通编码器和解码器的标准 对于在 中捕获这种局部-全局空间关系来说是次优的,它直接将输入采样到图 (顶部) 所示的低分辨率表征中。
我们将编码器和解码器都修改为多阶段层次结构,以逐步编码点云的多尺度特征,构建如图 (底部) 所示的非对称U-Net架构。
第二,与单尺度 图像不同,Point-M2AE编码的是多尺度点云,因此要求未遮挡的可见区域在一个尺度内是逐块的,在不同尺度之间是一致的,这分别是为了保留完整的局部几何形状和保证网络的连贯特征学习。
为此,引入了一种多尺度掩蔽策略,该策略在最终尺度上以高比率 (例如)生成随机掩码,并将未被掩蔽的位置反向投影到所有先前的尺度。
第三,为了从局部到全局的角度更好地重建 几何形状,我们利用跳连接来补充解码器中来自编码器相应阶段的细粒度信息。
在下游任务的微调过程中,我们还采用了局部空间自注意机制,增加了编码器不同阶段点 token 的 attention 范围,从而将相邻详细结构中的每个 token 重新聚焦。
通过多尺度预训练,Point-M2AE可以从局部到全局的层次对点云进行编码,然后从全局到局部的角度重建掩蔽坐标,学习到强大的 表示,具有优越的迁移能力。
在ShapeNet上进行自监督预训练后,Point-M2AE使用冻结编码器在ModelNet40上对线性支持向量机 SVM的分类准确率达到,比亚军 CroosPoint高出+,甚至优于一些全监督的方法。
通过对各种下游任务进行精细调整,Point-M2AE在ScanObjectNN上达到的精度,在ModelNet40上达到 的精度,在ShapeNetPart上达到的实例,在 -way -shot ModelNet40上达到的精度 few-shot 分类。
我们的多尺度掩码自编码也有利于+ AP和+ AP在 ScanNetV2上的物体检测,这为检测 backbone 提供了对点云的分层理解。
本文的贡献总结如下:
提出了一种强掩模自编码框架Point-M2AE,该框架对点云进行分层编码和重构,以更好地学习 形状的多尺度空间几何。
引入了一种类似U-Net的 架构,用于点云的MAE式预训练,并采用多尺度掩蔽策略来生成跨尺度一致的可见区域。
Point-M2AE在各种下游任务的迁移学习中取得了最先进的性能,这表明我们的方法是一个强大的3D点云表示学习器。
与从样本间关系中学习的对比学习方法相比,通过掩蔽自编码的自监督预训练构建代理任务来预测输入信号的掩蔽部分。
GPT和BERT系列将掩模建模应用于自然语言处理,并通过微调在下游任务上实现了非凡的性能提升。
受此启发,BEiT提出通过 dVAE 将图像 patch 与离散token进行匹配,并通过掩蔽图像建模预训练标准视觉 transformer。
最重要的是,MAE直接重建被掩码token的原始像素值,具有很高的掩码比,效率很高。后续工作通过动量编码器、对比学习和改进重建目标进一步提高了MAE的性能。对于 3D 点云的自监督预训练,掩码自编码尚未得到广泛的应用。
与BEiT类似,Point-BERT利用dVAE将3D patch映射到token进行掩模点建模,但严重依赖于约束性学习、复杂的数据增强和昂贵的两阶段预训练。
相比之下,我们的Point-M2AE是一种纯掩模自编码的单阶段预训练方法,采用MAE来重构输入信号,不需要dVAE映射。与以往采用标准普通 的MAE方法不同,我们提出了一种分层 架构和多尺度掩蔽策略,以更好地学习 点云的强通用表示。
主流方法主要是基于编码的潜在向量,如旋转、变形、重排部分、遮挡等,构建借口任务来重构变换后的输入点云。
从另一个角度来看,PointContrast利用来自不同视角的同一点的特征之间的对比学习来学习判别性的 表示。
DepthContrast进一步扩展了不同增强深度图的对比度。
Crosspoint对点云与其对应的渲染图像进行跨模态对比学习,获取丰富的自监督信号。
Point-BERT和Point-M2AE分别为具有标准 网络的 点云引入了bert风格和MAE风格的预训练方案,并在各种下游任务上进行竞争,但两者都只能以单一分辨率对点云进行编码,而忽略了 形状之间的局部-全局关系。
在本文中,我们提出了Point-M2AE,这是一个具有层次 transformer 的MAE风格的框架,用于多尺度点云预训练。我们通过学习点云的多尺度表示来实现最先进的下游性能。
图2: Point-M2AE的整体流程。在多尺度掩蔽之后,我们在第一尺度上编码点 token ,并将可见的点 token 馈送到分层编码器-解码器 transformer 中,该 transformer 在预训练期间捕获点云的高级语义和细粒度模式。
Point-M2AE的整体流程如图 2 所示,其中我们采用分层网络架构对点云进行编码和重构。
为了构建类似U-Net的用于分层学习的掩码自编码器,我们对点云按 尺度进行编码,每个尺度上的点数不同,并将标准的普通编码器相应修改为 S-级架构。
在MAE之后,我们将点云嵌入到离散的点token中,并随机掩蔽它们以进行重建。
重要的是,对于多尺度架构中不规则分布的点,要求暴露的可见空间区域不仅在一个尺度内保持一致,而且在不同尺度之间保持一致。
这是因为 形状的块方向部分倾向于保留更完整的细粒度几何形状,并且为了编码器的连贯特征学习,在所有尺度上共享未被遮挡的位置更好。
因此,如图 3 所示,我们首先构建输入点云的 s-尺度坐标表示,并将随机掩码从最终 s尺度反投影到早期尺度,以避免碎片化的可见部分。
S-scale 表示
我们将输入点云记为 ,并将其作为第 个尺度。
对于第 个尺度,,我们利用最远点采样 (FPS) 对第 个尺度的点进行下采样,对 个点的第 个尺度产生种子点 。
然后,我们采用 近邻 ( ) 对每个种子点的相邻 个点进行聚合,得到相邻指标 。
通过逐次降采样和分组,我们获得了 s-尺度表示 关于输入点云,其中点的个数 逐渐减少,尺度之间的包含关系记录在 . 中。
反投影到可见位置
对于最终 尺度的种子点 ,我们随机用大比例 (如 ) 掩码,剩余可见点记为 点的 。
然后,我们将未遮挡的位置 反投影,以确保跨尺度的可见区域一致。
对于第 个尺度,我们从索引 中检索出 的所有 个最近的邻居,作为 的可见位置,并掩蔽其他位置。
通过递归反投影,我们得到了所有 尺度的可见和掩码位置,记为 ,其中 且 .
图3: 多尺度掩蔽策略。
为了获得跨尺度一致的可见区域,我们首先用多尺度坐标表示输入点云,并在最高处生成随机掩码。
然后,我们将未遮挡的可见位置反向投影到所有早期尺度。
基于多尺度掩蔽,我们将第一尺度的可见点 的初始 token 嵌入到 S-级的分层编码器中。
每个阶段配备 个堆叠编码器块,每个块包含一个自注意层和一个 **MLP 层的前馈网络 (FFN)**。
在每两个连续阶段之间,我们引入空间token合并模块来聚合相邻的可见token,并扩大接受域以进行点云的下采样。
token嵌入和合并
以 为索引,我们利用 mini-PointNet 提取并融合 中的每个种子点及其 个最近邻居的特征。之后,我们获得编码器第 1 阶段的初始点token ,该编码器嵌入了3D形状的 局部图案。
在 -th 和 i-th 阶段之间,我们合并 以获得i-th阶段的下采样点token。我们利用MLP层和最大池化来整合最接近 的每 k 个token,以 为索引,输出 。
由于我们的多尺度掩蔽,合并后的 对应于 的相同可见部分,这使得在不同尺度上的特征编码保持一致。对于较大的深度阶段 ,我们设置了较高的特征维 ,使空间几何编码具有更丰富的语义。
局部空间自注意
在预训练期间,我们期望多级编码器中的点 token 能够捕获3D形状的全局线索,这有利于掩模部分的重建。
然而,当对下游任务进行无掩码自编码的微调时,参考 局部性的归纳偏差,较浅阶段的点token最好主要关注局部信息,而不受远程信号的干扰。
因此,在微调期间,我们使用局部空间约束修改编码器中的原始自注意层,使得只有球查询中的相邻标记可用于 attention 计算。在点 tokens 分阶段下采样的基础上,我们设置多尺度球查询的递增半径函数 ,逐步扩大 attention 范围,实现了局部到全局的特征聚合方案。
通过分层编码器,我们得到所有尺度的编码可见token。
从最高 S-th 尺度开始,我们为所有被掩蔽位置 分配一个共享的可学习掩码token;
并将它们与可见`token 连接起来。我们记为 ,坐标为 ,作为分层解码器的输入。
我们将解码器设计为轻量级的 阶段,每个阶段只有一个解码器块,这使得编码器可以嵌入更多的点云语义。
每个解码器块由一个普通的自注意层和一个 FFN 组成。
我们没有将局部约束应用于解码器中的注意力,因为可见和掩码token之间的全局理解对重建至关重要。
点 token 上采样
我们对阶段之间的点标记进行上采样,以便在重建之前逐步恢复3D形状的细粒度几何形状。我们规定解码器的第 级对应于编码器的 -级,两者都包含相同的 -阶的点标记,特征维数 。
在 (j−1) 和 j 阶段之间,$1<j \leq="" s-1$,我们上采样="" $\left\{h_{j-1}^v,="" h_{j-1}^m\right\}$="" 从坐标="" $\left\{p_{s+2-j}^v,="" p_{s+2-j}^m\right\}$="" 变成="" $\left\{p_{s+1-j}^v,="" p_{s+1-j}^m\right\}$="" ,="" 通过token传播模块。
具体地说,我们得到了每个点标记的 个近邻: 以 为索引,参照PointNet++加权插值恢复相邻特征,生成第 j 阶段token。
跳连接
为了进一步补充细粒度的几何形状,我们通过跳连接将解码器的可见标记 与编码器的相应 阶段的 通道巧妙地连接起来,并采用线性投影层融合它们的特征。
对于掩码token,,我们保持它们不变,因为编码器只包含可见token而不包含掩码token。
点重建
经过S - 1级解码器,我们获得 ,坐标为 ;并从掩码token 重构掩码值。
除了在输入点云 P 的第 个尺度上预测值之外,我们重建了 的坐标,即从第 2 个尺度 中恢复第 1 个尺度 的掩模位置。
这是因为第 1 尺度的 可以很好地表示整体的3D形状,同时保留足够的局部模式,这已经为预训练构建了一个比较具有挑战性的代理任务。
如果我们进一步上采样 转化为 ,并从 重建被掩盖的原始点,额外的空间噪声和计算开销会对我们的性能和效率产生不利影响。
因此,对于 中的每一个token,我们通过一个线性投影层的重建头重建 中记录的 个最近邻,并计算 倒角距离的损失,表示为:
和 表示从第 2 尺度到第 1 尺度的预测和ground-truth重建坐标。
我们仅利用 进行无对比损失的监督,对自监督预训练进行纯掩码的自编码。
在4.1节和4.2节中,介绍了Point-M2AE的预训练实验,并报告了在各种下游任务上的微调性能。
在第4.3节中进行了消融研究,以验证方法的有效性。
我们在ShapeNet数据集上预训练Point-M2AE,该数据集包含 个类别的 个合成 D形状。我们将级数 设为 ,并构造一个 级编码器和一个分层学习的两阶段解码器。
我们在每个编码器阶段采用 个块,但轻量级解码器每阶段只采用 个块。
对于 尺度点云,我们将点数和token维度分别设置为 和 。我们还为 -nn 在不同的尺度上设置了不同的 ,分别是 。
我们以 的高比例遮罩最高尺度的点云,并为所有注意力模块设置 个头。详细的训练设置见附录。
线性支持向量机 SVM
在ShapeNet上进行预训练后,我们通过在ModelNet40上进行线性评估来测试PointM2AE的 表示能力。我们从ModelNet40的每个 形状中采样 个点,并利用我们的冻结编码器提取其特征。
在此基础上,我们训练了一个线性支持向量机 SVM,并报告了表 中的分类精度。如图所示,在所有现有的点云自监督方法中,Point-M2AE的性能最好,比第二好的 crosspoint高出 。Point-M2AE也比Point-BERT高出 。Point-M2AE是一种具有 MoCo 损失的掩蔽点建模方法,但采用的是标准 ,进行单尺度学习。
值得注意的是,即使我们冻结所有参数,准确率为 的Point-M2AE仍然优于ModelNet40上许多完全训练的方法,例如PointNet++的准确率为 ,DensePoint 的准确率为 等。实验充分证明了我们的Point-M2AE具有优越的 表示能力。
表1: 支持向量机 SVM对ModelNet40的线性评价。我们报告了不同的自监督学习方法,并强调了第二好的方法。
为了对下游任务进行微调,我们在预训练中丢弃了分层解码器,并为不同的任务在分层编码器上附加了不同的头。
形状分类
我们在两个形状分类数据集上对Point-M2AE进行微调:广泛采用的ModelNet40和具有挑战性的ScanObjectNN。对于局部空间关注层,我们将 尺度点云的球查询半径设为 。我们遵循Point-BERT使用投票策略在ModelNet40上进行公平比较。
为了处理有噪声的空间结构,我们将 -nn 的 增加为 ,以便ScanObjectNN编码具有更大接受域的局部模式。如表 所示,Point-M2AE 在ModelNet40上达到了 的准确率,每个样本 点,比Point-BERT微调 点的准确率高 ,比 点的准确率高 。
对于表 中的ScanObjectNN,我们的Point-M2AE比第二好的Point-BERT的性能有明显的提升,在三个拆分中分别达到 , 和 ,表明我们在复杂情况下通过多尺度编码有很大的优势。由于真实场景的ScanObjectNN与预训练的合成ShapeNet在语义上存在较大差距,Point-M2AE对另一个域的点云也具有较强的迁移能力。
表2: ModelNet40上的形状分类。“#points”和“Acc”。表示训练点数和总体准确率。[S] 表示自监督预训练后的微调。
表3: ScanObjectNN上的形状分类。我们报告ScanObjectNN的三类数据集的准确性(%)。[S]表示自监督预训练后的微调。
部件分割
我们在``ShapeNetPart上评估了Point-M2AE`的部件分割,它预测了每个点的部件标签,并且需要详细了解局部模式。我们采用了一个非常简单的分割头来验证我们的预训练的有效性,以很好地捕获高级语义和细粒度细节。
通过分层编码器,我们得到 点的 尺度点token,在PointNet++中进行特征传播,将这些token独立上采样到输入点云的 个点。
然后,我们将每个点的上采样 尺度特征连接起来,并通过堆叠的线性投影层来预测部件标签。
如表 所示,在简单分割头情况下,Point-M2AE达到了最佳的 实例,比第二好的Point-BERT高出 。注意,Point-BERT等方法采用分层分割头从中间层逐步上采样点特征,而我们的头不包含分层结构,仅依靠预训练的编码器捕获点云的多尺度信息。结果充分说明了Point-M2AE的多尺度预训练对分割任务的重要意义。
few-shot分类
我们在ModelNet40上进行了few-shot分类实验,在有限的微调数据下评估Point-M2AE的性能。如表 所示,Point-M2AE在所有四种设置下均达到最佳性能,分别比Point-BERT高出 、、 和 。
我们的方法也比其他基于 的方法显示出更小的偏差,这表明Point-M2AE已经学会了产生更通用的 D 表示,可以很好地适应低数据条件下的下游任务。
表4: 在ModelNet40上的few-shot分类。我们报告了个独立实验的平均准确度(%)和标准偏差(%)。
表5: ShapeNetPart上的部件分割。' C '(%)和' I '(%)分别表示数据集中所有部件类别和所有实例的平均IoU。
D 目标检测
为了进一步评估我们在 D 物体检测上的分层预训练,我们应用Point-M2AE作为室内ScanNetV2数据集的特征主干。我们选择 D ETR-m 作为基准,它由一个 块编码器和一个 解码器组成。
考虑到ShapeNet有 k 个输入点,而ScanNetV2有 k 个输入点,我们采用与 DETR-m 相同的编码器架构,并保持我们的分层解码器与跳连接不变,在ScanNetV2上进行自监督预训练。
更多关于模型和训练的细节见附录。如表 所示,与从头开始训练相比,我们的分层预训练使 DETR-m 的性能提高了 AP 和 AP 。实验证明了Point-M2AE在学习多尺度点云编码用于目标检测方面的有效性,以及它在更广泛的 D 应用中的潜力。
表6: 在ScanNetV2上的 目标检测。我们报告了基于VoteNet和3DETR-m的自监督学习方法的性能(%)。
我们在预训练中通过每次修改一个组件进行消融研究,探索最佳掩蔽策略。我们报告了在 ModelNet40 上使用线性支持向量机 SVM评估预训练表征的分类精度。对于下游任务,我们从头开始训练网络,以验证分层预训练的重要性。
分层模块
如表 所示在我们的最终解决方案Point-M2AE之上的第一行,我们分别尝试从框架中删除分层编码器、分层解码器和跳连接。
具体来说,我们将编码器和解码器替换为类似于MAE的 级普通架构,其中分别包含 个和 个vanilla 块。
我们观察到编码器和解码器中没有多级结构会影响性能,分层编码器比解码器发挥更好的作用。
此外,跳连接通过为解码器提供补充信息而很好地提高了准确性。
表7: 分层模块。' H '表示具有多阶段层次结构的编码器和解码器。' Skip C. '表示跳跃连接。
掩蔽策略
在表 中,我们报告了具有不同掩码设置的Point-M2AE。如果没有多尺度掩码,我们在每个尺度上随机生成掩码,导致所有尺度的可见区域都是碎片化的。
使用这种策略,网络会在不同阶段“窥视”点云的不同部分,这会干扰表征学习并使性能降低 的准确率。
对于不同的掩码比例,我们发现 的掩码比例最适合构建具有适当挑战性的自监督预训练代理任务。
表8: 不同的掩蔽策略。“MS Mask”和“Ratio”表示多尺度掩码和掩码比率。
有和没有预训练
我们在表 中报告了有预训练和没有预训练的Point-M2AE在下游任务上的性能。对于“w/o”,我们随机初始化参数并从头开始训练网络。
如图所示,预训练可以在四个数据集上分别提高 ,, 和 的性能,这表明了我们分层预训练的优越性和意义。
表9: 预训练前后。ModelNet40- FS 表示10-way 20-shot 的ModelNet40的few-shot分类。
多尺度掩蔽
为了便于理解我们的多尺度掩蔽策略,我们在图 的每一行中分别可视化了输入点云、 尺度表示、重建点云和 尺度掩蔽点云。
如图所示,不同的尺度可以表示点云不同层次的几何细节和语义。通过多尺度掩蔽策略,我们观察到掩蔽点云的可见位置在一个尺度内是块方向的,并且在不同的尺度上是一致的,这对我们的分层预训练有重要意义。
细粒度的信息
细粒度的 D 结构,例如植物的细枝,人的手指,飞机的引擎,对于区分相似的形状非常重要,并且可以通过我们的分层表示很好地编码。
在图 中,我们通过可视化提取的点特征并在预训练期间重建点云,将我们的Point-M2AE与多阶段和单尺度架构进行了比较。与单尺度网络相比,多尺度网络在细粒度结构中表现出更高的特征响应,重构出更精确的空间细节。
图4: 细粒度信息的可视化。我们将分层和非分层架构的输出分别表示为[NH]和[H]。对于输入点云(中),我们将其提取的特征 (左) 和重建结果 (右) 可视化。
图5: 多尺度点云可视化。在每一行中,我们可视化了输入点云、它们的多尺度表示、重建坐标和多尺度掩蔽点云。
作者提出了一种多尺度掩码自编码器Point-M2AE,用于 点云的自监督预训练。通过分层架构,Point-M2AE通过编码多尺度点云并从全局到局部上采样方案重建掩码坐标来学习生成强大的3D表示。
大量的实验证明了Point-M2AE作为一个强大的 表征学习器的优越性。由于局限性和未来的工作,将专注于将Point-M2AE应用于更广泛的3D应用,例如户外和开放世界场景理解。
图6: 多尺度掩蔽的流程。首先利用FPS和 k-NN 得到输入点云的多尺度表示。然后,随机掩蔽最高级别的点,并将可见位置反向投影到前例尺度中。
Transformer。
transformer 首先在自然语言处理中被提出,用于捕获长句子中的词间关系,并且在大多数语言任务中占主导地位。
在此激励下,Vision Transformers和DETR将transformer架构引入计算机视觉,并激发后续工作将 transformer 有效应用于广泛的视觉任务,如图像分类、目标检测、语义分割等。对于 理解,基于 transformer 的网络还用于形状分类、部件分割、从点云和单眼图像中检测 物体。
PCT 利用相邻嵌入层聚合局部特征,并通过transformer块对下采样点云进行处理,是一项开创性的工作。
PoinTr 和Point-BERT将点云划分为多个空间局部块,并利用平面架构的标准 transformer 对这些块进行编码。
在此基础上,我们提出了带有分层编码器-解码器 transformer 的Point-M2AE,该 transformer 设计用于MAE风格的自监督点云预训练,可以很好地捕获点云的多尺度特征。
位置编码
为了补充 空间信息,我们对Point-M2AE中的所有注意层应用位置编码。
对于点token 或 在第 阶段,我们利用两层MLP编码其对应的 坐标 或
将 转换为 通道向量,并在进入注意层之前明智地将它们与token特征一起添加。
Self-supervised 训练
根据之前的工作,我们在ShapeNet中从每个 D 形状中抽取 个点进行预训练Point-M2AE。
我们预训练网络 次,批大小为 ,并采用 AdamW 作为优化器。
我们将初始学习率和权重衰减分别设置为 和 ,并采用余弦调度器和 epoch预热。
在预训练过程中,我们利用常见的随机缩放和随机翻转来增强数据。
对于ModelNet40上的线性支持向量机 SVM,在分层编码器之后,我们同时使用max和average池来聚合点token之间的特征,并将两个池化的特征求和作为点云的编码全局特征。
形状分类
我们在两个数据集上对Point-M2AE进行了微调,用于形状分类。
被广泛采用的ModelNet40由40个类别的合成 形状组成,其中 个样本用于训练, 个样本用于验证。
具有挑战性的ScanObjectNN包含15个类别的 个训练点云和 个验证点云,这些云是从嘈杂的现实世界场景中捕获的,因此与预训练的ShapeNet数据集存在域差距。
ScanObjectNN分为OBJ-BG、OBJ-ONLY和PB-T50-RS三部分进行评估,其中PB-T50-RS最难识别。
我们分别从ModelNet40和ScanObjectNN的每个3D形状中采样 和 个点,并且只使用 通道坐标作为输入。
两个数据集采用相同的训练设置。
我们对网络进行了 个epoch的微调,批大小为 ,并将学习率设置为 ,权重衰减 。
对于其他训练超参数,我们保持它们与预训练实验相同。
部件分割
ShapeNetPart包含 个对象类别和 个部件类别的 个合成3D形状,其中用于训练和验证的样本分别为 个和 个。
我们从每个形状中抽取 个点作为输入,并预测所有点的部件类别。
我们微调了 个epoch的Point-M2AE,批大小为 ,并将学习率设置为 ,权重衰减为 。
其他训练设置与形状分类实验相同。
Few-shot分类
我们遵循前人的研究,在ModelNet40上采用 “K-way N-shot” 设置进行few-shot分类。
我们从 个类中随机选择K个,每个类样本 N+ 个 3D 形状,个用于训练, 个用于测试。
我们对Point-M2AE进行了四种few-shot设置: -way -shot, -way -shot, -way -shot和 -way -shot。
为了减轻随机抽样的方差,我们对每个few-shot设置进行了 次独立运行,并报告了平均精度和标准差。我们采用与形状分类实验相同的训练设置,但只微调了 个epoch的Point-M2AE。
3D对象检测
我们在ScanNetV2上对Point-MAE进行预训练和微调,用于3D物体检测。
该数据集包含 个扫描的室内场景,包含 个类别的轴对齐 3D 边界框, 个用于训练, 个用于验证。
由于我们在3DETR-m中采用了相同的2级编码器架构,因此我们将解码器的级数设置为 ,这符合S级编码器和 级解码器的规则。
在ShapeNet预训练实验中,我们对Point-M2AE进行了 个epoch的预训练,学习率为 ,并遵循其他超参数。对于微调,我们采用了与原论文中从头开始训练 3der-m相同的设置,以进行公平的比较。
图7: 预训练前后的Point-M2AE学习曲线我们在ModelNet40和ScanObjectNN上可视化准确率(左)和损失曲线(右)。我们放大了收敛精度和损失进行比较。
多尺度掩蔽流程
在图6中,我们展示了简化的掩码流程,它清楚地说明了掩码是如何在最高规模下生成的,并向后投影到先前的层。
学习曲线
为了比较有预训练和没有预训练的训练,我们在ModelNet40和ScanObjectNN上给出了它们的损失和准确率曲线。
如图7.2所示,与未进行预训练的曲线相比,经过预训练的曲线收敛速度更快,分类准确率更高。这充分证明了Point-M2AE分层预训练的有效性。
t-SNE
在图8中,我们将在ModelNet40上进行微调前后,Point-M2AE提取的特征分布可视化。如图所示,预训练后的Point-M2AE无需微调,就可以产生不同类别的判别特征。
然后,进一步对同一类别的特征进行聚类,对不同类别的特征进行分离。
图8: t-SNE 在ModelNet40上的可视化。我们展示了Point-M2AE在微调之前(左)和之后(后)提取的特征分布。
局部空间注意力
我们在图9中可视化了ModelNet40上有和没有局部 attention 的 attention 权重。
如图所示,在局部 attention 下,查询点(星号标记)只在局部空间范围内(黄色虚线圈标记)具有较大的 attention 值,而不会分散在整个3D形状上(黄色箭头标记)。
这使得每个点在捕获细节结构的早期阶段更多地集中在邻近的局部特征上。
图9: 局部空间注意力的可视化。我们将没有(上)和有(下)局部空间注意的 attention 权重可视化。查询点用星号标记。 attention 范围用箭头和黄色虚线圈标出。
部件分割结果
通过我们的分层架构学习的细粒度3D模式在很大程度上有利于具有密集预测的3D下游任务,例如部件分割。
在图10中,我们通过将提取的点特征和ShapeNetPart上的分割结果可视化,将我们的Point-M2AE与多阶段和单尺度架构进行了比较。
如图所示,多尺度体系结构为对象预测了更细粒度的部件标签。
图10: 部件分割结果的可视化。我们将分层和非分层架构的输出分别表示为 [NH] 和 [H] 。对于输入点云(中),我们将其提取的特征(左)和部件分割结果(右)可视化。
transformer级
Point-M2AE中的每个阶段都对点云的相应尺度进行编码。在表11中,我们探索了在预训练过程中学习多尺度点云特征的编码器和解码器的最佳级数。可知, 级编码器与 级解码器表现最好。
如果像编码器一样,解码器也有三级,并在 级尺度上重建点云,则会对性能产生不利影响。
表11: transformer级数。我们在Point-M2AE中实验了不同级数的分层编码器和解码器。
transformer块数
在每个阶段,我们应用几个 transformer 块来编码点token的特征。我们在表12的编码器和解码器的每个阶段使用不同的块数进行实验。
我们观察到,编码器每级堆叠五个块,解码器每级只堆叠一个块,可以达到最高的精度。这种非对称结构使得编码器包含更多的点云语义信息,有利于提高Point-M2AE的传输能力。
表12: transformer块。在3级编码器和2级解码器的基础上,我们实验了每级不同的块数。
微调设置
对于下游分类任务的微调,我们通过池化从点token中获得全局特征,并应用基于 mlp的分类头。在表10中,我们研究了不同的池化操作以及类token方法,以集成所有点token的特性。
我们将一个可学习的类标记与第一个尺度的点标记连接起来,并将它们馈送到分层编码器中。编码后,我们直接利用这个类标记作为全局特征进行分类。可知,“max + ave. pooling”在微调方面表现最好,这是我们在所有形状分类实验中的默认值。我们还展示了没有局部空间注意层的分类结果,这说明了增加接收域对局部特征进行编码的重要性。
表10: 微调设置。对于“max + ave. pooling”,我们采用max和average pooling来获得两个全局特征,并将它们相加作为分类头的输入。
预训练损失函数
除了 归一化的倒角距离损失(L2范数CD)外,我们进一步评估了 归一化的倒角距离损失( 范数CD)、“推土机距离” (Earth Mover's Distance) (EMD)及其组合。
如表13所示,原始l2标准CD损耗比所有其他比较损耗表现得更好。我们将重构点集和ground-truth 点集分别表示为 S1 和 S2 。
与需要对 S1 和 S2 之间的每个点进行最优映射的EMD损耗相比, 范数CD损耗仅优化了单独的对向距离,因此对3D结构的变化更具鲁棒性。
与 范数CD损耗相比,欧氏距离的 范数能更好地描述空间分布,更关注远处的点。
表13: 预训练损失。“CD” 和 “EMD” 表示倒角距离和推土机距离(EMD)损失。
目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等。[三维重建方向]NeRF、colmap、OpenMVS等。除了这些,还有求职、硬件选型、视觉产品落地等交流群。大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。