点云自监督学习(MAE,持续更新)


点云自监督学习(MAE,持续更新)

PointMAE论文链接

PointMAE代码链接

PointMAE讲解链接

Point-BERT论文链接

Point-BERT代码链接

Point-BERT讲解链接

目前点云分割的mae

PointBERT pipeline(如下图)里的三个问题:

  • 需要训练一个基于DGCNN的dVAE用于生成点云的离散词表表示,整个pipeline比较复杂(引入了非Transformer的结构(DGCNN)来辅助Transformer训练)
  • 依赖对比学习和数据增强去学习high-level语义特征(本文用调高mask ratio去解决)
  • PointBERT对点云做tokenize之后,被mask掉的token是以一个learnable token + positional embedding表示的,再与visible tokens一起输入Transformer Encoder,存在位置信息的泄漏(positional embedding里有mask token的位置信息,降低了reconstruction任务的难度)

Point-BERT的pipeline。我们首先将输入点云划分为几个点pathes(子云)。然后使用一个迷你点网[34]来获得点嵌入序列。在预训练之前,通过基于dvae的点云重建(如图右图所示)学习Tokenizer,其中点云可以转换为一系列离散的点tokens;在预训练期间,我们对点嵌入的某些部分进行了掩码,并用掩码tokens替换它们。然后将掩蔽点嵌入到transformer中。在Tokenizer获得的点tokens的监督下,训练模型恢复原始点tokens。我们还添加了一个辅助的对比学习任务,以帮助transformer捕获高级语义知识。

PointMAE pipeline:

  • 采用MAE的pipeline,在Encoder处仅输入visible tokens + visible token的positional embedding,在Decoder处才将visible tokens 和mask tokens 加上full-set的positional embedding 一起输入
  • 采用非常高的mask ratio(60%)
  • 直接对初始的点云xyz进行预测
  • 整体网络仅由Transformer Blocks构成,没有其他结构
  • 采用轻量级的decoder(encoder有12个Transformer blocks,decoder只有4个)

Point-MAE总体方案。在左边,我们展示了掩蔽和嵌入的过程。将输入云划分为多个点块,对点块进行随机掩码后嵌入。右侧为自动编码器预训练。编码器只处理可见的标记。将掩码tokens添加到解码器的输入序列中以重建掩码点补丁。

编码器仅处理visible tokens的好处:

  • 可以让编码器更好地学习这些point patchs的high-level的语义特征,而不需要学习去区分visible tokens和mask tokens
  • 避免了mask tokens的位置信息的泄漏
  • 提高了网络的预训练效率(因为采用了高的mask ratio(60%),相当于编码器仅处理40%的tokens,自然就很快啦)

MAE pretrain效率高的原因:

  • 编码器仅处理visible tokens
  • 解码器虽然要处理全部tokens,但非常轻量级

文章作者: oceanechy
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 oceanechy !
  目录