IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 论文解读PCT: Point Cloud Transformer(用于点云处理的Transformer) -> 正文阅读

[人工智能]论文解读PCT: Point Cloud Transformer(用于点云处理的Transformer)

? ? ? ? 最近几年transformer越来越火,在NLP、CV等领域都取得了很大的成功。这篇文章作者利用了transformer能够处理无序数据的特点,将transformer应用到点云的处理上。它的想法是基于最原始的transformer那篇文章(Attention Is All Your Need),关于那篇文章的解读可以参考:庖丁解牛Transformer原理

? ? ? ? 论文的整体架构如下图1所示,整体上跟pointnet那篇差不多(左边是一个encoder结构,右边是一个decoder),不同的地方主要在于encoder。对于encoder点云数据先经过一个Input Embedding模块,然后通过一系列的Attention模块并且cat每个模块的输出,最后再经过一个全连接层得到点云的特征。对于decoder来说,根据task不同其结构不同,其结构跟pointnet那篇基本上一样,所以这里不做介绍。

图1 PCT整体架构

? ? ? ? 下面再来看看作者是怎么设计encoder的,根据网络结构由简入繁,作者把encoder分为三个版本:NPCT(Naive PCT)、SPCT(Simple PCT)、PCT。

?一、NPCT

? ? ? ? 也就是直接把transformer的self-attention结构直接套进来,即直接替换图1里面的Attention模块,然后Input Embedding模块就是简单的两层LBR(point embedding)。self-attention模块结构如下图2所示(开关处为虚线连接)。

?图2 Attention结构

二、SPCT

? ? ? ? 更进一步地,将NPCT结构里面的SA(Self-Attention)改变为OA(Offset-Attention),OA的结构如图2所示(开关处为实线连接),OA只是在SA的基础上做了两个调整。第一个调整是attention之后的features与输入features做了一个element-wise的差值(Offset)(图2中的第二个开关),作者说这是启发于图卷积里面受益于拉普拉斯矩阵L=D-E替代了邻接矩阵,这里D表示度矩阵,我们知道在GNN里面这种调整之后网络不只是聚合了节点附近的邻接信息,并且还可以把节点自身的信息也考虑进去,作者这样调整之后发现网络确实表现的更好;为什么做了一个element-wise的差值之后就可以有拉普拉斯矩阵的效果呢?作者在这里给出了一个推导过程

F_in表示输入的features,F_sa表示attention之后的features,A表示attention map,V表示value矩阵,W_v表示一个线性层,I表示单位矩阵。

? ? ? ? 第二个改变就是在normalization这一步(图2中的第一个开关),在原始的transformer为了计算attention map的时候为了防止softmax输入数值过大导致梯度消失会先经过scale,而作者把这个scale去掉了,直接softmax得到attention map,然后在第二个维度上做一个L1归一化。作者说这样做之后能让attention weights更加集中(估计意思是让网络将更多的注意力集中到点云的局部区域),并且能减少噪声的干扰。但是我有个疑问,这样直接softmax不会导致梯度消失吗,我的猜想是紧接后面的L1归一化能抑制后续softmax前过大的数值。

三、PCT

? ? ? ? 进一步地,在SPCT基础上作者改进了Input Embedding模块。前面的point embedding只擅长学习点云的全局特征,容易忽略点云局部信息,因此作者想设计出像PointNet++和DGCNN那样能有局部信息聚合策略的网络,提出了neighbor embedding,网络结构如下图3所示。

图3 neigbor embedding结构

? ? ? ? 先看图3左边部分,这是Input Embedding的整体架构,前面就是两个全连接层,后面接了两个SG(sampling and grouping)模块,SG模块既可以对特征进行下采样,又可以聚合领域信息。图3右边部分是SG模块的具体结构,首先对输入特征进行下采样,并且通过最近邻算法找出每个采样点的k领域,然后对于每个领域中的点都要跟采样点做一个差值,然后将这个差值跟采样点cat起来通过两层全连接层,最后通过max池化得到每个采样区域的局部特征。至于将这个差值跟采样点cat起来的原因作者说是借鉴EdgeConv的思想,虽然EdgeConv这篇文章我还没有读,但是我估计这个差值代表了局部区域的一些几何信息(类似于拉普拉斯坐标),而采样点代表了这个局部区域的中心点(也就是这个局部区域的空间位置),这样将这两种信息cat之后就能让网络在后续更容易地进一步聚合局部信息。

四、实验

? ? ? ? 作者在分类、点云法向量估计、点云分割的任务上进行了实验,在这三个任务上PCT均获得了state-of-the-art的效果,简化版本的NPCT和SPCT也能获得不错的效果。而网络大小和计算性能上的表现的话也是比之前的一些baseline要好些的。另外作者说如果只是想单纯的提升网络的效果的话可以增加neighbor embedding的层数。

?

?

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 14:40:58  更:2021-10-02 14:41:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/22 6:30:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码