PCT: Point Cloud Transformer

1. Introduction

transformer是一种 encoder-decoder结构,包含了三个模块:输入词嵌入,位置(顺序)编码和self-attention 。其中self-attention是核心组件,基于全局上下文的输入特征,生成精确的 attention 特征。

首先,self-attention 将输入词嵌入和位置编码的总和作为输入,通过训练有素的线性层为每个单词计算三个向量:query,key 和 value。然后,可以通过匹配(点积)查询和 key 向量来获取任意两个 word 之间的 attention 权重。最后,attention feature 定义为所有 value 向量与 attention 权重的加权和。

显然每个 word 的输入 attention feature 与所有的输入特征都有关,因此能够学习全局上下文。transformer 的所有操作均可并行执行与顺序无关。理论上讲,可以代替卷积神经网络计算中的卷积运算,并且有更好的通用性。

PCT 的主要思想是通过使用 transformer 固有的顺序不变性来避免定义点云数据的顺序和通过 attention 机制来进行特征学习。如图 1 所示,attention 权重的分布与部分语义高度相关,并且不会随着空间距离而严重衰减。

image-20210105114828321

由于点云数据和自然语言数据截然不同,PCT 对其进行了一系列调整。

  • 基于坐标的输入嵌入模块。在 transformer中使用了位置编码模块来表示自然语言中的单词顺序,这样可以区分在不同位置的同一单词并且反映出单词间的位置关系。但是,点云无固定顺序。因此在PCT 框架中,我们将原始的位置编码和输入嵌入合并到基于坐标的输入嵌入模块。可以生成可区分的特征,因为每个点都有代表其空间位置的唯一坐标。
  • 优化的偏移 attention 模块。PCT 对原始的 self-attention 进行升级。它通过使用self-attention模块的输入和 attention feature 之间的偏移来替代 attention feature。首先,绝对坐标可以通过刚性转换变成相对坐标,能够增强鲁棒性。其次,拉普拉斯矩阵在图卷积学习中十分有效。从这个角度看可以将点云看做一个图形,将“float”邻接矩阵作为attention graph。同样,我们将每行的总和缩放为 1。因此度矩阵可以被看做为恒等矩阵。因此,偏移 attention 优化过程可以理解成一个拉普拉斯过程(3.3)。此外,我们对第四节中介绍的偏移 attention 和 self-attention做了大量的对比实验来证明其有效性。
  • 邻近嵌入模块(neighbor embedding)。显然句子中每个单词都包含基本的语义信息。但是这些点的独立输入坐标与语义内容之间的关系很小。attention 机制在捕获全局特征方面很有效,但是它可能会忽略局部几何信息,然而这点对于点云的学习是必不可少的。为了解决这个问题,我们使用邻近嵌入策略来改进点嵌入(point embedding)。它还通过考虑包含语义信息的局部点组而不是单个点之间的 attention 来辅助 attention 模块。

PCT 变得更适合点云特征学习,并在形状分类,零件分割和法线估计任务方面达到了最新水平。

Contributions:

  1. 提出了基于 transformer 的 PCT框架。
  2. 提出了带有隐式拉普拉斯算子和归一化修正的偏移 attention,与 self-attention 相比,更加适合点云学习。
  3. 大量实验表现,具有局部上下文增强效果的 PCT 在形状分类,零件分割和法线估计任务方面达到了 sota。

2. Related work

2.1 Transformer in NLP

Bahdanau等人最早提出带有attention机制 的神经机器翻译方法,attention 权重通过 RNN的隐藏层计算的。LIn 等人提出 self-attention,用来可视化和解释句子嵌入。在这之后出现了用于机器翻译的 transformer,它完全是基于 self-attention的,无任何重复和卷积运算符。之后又出现了 BERT(双向 transformer),这是 NLP 领域中最强大的模型之一。最近,诸如 XLNet,Transformer-XL 和 BioBERT 之类的语言学习网络进一步扩展了 Transformer 框架。

但是,在自然语言处理中输入是有序的,单个的单词有基本的语义,点云中的点是无序的并且单个点无语义信息。

2.2 Transformer for vision

受 ViT 使用的局部补丁结构单词中的基本语义信息启发,我们提出了一个邻近嵌入模块,该模块可以聚合来自点的局部邻域的特征,从而捕获局部信息获取语义信息。

2.3. Point-based deep learning

一些其他方法也使用了 attention 机制和 transformer。PointASNL 用来处理点云处理中的噪声吗,它使用一种 self-attention 机制来更新局部点组的特征。PointGMM 用于具有 MLP 分割和 attentional splits 的形状插值。

PCT 基于 transformer,而不是使用 self-attention 作为辅助模块。我们的 PCT 是一个更加通用的框架,可以用于各种点云任务。

3. Transformer for Point Cloud Representation

在本节中,我们首先展示如何将PCT学到的点云表示形式应用于点云处理的各种任务,包括点云分类,零件分割和法线估计。我们首先介绍了 PCT 的naive 版本——直接使用原始的 transformer。然后介绍了具有特殊attention 机制的 PCT和近邻聚合(neighbor aggregation)用来提供增强的局部信息。

3.1. Point Cloud Processing with PCT

Encoder。PCT 旨在将输入点转化到新的高维特征空间,这个高维特征空间能够表征点之间的语义亲和力,以此作为各种点云处理任务的基础。PCT 的encoder 首先把输入坐标嵌入到新的特征空间中。嵌入的特征随后被馈入 4 个堆叠的 attention 模块来学习每个点的语义性的丰富且具有区别性的表示形式,紧接着是经过线性层生成输入特征。总体而言,PCT decoder 与原始的 transformer 有着几乎一样的设计理念,除了位置嵌入被舍弃外,因为该点的坐标已经包含这个信息。

输入点云( N × d N\times{d} N×d, N个点,每个点有d 维特征描述)。首先通过 Input Embedding 模块学习 d e d_e de维嵌入特征 F e ∈ R N × d e F_e\in{R^{N\times{d_e}}} FeRN×de。然后通过每个 attention layer ,进行级联,然后进行线性变换来形成 d o d_o do维特征 F o ∈ R N × d o F_o\in{R^{N\times{d_o}}} FoRN×do,
F 1 = A T 1 ( F e ) , F_1 = AT^1 (F_e), F1=AT1(Fe),

F i = A T i ( F i − 1 ) , i = 2 , 3 , 4 , F_i = AT^i (F_{i−1} ), i = 2, 3, 4, Fi=ATi(Fi1),i=2,3,4,

F o = c o n c a t ( F 1 , F 2 , F 3 , F 4 ) ⋅ W o , F_o = concat(F_1 , F_2 , F_3 , F_4 ) · W_o , Fo=concat(F1,F2,F3,F4)Wo,

W o W_o Wo代表线性层的权重。

要想获得高效的表示点云的全局特征向量 F g F_g Fg,我们选择将两个合并运算符的输出连接起来:max-pooling(MP)和average-pooling(AP)。

Classfication。为了将点云划分为 N c N_c Nc个目标类别,将全局特征 F g F_g Fg馈送到分类decoder,该 decoder 包括两个级联的前馈神经网络 LBR(Linear,BatchNorm(BN)和 ReLU 层),每个都有 概率为0.5的 dropout。并通过线性层最终确定最终的分类得分 C ∈ R N c C\in{R^{N_c}} CRNc。点云的类别标签确定为得分最高的类别。

Segmentation。为了将点云分为 N个部分,为每个店预测一个部分标签。首先将全局特征和每个点的特征级联。为了学习各种物体的通用模型,想大多数其他点云分割网络一样,将大多数物体点编码成一个 one-hot目标标签向量作为一个 64 维的特征和全局特征级联。分割网络解码器的架构与分类网络的架构几乎相同,不同之处在于仅在第一个LBR上执行dropout操作。然后预测最终每个点的分割分数 S ∈ R N × N s S\in{R^{N\times{N_s}}} SRN×Ns .一个点的零件标签也被确定为得分最高的那个。

Normal estimation。设置 N s N_s Ns=3, 使用与分割相同的体系结构无需对对象类别进行编码,将输出的每个点的得分看作为预测的法线。

3.2 Naive PCT

修改 Transformer用于点云的最简单的方法是将整个点云看做一个句子,每个点看做一个单词。通过实现基于坐标的点嵌入并使用 self-attention,可以实现朴素 PCT。

首先是朴素的点嵌入,忽略了点与点之间的关系。点嵌入的目的是在语义更相似的情况下将点放置在嵌入空间中更近的位置。使用包含两个级联的 LBR 的共享神经网络将点云 P 嵌入到 d e d_e de维空间 F e = R N × d e F_e=R^{N\times{d_e}} Fe=RN×de 中,每个 LBR 都具有 d e d_e de 维输出。根据经验,我们将 d e d_e de设置成一个比较小的值 d e = 128 d_e=128 de=128 ,以提高计算效率。我们仅使用 3D 坐标作为其输入要素描述(这样做已经胜过其他方法),但是也可以用其他点的输入信息,例如点的法线。

对于朴素PCT的实现,使用 原始 Transformer 中的self-attention(SA)。SA ,也称 intra-attention,是一种计算数据序列中不同项之间的语义亲和力的机制。输入特征 F i n ∈ R N × d e F_{in}\in{R^{N\times{d_e}}} FinRN×de,
( Q , K , V ) = F i n ⋅ ( W q , W k , W v ) (Q, K, V) = F _{in} · (W_q , W_k , W_v ) (Q,K,V)=Fin(Wq,Wk,Wv)

Q , K ∈ R N × d a , V ∈ R N × d e Q, K ∈ R ^{N×d_a} , V ∈ R^{N×d_e} Q,KRN×da,VRN×de

W q , W k ∈ R d e × d a , W v ∈ R d e × d e W_q ,W_k ∈ R^{d_e ×d_a} , W v ∈ R^{d_e ×d_e} Wq,WkRde×da,WvRde×de

W q , W k , W v W_q,W_k ,W_v Wq,WkWv 表示共享可学习线性转换, d a d_a da是 query 和 key 向量的维度, d a da da可能不等于 d e d_e de。为了计算效率,我们让 d a = d e / 4 d_a=d_e/4 da=de/4

首先,使用 query 矩阵和 key 矩阵通过矩阵点积计算 attention 权重:
A ~ = ( α ~ ) i , j = Q ⋅ K T \tilde{A}=(\tilde{\alpha})_{i,j}=Q\cdot{K^T} A~=(α~)i,j=QKT
权重归一化(SS),得出 A = ( α ) i , j A=(\alpha)_{i,j} A=(α)i,j :

self-attention输出特征 F s a F_{sa} Fsa为使用相应attention权重的 value 向量的加权和。
F s a = A ⋅ V F_{sa}=A\cdot{V} Fsa=AV
当 query,key 和 value 矩阵由共享的线性变换矩阵和输入特征 F i n F_{in} Fin 确定时,他们都是顺序无关的。softmax 和加权和都是与序列无关的运算。因此整个 self-attention 过程都是序列无关的,十分适合点云。

最后,self-attention 特征 F s a F_{sa} Fsa 和输入特征 F i n F_{in} Fin进一步用于通过 LBR 网络为整个 SA 层提供输出特征 F o u t F_{out} Fout :
F o u t = S A ( F i n ) = L B R ( F s a ) + F i n F_{out}=SA(F_{in})=LBR(F_{sa})+F_{in} Fout=SA(Fin)=LBR(Fsa)+Fin

3.3. Offset-Attention

受图卷积网络的启发,将 Transformer 用于点云时,Offset-Attention(OA)模块替换 SA 模块可以获得更好的网络性能。OA 层通过计算逐元素之间的减法计算 SA 特征和输入特征之间的偏移 (差)。偏移量馈送给 LBR 网络,以代替朴素版本中使用的 SA 特征。
F o u t = O A ( F i n ) = L B R ( F i n − F s a ) + F i n F_{out}=OA(F_{in})=LBR(F_{in}-F_{sa})+F_{in} Fout=OA(Fin)=LBR(FinFsa)+Fin
F i n − F s a F_{in}-F_{sa} FinFsa类似于离散的拉普拉斯算子:

W v \bf{W_v} Wv 可以忽略因为它表示线性层的权重矩阵。 I \bf{I} I是与拉普拉斯矩阵的对角矩阵 D 相当的恒等矩阵, A \bf{A} A是与邻接矩阵相对应的 attention 矩阵。

在 PCT 增强版本,使用归一化:
α ˉ i , j = s o f t m a x ( α ~ i , j ) = e x p ( α ~ i , j ) ∑ k e x p ( α ~ i , k ) α i , j = α ˉ i , j ∑ k α ˉ i , k \bar{\alpha}_{i,j}=softmax(\tilde{\alpha}_{i,j})=\frac{exp(\tilde{\alpha}_{i,j})}{\sum\limits_{k}exp({\tilde{\alpha}_{i,k}})}\\ \alpha_{i,j}=\frac{\bar{\alpha}_{i,j}}{\sum\limits_{k}{\bar{\alpha}_{i,k}}} αˉi,j=softmax(α~i,j)=kexp(α~i,k)exp(α~i,j)αi,j=kαˉi,kαˉi,j
我们对第一维用了 softmax 操作,对第二维用了 l 1 − n o r m l_1-norm l1norm用来归一化 attention map。传统的 transformer将第一维缩放了 1 d a \frac{1}{\sqrt{d_a}} da

1并使用 softmax 对第二维进行归一化。

然而,我们的 offset-attention回增加 attention 权重并减少噪声的影响,这对下游人物有益。图 1 中显示了 offset-attention map 的例子,可以看出来不同 query 的 attention maps 差别很大,但是在语义上通常有意义。在实验中我们将这种改进过得 PCT 称之为 simple PCT(SPCT)。

3.4. Neighbor Embedding for Augmented Local Feature Representation

左:邻域嵌入体系结构;

中:SG 模块,具有 N个输入点,D 个输入通道,k 个邻居, N o u t N_{out} Nout个输出采样点和 D o u t D_{out} Dout个输出通道;

右上:采样示例;

右下:knn分组示例;

LBR 上所带的数字:输出通道的数量;

SG 上的数字:采样点和输出通道的数量。

PCT 的点嵌入能够提取全局特征但是忽略了本地的邻域信息,这在点云学习中必不可少。利用 PointNet++和 DGCNN 的思想设计局部邻域聚合策略,即邻域嵌入,对点嵌入进行优化来增强 PCT 的局部特征提取能力。如图所示,邻域嵌入模块包括两个 LBR 层和两个 SG 层(sampling and grouping)。LBR 层为 3.2 点嵌入的基础。像 CNN 中那样,使用两个级联的 SG 层来逐渐扩大特征聚合过程中感受野。SG 层在点云采样时使用欧几里得距离通过 k-NN 搜索分组的每个点的局部邻域聚合特征。

具体地,假设 SG 层采用具有 N 个点和对应特征 F 的点云 P 作为输入,并输出具有 N s N_s Ns个点和对应的聚合特征 F s F_s Fs的采样点云 P s P_s Ps。首先,采取最远点采样(FPS)算法将 P 下采样为 P s P_s Ps 。对于每个采样点 p ∈ P s p\in{P_s} pPs,令 knn(p,P)为最近的 k 个邻居,接着计算输出特征 F s \bf{F_s} Fs:

F ( p ) \boldsymbol{F}(p) F(p)表示 点p 的输入特征, F s ( p ) \boldsymbol{F_s}({p}) Fs(p)表示采样点 p 的输出特征, M P MP MP 为最大池化操作, R P ( x , k ) RP(\boldsymbol{x},k) RP(x,k)表示将向量 x 复制 k 次形成的矩阵。采样点及相邻点之间合并特征的想法是 EdgeConv提出的。

对于点云分类,分割和法线估计使用不同的架构。点云分类只需预测所有点的全局分类,在两个 SG 中,点云的大小分别减小到 512 和 256。对于点云分割和法线估计,需要确定每个点的零件标签或者法线,上述过程仅用于局部特征提取,而不会减小点云的大小,可以将每个阶段的输出设置为 N。

4. Experiments

在 ModelNet 和 ShapeNet 两大数据集上进行实验,对比朴素 PCT(点嵌入+self-attention),simple PCT(点嵌入+offset-attention) 以及 full PCT(邻域嵌入+offset-attention)。

4.1. Classification on ModelNet40 dataset

ModelNet40 包含了 40 种目标类别的 12311 个 CAD 模型,广泛用于点云形状分类和表面法线估计的测试。

4.2. Normal estimation on ModelNet40 dataset

略。

4.3. Segmentation task on ShapeNet dataset

略。

4.4. Computational requirements analysis

略。

5. Conclusion

实验表明,PCT具有良好的语义特征学习能力,并且在多项任务(尤其是形状分类,零件分割和法线估计)上均具有最先进的性能。
鉴于大量的训练数据,Transformer已经显示出强大的功能。 目前,与图像相比,可用的点云数据集非常有限。 将来,我们将在更大的数据集上对其进行训练,并研究其相对于其他流行框架的优缺点。 此外,Transformer的编解码结构支持更复杂的任务,例如点云的生成和重建。 我们将把PCT扩展到更多应用中。

Point Cloud Transformer(PCT)阅读翻译相关推荐

  1. Point Cloud Transformer(PCT)代码实现

    Point Cloud Transformer(PCT)代码实现 目前最火热的Transformer在自然语言和图像识别中扮演了极其重要的角色,在点云数据集中也不例外,清华大学近期提出在点云中运用Tr ...

  2. 论文阅读 PCT:Point Cloud Transformer

    论文阅读 PCT:Point Cloud Transformer PCT 介绍 Input Embedding native 版本 enhanced 版本 Attention PCT 介绍 PCT是基 ...

  3. CVM2021| PCT: Point cloud transformer(分类+分割任务SOTA)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam 来源丨 泡泡机器人SLAM 标题:PCT: Point cloud tra ...

  4. 【3D目标分类】PCT:Point Cloud Transformer

    文章目录 前言 摘要 1.介绍 2.相关工作 3.Transformer for Point Cloud Representation 3.1. Point Cloud Processing with ...

  5. CopyTranslator(复译)-外文辅助阅读翻译解决方案

    CopyTranslator(复译)-外文辅助阅读翻译解决方案 参考文章: (1)CopyTranslator(复译)-外文辅助阅读翻译解决方案 (2)https://www.cnblogs.com/ ...

  6. Feature Selective Anchor-Free Module for Single-Shot Object Detection论文阅读翻译 - 2019CVPR

    Feature Selective Anchor-Free Module for Single-Shot Object Detection论文阅读翻译 文章目录 Feature Selective A ...

  7. 考研英语 各种阅读/翻译/新题型/完形填空技巧

    本文内容为考研英语 各种阅读/翻译/新题型/完形填空技巧,源文件已经上传到我的资源中,有需要的可以去看看, 我主页中的思维导图中内容大多从我的笔记中整理而来,相应技巧可在笔记中查找原题, 有兴趣的可以 ...

  8. 3D Human Body Reshaping with Anthropometric Modeling 阅读翻译

    3D Human Body Reshaping with Anthropometric Modeling 阅读翻译 最近着手做3D人体编辑相关内容,先从文章开始学习 一下文章github地址:http ...

  9. LightGBM原论文阅读翻译

    我在学习lightGBM的时候苦于找不到质量高的学习资料,后来突然想起最好的资料难道不就是作者的原论文吗?所以本文主要是对LightGBM原论文的阅读翻译,一方面督促自己把论文精度一遍,一方面分享给有 ...

最新文章

  1. jenssen不等式的证明
  2. 如何在CButton中显示位图!!
  3. FTP压缩文件上传到HDFS大小不一致的问题说明(FTP传输模式)
  4. Hdoj Minimize The Difference
  5. 大数据领域可以应聘的岗位
  6. 基于netty访问WebSocket(java的websocket客户端)(访问远程ws协议)
  7. 【转】二维异形件排版算法介绍(二)
  8. 面向对象的 XSLT编程
  9. python练习册 每天一个小程序 第0010题
  10. 阿里根据截图查到泄露者,这样的技术是如何做到的?
  11. AttributeError: module 'ahocorasick' has no attribute 'Automaton'解决
  12. 【工作记录】SpringMVC下js提交大数据量到controller失败解决
  13. WinXP虚拟机安装softICE
  14. Nginx、HLS、M3U8、TS 搭建手记
  15. 浅尝 | 从 0 到 1 Vue 组件库封装
  16. 可信认证之九阴真经一
  17. 电脑重装系统UEFI启动如何设置
  18. Spring Cloud架构教程 (三)服务网关(基础)
  19. 【选型指南】数字源表/源测量单元/SMU选型的7个重要指标
  20. 盗墓小说和西高穴 真真假假曹操墓

热门文章

  1. Exynos4412的Linux时钟驱动开发(一)——Exynos4412的时钟管理单元CMU
  2. 你的快乐是第几等的?
  3. 银行卡密码键盘 SM4 ECB模式+ANSI X9.8 格式标准(带主账号信息)PIN 加解密示例
  4. 处理nook上乱码的Epub中文电子书
  5. 个人如何免费申请一个微信小程序账号进行开发尝鲜
  6. 今日头条推荐系统算法岗日常实习面试经验
  7. OCAD应用:多重转换式断续变焦系统设计
  8. android显示动画一直播放器,播放器适配经验总结——Android
  9. 生活嘛,就是折腾,就是在这五味杂陈酸甜苦辣里折腾完一生。
  10. 固高控制卡学习5 --数字 IO