PCT: Point Cloud Transformer (阅读笔记)

PCT是一种适用于点云学习的Transformer框架,通过坐标输入嵌入、优化的偏移注意力模块和领域嵌入模块,捕捉点云的排列不变性和局部信息。该框架在点云分类、分割和正态估计任务上表现出优越性能。

PCT

Transformer 在点云中的应用

Transformer在处理一系列点时,它天生是排列不变的,这使得它非常适合点云学习。为了更好的捕获点云数据的上下文信息作者加强了input 的 embedding 操作,使之支持最远点采样和最邻近搜索。

介绍

因为点云的无序性和无结构性。
之前的PointNet使用MLP、maxpooling和刚性变换操作来确保其排列和旋转下的不变性。
或者是使用CNN进行特征提取:

  1. 对点云进行体素化
  2. 对输入点序列进行重新排序

与自然语言的处理的一些不同

基于坐标的输入嵌入模块(Coordinate-based input embedding module)

在Transformer中使用位置编码模块来表示自然语言中的语序,从而区分不同位置上的同一个词以及表示词与词的位置关系。
但是点云数据之间没有固定的顺序,作者将原始的位置编码和输入嵌入到一个基于坐标的输入嵌入模块中,每个点都有各自的坐标,从而生成可区分的特征。

优化的偏移注意力模块(Optimized offset-attention module)

用自我注意(self-attention)模块的输入与 注意特征(attention feature)之间的 偏移量 来代替 注意特征(attention feature)
优点:

  1. 同一物体的绝对坐标可以通过刚性变换完全不同。因此,相对坐标通常更可靠。
  2. Laplacian矩阵在图卷积学习中被证明是非常有效的。可以把点云看作一个图,用float值邻接矩阵作为 注意图(attention map) 。同时将注意力图的每行向量长度缩放到1。及度矩阵额可以看成是单位矩阵。偏移注意力优化过程可以近似理解为一个拉普拉斯过程。

Laplacian矩阵——度矩阵degree matrix)与邻接矩阵(adjacency matrix)之间的偏移量

领域嵌入模块(Neighbor embedding module)

NLP中句子的每个单词都包含着基本的语义信息。
但是在点云中点的独立输入坐标与语义内容之间的相关性很弱。
注意力机制可以有效的捕获全局特征,但是容易忽略几何信息,而局部集合信息是点云目标的关键。

针对这个问题,作者使用 领域嵌入模 块来替代 点嵌入模块 。并使用包含语义信息的 局部点组 之间的注意,而不是 单个点 之间的注意来辅助注意力模块。

contributions

  1. 提出了一种新的基于变压器的点云学习框架PCT,该框架具有固有的排列不变性,非常适合于具有不规则域的非结构化、无序点云数据。
  2. 相对于变压器原有的自注意模块,提出了采用隐式拉普拉斯算子和归一化细化的偏移注意。
  3. 大量的实验表明,带有显式局部上下文增强的PCT在形状分类、零件分割和常规估计任务中取得了最先进的性能。

点云数据在Transformer中的表示

分类 ; 结构分割 ; 正态估计(normal estimation)

在这里插入图片描述

Enconder

PCT将点云的输入编码到一个更高维的特征空间。(该空间可以表征点之间的语义亲和力(semantic affinities),作为各种点云处理任务的基础)
将特种空间的特征输入到4个堆叠的注意力模块中学习对于每个点都具有丰富的语义信息和可区分的表示,接着通过一个线性层生成输出特征。
在这里插入图片描述
在这里插入图片描述
其中 A T i AT^i ATi 表示第i层注意力层,输入和输出保持相同的维度, F e F_e Fe为一开始编码的更高维特征空间的特征矩阵。 W o W_o Wo是线性层的权重。
使用max-pooling (MP)和average-pooling (AP) 的拼接来提取全局特征——MA-Pool。

分类

在这里插入图片描述
由两个级联前馈神经网络LBR组成(线性层、BatchNorm (BN)和ReLU层),每个层的dropout概率为0.5,最终由一个线性层来预测 N c N_c Nc个分类

分割

在这里插入图片描述
首先拼接全局特征 F g F_g Fg和点特征 F o F_o Fo
为了获得一个通用的模型用于各种对象,将一个热点对象类别向量编码为64维特征并拼接全局特征。与大多数点云分割网络相同,只是在第一个前馈神经网络LBR上进行dropout。点分类输出 N s N_s Ns类。

正态估计

使用与分割相同的网络只是 N s = 3 N_s=3 Ns=3

Naive PCT

将Transformer应用于点云数据的方法是直接将整个点云数据视为一个句子,每个点为一个单词。
将点 P P

### 关于 Point Cloud Transformer (PCT) 的复现方法或代码实现 #### PCT 实现概述 Point Cloud Transformer (PCT) 提供了一个强大的框架来处理点云数据,该模型不依赖传统的self-attention机制而是设计了一套更适用于点云任务的架构[^1]。 #### 获取官方源码 为了方便研究人员和开发者快速上手并验证实验效果,通常论文作者会在公开平台上发布项目的GitHub仓库链接。对于PCT而言,可以在对应的学术文章或者会议记录中找到指向项目主页的超链接,那里会有详细的安装指南、环境配置说明以及训练测试脚本等资源[^2]。 #### 安装依赖库 大多数情况下,这类深度学习模型会基于PyTorch或其他主流框架构建。因此,在开始之前需确保本地环境中已正确设置了Python虚拟环境,并通过`pip install -r requirements.txt`命令安装必要的第三方包集合文件中的所有依赖项。 ```bash git clone https://github.com/author/PCT.git cd PCT conda create --name pct_env python=3.8 conda activate pct_env pip install -r requirements.txt ``` #### 数据集准备 针对不同的应用场景(比如分类、分割),可能需要下载特定的数据集如ModelNet40, ShapeNetParts等。这些公共数据集往往可以直接从互联网获取,并按照文档指示解压至指定路径下以便后续加载器访问。 #### 运行示例程序 完成上述准备工作后,即可尝试执行一些预置好的例子来进行初步体验: ```python import torch from models.pct import PCT as Model device = 'cuda' if torch.cuda.is_available() else 'cpu' model = Model().to(device) # 加载权重参数... checkpoint = torch.load('path/to/pretrained_weights.pth') model.load_state_dict(checkpoint['state_dict']) # 接下来可以定义输入张量并通过前向传播获得预测结果 input_tensor = ... # 构建合适的batch_size * num_points维度的tensor output = model(input_tensor.to(device)) print(output.shape) ``` #### 调整超参与自定义设置 除了遵循默认设定外,用户还可以根据实际需求调整各类超参数,例如优化算法的选择、初始学习率大小、正则化强度等等;另外也可以探索更多高级特性,像混合精度训练加速收敛过程或是分布式多GPU协同工作提升效率。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值