Masked Autoencoders for Point Cloud Self-supervised Learning

  • 摘要
  • 1.引言
  • 3. Point-MAE
    • 3.1 Point Cloud Masking and Embedding
    • 3.2 Autoencoder’s Backbone
    • 3.3 Reconstruction Target
  • 4.实验
    • 4.1 Pre-training Setup
    • 4.2 Downstream Tasks
    • 4.3 Ablation Study

摘要

  • 灵感: NLP和CV中的Masked Autoencoder应用很成功
  • 问题: 点云中存在局部信息缺失和密度不均匀的现象
  • 方法: 使用Masked Autoencoder进行点云自监督学习
  • 细节:
    ①将输入的点云划分成不规则的点云块,以较高的比率 mask 这些块
    ②使用基于autoencoder的标准transformer从这些未被mask的块中学习高维特征,从而重建被mask的点云块。其中该transformer具有对称设计和shifting mask tokens操作
  • 代码: https://github.com/Pang-Yatian/Point-MAE

1.引言

  • NLP ——> BERT
  • CV ——> MAE
  • Point cloud ——> Point-MAE
  • 考虑到点云的数据集相对较小,使用masked autodecoder作为自监督学习方法可以解决transformer需要训练数据量大的问题。
  • 目前方法所存在的几个问题:
    ①缺少一个通用的Transformer架构
    ②用于mask tokens的位置embedding导致缺失局部信息
    ③点云具有密度不均匀的特性

Point-MAE主要包括了一个point cloud masking、embedding module和an autoencoder ,主要处理流程为:

  1. 输入点云被划分为不规则的点云块,这些点云块以较高的比例被mask
  2. Autoencoder从unmask点云中学习高维隐式特征,进而在坐标空间中重建被mask的点云块
  3. Autoencoder的主干网络主要是以Transformer blocks为基础,并采用对称式的encoder-decoder结构
  4. encoder只处理unmasked点云块
  5. 轻量decoder的输入包括encoded tokens 和 mask tokens
  6. shifting mask tokens对于轻量decoder而言很重要,既可以节省运算量,又可以避免位置信息泄露,还能够提高精确度

3. Point-MAE

3.1 Point Cloud Masking and Embedding

Point Patches Generation

通过Farthest Point Sampling(FPS) 和 K-Nearest Neighborhood (KNN) 算法将点云划分为不规则的点云块。给定一组带有ppp个点的点云Xi∈Rp×3X^{i} \in \mathbb{R}^{p \times 3}XiRp×3,利用FPS采样出nnn个点,作为点块的中心点 CTCTCT。基于中心点,对于每个点块PPP,KNN选择kkk个最近邻点:
CT=FPS(Xi),CT∈Rn×3P=KNN(Xi,CT),P∈Rn×k×3\begin{aligned} C T=F P S\left(X^{i}\right), & C T \in \mathbb{R}^{n \times 3} \\ P=K N N\left(X^{i}, C T\right), & P \in \mathbb{R}^{n \times k \times 3} \end{aligned} CT=FPS(Xi),P=KNN(Xi,CT),CTRn×3PRn×k×3
每个点的坐标都通过其中心点进行归一化,便于收敛。

Masking

考虑到点云块可能会重叠,分别对这些块进行mask。将mask比率设置为mmm,masked块被表示为 Pgt∈Rmn×k×3P_{g t} \in \mathbb{R}^{m n \times k \times 3}PgtRmn×k×3,实验表明,m=60%−80%m=60\%-80\%m=60%80%时,我们工作的性能更好。

Embedding

记完整的mask tokens为Tm∈Rmn×CT_{m} \in \mathbb{R}^{m n \times C}TmRmn×C ,其中CCC为embedding的维度。

对于unmasked point patches,利用轻量型的PointNet进行embedding。unmasked point patches Pv∈R(1−m)n×k×3P_{v} \in \mathbb{R}^{(1-m) n \times k \times 3}PvR(1m)n×k×3被embedding成 visible tokens的过程可以用下式表示:

Tv=Point⁡Net(Pv),Tv∈R(1−m)n×C.T_{v}=\operatorname{Point} N e t\left(P_{v}\right), \quad T_{v} \in \mathbb{R}^{(1-m) n \times C} . Tv=PointNet(Pv),TvR(1m)n×C.

考虑到点云块是通过归一化坐标表示的,对于embedding token而言,提供中心点的位置信息是必要的。Position Embedding (PE)的一个简单的方法就是通过一个可学习的MLP将中心点的坐标embedding到另外一个维度上。本文在encoder和decoder都分别使用了PE。

3.2 Autoencoder’s Backbone

Autoencoder的Backbone是完全基于标准的Transformer的,并且是一个对称式的encoder-decoder设计。Autoencoder的最后一层采用了一个简单的预测头来获得重建目标。

Encoder-decoder

本文中的encoder包含着标准的Transformer blocks,仅对visible tokens TvT_vTv进行编码,encoded tokens被记为TeT_eTe。此外,每个Transformer block中都会加入positional embeddings,提供位置信息。

本文中的decoder与encoder相似,但是包含着更少的Transformer blocks,其输入包括encoded tokens TeT_eTe和masks tokens TmT_mTm,在decoder的每个Transformer block中也加入positional embeddings,为每个tokens提供位置信息。decoder的输出为decoded mask tokens HmH_mHm,并将HmH_mHm输入到接下来的预测头中,encoder-decoder的结构可以表示为:
Te=Encoder⁡(Tv),Te∈R(1−m)n×CHm=Decoder⁡(concat⁡(Te,Tm)),Hm∈Rmn×C\begin{gathered} T_{e}=\operatorname{Encoder}\left(T_{v}\right), \quad T_{e} \in \mathbb{R}^{(1-m) n \times C} \\ H_{m}=\operatorname{Decoder}\left(\operatorname{concat}\left(T_{e}, T_{m}\right)\right), \quad H_{m} \in \mathbb{R}^{m n \times C} \end{gathered} Te=Encoder(Tv),TeR(1m)n×CHm=Decoder(concat(Te,Tm)),HmRmn×C

在encoder-decoder结构中,将mask tokens放入轻量decoder中,而不是将encoder的输入放入decoder中,是有两方面的考虑的:

  • 由于我们mask的比率比较大,将mask tokens转移到decoder中能够极大地减少输入tokens的数量
  • 将mask tokens转移到decoder中可以过早地避免泄露位置信息,使encoder能够更好地学习潜在特征。

Prediction Head

简单地使用一层全连接作为预测头,从decoder得到输出 HmH_{m}Hm,prediction head会将其投影为一个向量,这个向量的维度和点云块坐标的全部数量相同。然后再跟一个reshape操作:
Ppre=Reshape (FC(Hm)),Ppre∈Rmn×k×3P_{p r e}=\text { Reshape }\left(F C\left(H_{m}\right)\right), \quad P_{p r e} \in \mathbb{R}^{m n \times k \times 3} Ppre=Reshape(FC(Hm)),PpreRmn×k×3

3.3 Reconstruction Target

本文的重建目标是恢复每个被mask点云块中点的坐标。给定预测到的点云块Ppre P_{\text {pre }}Ppre和ground truth PgtP_{g t}Pgt,通过l2l_2l2的Chamfer Distance 计算重建损失:
L=1∣Ppre∣∑a∈Ppremin⁡b∈Pgt∥a−b∥22+1∣Pgt∣∑b∈Pgtmin⁡a∈Ppre∥a−b∥22L=\frac{1}{\left|P_{p r e}\right|} \sum_{a \in P_{p r e}} \min _{b \in P_{g t}}\|a-b\|_{2}^{2}+\frac{1}{\left|P_{g t}\right|} \sum_{b \in P_{g t}} \min _{a \in P_{p r e}}\|a-b\|_{2}^{2} L=Ppre1aPprebPgtminab22+Pgt1bPgtaPpreminab22

4.实验

  • 在ShapeNet训练集上对模型进行预训练
  • 在不同的下游任务上评估预训练模型,包括object classification, few-shot learning 和 part segmentation
  • ablation study

输入点的数量p=1024p=1024p=1024,划分为n=64n=64n=64个点云块,在KNN算法中,k=32k=32k=32,在autoencoder中,encoder中包含了12个Transformer block,decoder中包含了4个Transformer block,每个Transformer block有384个隐藏维度和6个头。Transformer block中的MLP比率设置为4。

4.1 Pre-training Setup

4.2 Downstream Tasks

Object Classification on Real-World Dataset

Object Classification on clean objects dataset

Few-shot Learning

Part Segmentation

4.3 Ablation Study

Masking Strategy

  • block masking就是以块为单位进行mask
  • random masking就是随机mask点

【点云处理之论文狂读前沿版7】—— Masked Autoencoders for Point Cloud Self-supervised Learning相关推荐

  1. 【点云处理之论文狂读前沿版3】——Point Transformer

    Point Transformer 摘要 1. 引言 2. 相关工作 3. Point Transformer 3.1 Background 3.2 Point Transformer Layer 3 ...

  2. 【点云处理之论文狂读前沿版6】Surface Representation for Point Clouds

    用Surface表示点云 摘要 1.引言 2.相关工作 2.1. Learning on Point Clouds 2.2. Detection on Point Clouds 2.3. Graphi ...

  3. 【点云处理之论文狂读前沿版11】—— Unsupervised Point Cloud Pre-training via Occlusion Completion

    OcCo:Unsupervised Point Cloud Pre-training via Occlusion Completion 摘要 引言 方法 Generating Occlusions T ...

  4. 【点云处理之论文狂读经典版9】—— Pointwise Convolutional Neural Networks

    Pointwise-CNN: Pointwise Convolutional Neural Networks 摘要 相关工作 Pointwise Convolution 实验 摘要 问题: 3D数据的 ...

  5. 【点云论文速读】点云分层聚类算法

    点云PCL免费知识星球,点云论文速读. 标题:PAIRWISE LINKAGE FOR POINT CLOUD SEGMENTATION 作者:Lu, Xiaohu and Yao, Jian and ...

  6. 【论文泛读】 Deep Learning 论文合集

    [论文泛读] Deep Learning 论文合集 文章目录 [论文泛读] Deep Learning 论文合集 Batch Normalization: Accelerating Deep Netw ...

  7. 【论文速读】RandLA-Net大规模点云的高效语义分割

    点云PCL免费知识星球,点云论文速读. 文章:RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds 作者:Qi ...

  8. 【论文速读】基于投影方法的激光雷达点云处理比较

    点云PCL免费知识星球,点云论文速读. 文章:LiDAR point-cloud processing based on projection methods: a comparison 作者:Gui ...

  9. 【点云论文速读】最佳点云分割分析

    点云PCL免费知识星球,点云论文速读. 标题:Learning to Optimally Segment Point Clouds 作者:Peiyun Hu, David Held 星球ID:part ...

最新文章

  1. webgl之3d动画
  2. Java在线问题诊断工具Greys
  3. Windows/Linux中手动添加路由
  4. HH SaaS电商系统的商品营销服务功能模块设计
  5. 宇宙的最原始状态是个什么样子
  6. 网抑云体验室PHP网站源码
  7. chattr lsattr
  8. .config文件与.xml文件的关系
  9. 标准c++读写ini文件类
  10. 业余无线电通信_如何办理业余无线电台执照
  11. 工业相机与工业镜头相关参数详解
  12. 重装系统找不到固态_安装Win10系统没有固态硬盘(双硬盘找不到固态硬盘)怎么解决?...
  13. 超级干货:手把手教你如何实现数据可视化
  14. layui的layer弹出层内置方法
  15. oracle如何获取xml节点,oracle解析xml,带命令空间的节点获取
  16. SQL Server 基础操作(一)安装数据库
  17. rabbitMQ-server控制台安装报错启动失败,黑窗口一闪即过Applying plugin configuration to rabbit .. failed.
  18. Python3基础知识
  19. Debian搭建DBMS(MariaDB)
  20. JavaWeb综合案例(黑马程序员2021年JavaWeb课程总结,所有功能均实现,包含数据库sql文件)

热门文章

  1. 【Oracle】TRUNC:获取去年年初和年末,获取月初和月末;
  2. T-S型模糊算法简述及FPGA的实现
  3. 孙正义:未来30年的人工智能和物联网
  4. 补零不能提高频率分辨率的原因
  5. QT的基本使用(一):计算器界面的简易设计及其简单功能实现
  6. 调用阿里云发送短信验证码的工具类
  7. Matlab使用串口进行数据通信
  8. 原来何恺明提出的MAE还是一种数据增强
  9. 拯救者R9000P网络不可用问题解决
  10. 从三国的人物身上我们能学到些啥?