《论文阅读》Point Transformer

留个笔记自用

Point Transformer

做什么

点云的概念:点云是在同一空间参考系下表达目标空间分布和目标表面特性的海量点集合,在获取物体表面每个采样点的空间坐标后,得到的是点的集合,称之为“点云”(Point Cloud)。
点包含了丰富的信息,包括三维坐标X,Y,Z、颜色、分类值、强度值、时间等等,不一一列举。在这里插入图片描述
一般的3D点云都是使用深度传感器扫描得到的,可以简单理解为相比2维点,点云是3D的采样
《论文阅读》Point Transformer_第1张图片

做了什么

《论文阅读》Point Transformer_第2张图片
创造了一个点云处理方式也就是题目的Point transformer,将nlp领域中的transformer引入了点云处理领域
首先先回顾一下nlp中transformer的设计方式,借鉴图解Transformer(完整版)
《论文阅读》Point Transformer_第3张图片
整体结构是encoder-decoder的拓展,encoder由6个layer组成,这里的layer就是《论文阅读》Point Transformer_第4张图片
也就是这里的x=6,有N1、N2
decoder也同样由6个layer组成
《论文阅读》Point Transformer_第5张图片
每个layer的结构都是相同的,简单来说两边可以简化为
《论文阅读》Point Transformer_第6张图片
然后就是理解这各自部分的功能,自注意力self-attention是很常见的,如果是在nlp领域中就是一句话中某个词和其他词的关系的表示,如果是在点云领域前面几篇论文中也有,就是一组点中每个点与其他点的距离、位置等关系表示
《论文阅读》Point Transformer_第7张图片
在这里插入图片描述
在这里插入图片描述
这里的Q是查询向量,K是键向量,V是值向量,这里三个向量都是原输入序列中每个词的词嵌入和各自的QKV权重矩阵相乘得到,目的就是为了模拟出三个向量。
首先先是使用Q和K进行点积,这里的意思就是将查询向量(这里可以理解成为位置)和键向量(这里可以理解成为词对位置的重视程度)结合,得到的结果就是该单词有多重视句子中的位置,比如对于第一个单词来说,它对第一个位置的重视程度就是q1×kq,对第二个位置的就是q1×k2,然后使用softmax来表示每个单词对编码当前单词这个位置的贡献
《论文阅读》Point Transformer_第8张图片
得到后点积上V也就是值向量,这里是在位置的基础上再希望它加上语义关系,比如对于第一个位置和第二个位置如果语义不接近,自然希望它的权重要变小
总的来说就是对于每个单词来说,它所嵌入的向量结果需要包含了句子的位置信息和词之间的语义信息关系
这里还加了一个multi-head的方法,其实就是设计了多个权重矩阵,就像设计了多个不同大小的卷积核来获得不同的attention,最后自然也是concat起来
这就是核心的自注意力层
《论文阅读》Point Transformer_第9张图片
然后是在这里插入图片描述
这里的设计方法跟上面类似,工作方式基本就像多头自注意力层一样,只不过它是通过在它下面的层来创造查询矩阵,并且从编码器的输出中取得键/值矩阵。

怎么做

先是简单的attention层设计
在这里插入图片描述

这里的y是输出的feature,ϕ、ψ、α都是逐点特征变换的一种方式(比如mlp),δ是一个位置编码函数,ρ是正则化函数,简单来说,xi是点i的feature向量,先通过特征变换将点i和点j的特征得到,这里的β是关系函数,通过这个函数得到两个点特征之间的关系,也就是建立每个点特征之间的关系,然后加上位置编码函数δ,γ是映射函数,也就是映射到某一维度而用
这里可以和前面进行类比在这里插入图片描述
在这基础上就可以设计这里的重点,Point transformer层了
在这里插入图片描述
这里大体上与上面类似,X(i)就是点i的邻域(常用KNN来得到),然后至于计算两点特征的关系这里采用的是向量的直接减法,映射函数 γ由一个MLP组成,整体结构
《论文阅读》Point Transformer_第10张图片
输入是(x,p)也就是每个点的位置信息,首先通过两个线性函数编码不同主次点的特征向量(也就是得到前面的key向量),再用一个MLP得到位置函数,也就是前面的查询向量),两者结合得到relation关系,然后再用一个线性函数得到它的值向量,将relation和值向量结合,也就是前面说的对于每个点既关注它的和其他点之间的语义关系,也关注它和其他点之间的位置关系,最后输出y作为点云处理结果
接下来就是定义几个函数的具体计算方法
首先是位置函数也就是计算查询向量的那个函数
在这里插入图片描述
p就是各自点的三维坐标值,θ是一个MLP层,而前面的线性函数也就是ax+b的形式(就是linear层)
定义完了transformer层,就可以定义一个block来作为集合《论文阅读》Point Transformer_第11张图片
输入是点集合x(拥有各自的三维点坐标等点特征),输出就是将每个点x的更新后的特征输出
同样还设计了另外两种block
《论文阅读》Point Transformer_第12张图片
分别有各自不同的功能,down的功能是根据需要减少点集的基数,简单来说就是减少点,而up就是根据两个不同数量的点来得到结合后的结果,常常使用在U型网络设计中(也就是当前层结果是结合了当前层的输入和之前某一层不同维度的输出而得到)
定义完了这些,这里举例了一种测试应用
《论文阅读》Point Transformer_第13张图片
这里介绍的是语义分割的结构,整体结构没有使用任何卷积,仅仅使用了前面说的几种Block和MLP的搭建

总结

1.利用NLP领域中大火的transformer构建了一个在点云领域中使用的transformer,即插即用
2.文中提到了这里的位置函数,也就是自注意力中的查询向量起到了一个非常重要的作用,在这上面可以多作文章

你可能感兴趣的:(深度学习,计算机视觉,人工智能)