论文速读Backbone系列一:点云Transformer结合、PointNet++改进、点云卷积核设计

news2024/11/18 23:22:20

如有错误,恳请指出。


对一些经典论文进行快速思路整理,以下内容主要关注的是3d点云的backbone设计,包括transformer的应用,卷积核的设计,PointNet++网络的改进。

文章目录

  • 一、Transformer改进
    • 1. 《PCT: Point Cloud Transformer》(2020)
    • 2. 《Point Transformer》(2020)
  • 二、PointNet++改进
    • 3. 《Modeling Point Clouds with Self-Attention and Gumbel Subset Sampling》(2019CVPR)
    • 4. 《Momenet: Flavor the Moments in Learning to Classify Shapes》
  • 三、卷积核设计
    • 5. 《PointCNN: Convolution On X -Transformed Points》(2018NIPS)
    • 6. 《Relation-Shape Convolutional Neural Network for Point Cloud Analysis》(2019CVPR)
    • 7. 《Kpconv: Flexible and deformable convolution for point clouds》(2019ICCV)
    • 8.《Point-Voxel CNN for Efficient 3D Deep Learning》(2019NIPS)

一、Transformer改进

1. 《PCT: Point Cloud Transformer》(2020)

在这里插入图片描述

1)提出Offset Atention,在原本的self-attention中的LBR(Fa)改为LBR(Fin-Fa),同时魔改了norm方法。其中这里的Fin是原始点特征,Fa是进行self-attention变换之后的特征
2)提出Neighbor Embedding,利用attention可以捕获全局特征但是缺少局部特征,所以用PointNet++来提取一些局部特征,作为transformer的输入


2. 《Point Transformer》(2020)

在这里插入图片描述

1)改进了attention的表达式,不过本质上还是有MLP构成,这里也注意到点之间的相对位置信息。整体跟PointNet++与RS-CNN类似


二、PointNet++改进

3. 《Modeling Point Clouds with Self-Attention and Gumbel Subset Sampling》(2019CVPR)

在这里插入图片描述

1)提出ARPE模块,将每个点表示为绝对位置与相对位置的(每个点相对于临近k个点的相对位置)集合
2)提出GSA(Group Shuffle Attention),这是新的特征转换方法。利用自注意力机制对点特征进行变换,与MLP作用一致
3)提出GSS(Gumbel Subset Sampling),这是新的点采样方法。将Pointnet++中的FPS换成了使用Gumbel Softmax进行计算每个点的重要程度,然后根据这个概率选取down sampling的点。


4. 《Momenet: Flavor the Moments in Learning to Classify Shapes》

在这里插入图片描述

1)将网络的输入由点的坐标(x,y,z)增加到 ( x , y , z , x 2 , y 2 , z 2 , x y , x z , y z ) (x,y,z,x^2,y^2,z^2,xy, xz, yz) (x,y,z,x2,y2,z2,xy,xz,yz) 9维,理解原始特征的构造。同时对每个点构造其k个邻域的相对位置(3维),加上所构造的特特征,每个点都包含了其k个邻域的12维特征,后续进行编码聚合。其余结构与PointNet类似。


三、卷积核设计

5. 《PointCNN: Convolution On X -Transformed Points》(2018NIPS)

对于Convolution来说,输入点的顺序发生变化,输出也会变化。点云里面的点的输入顺序,是阻碍Convolution操作的主要问题。为了处理以上问题,论文定义了一个X变换矩阵,该矩阵能对某个特定顺序的输入进行处理,得到一个与顺序无关的feature。
在这里插入图片描述

这个问题,其实在PointNet中也有体现到,也就是那个T-Net,直接预测一个变换矩阵实现旋转不变性。这里是利用k邻域来构造相对位置编码信息来获取X
在这里插入图片描述


6. 《Relation-Shape Convolutional Neural Network for Point Cloud Analysis》(2019CVPR)

在这里插入图片描述

1)利用MLP编码点与邻域的相对位置信息获取到权重向量wij,权重向量的编码长度与点xj的特征长度一致,可以实现点乘(Conv)操作。对于conv之后的特征再进行MLP编码处理。


7. 《Kpconv: Flexible and deformable convolution for point clouds》(2019ICCV)

在这里插入图片描述

1)Rigid KP-Conv:对每一个点特征进行k个卷积核卷积处理,由Din维度编码为Dout维度输出,再将这k个卷积核的编码处理结果进行element-wise add操作,得到最后的编码特征。(和2D的卷积已经非常类似了)
2)Deformable KP-Conv:借鉴图像中可变性卷积的思路,可以引入offset的概念,将kernel中的点的位置做偏移,相当于改变了权重域的采样的位置进行卷积处理。


8.《Point-Voxel CNN for Efficient 3D Deep Learning》(2019NIPS)

在这里插入图片描述

众所周知,Voxel-based的方法在量化过程中存在信息丢失,如果分辨率设置得过小又得提高3d卷积的计算量(Large Memory Footprint);Point-based的方法需要聚集某一个点领域的信息导致不规则的内存消耗,不这样做又难以提取点云的局部信息(Irregular Memory Access and Dynamic Kernel Overhead)。两种方法均不完美,各有优缺点。所以这里PVCNN的动机就是提取这两种方法的优势:利用point-based的小内存占用以及voxel-based的局部特征提取。

PVConv包含两个部分:利用voxel粗粒度信息,利用Point提取细粒度信息,最后将两则融合

  • 1. Voxel-Based Feature Aggregation
    首先将点云数据进行归一化地特征表示(包括平移到以重心为原点的局部坐标系中,进行最大值归一化,再缩放到0-1区间),利用归一化后的点进行voxel化(voxel内的点特征进行平均),随后利用一系列的3d卷积提取局部信息(包含BN层+激活函数),最后将每个voxel特征插值获取原来的点特征中(最直接的方法是利用最邻近插值,但是会导致一个voxel中的点相同,所以这里使用三线性插值trilinear interpolation),因为需要与point-baswd的方法提取出来的特征进融合。

  • 2. Point-Based Feature Transformation
    利用MLP对点特征进行编码,获取细粒度的信息表示,随后与来至基于体素的特征聚集分支的粗粒度信息进行简单的相加融合(element-wise add)

讨论:相比pointnet++中需要进行group的操作提取K个neighbor信息,这就需要进行O(kn)存储器访问,PVConv只需要O(n)。通过使用PVConv来替换PointNet中的MLP获得PVCNN,同时使用PVConv扩展PointNet++构建PVCNN++,两者都获得不错的性能(说明3d卷积提取局部特征可能要比pointnet++的方式要好,卷积归纳偏置的有效性)。不过这里作者并没有贴上PVCNN与PVCNN++的结构图,由于PointNet涉及多层MLP结构,具体替换细节还需要查看代码。

ps:这里贴上另外一个大佬的见解:Point-Voxel CNN for Efficient 3D Deep Learning


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/70027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Wireshark高级特征

1,端点和网络会话 想要让网络通信正常进行,你必须至少拥有两台设备进行数据流的交互。端点(endpoint)就是指网络上能够发送或接收数据的一台设备。两个端点之间的通信被称之为会话(conversation)。Wiresha…

Python中如何选择Web开发框架?

Python开发中Web框架可谓是百花齐放,各式各样的web框架层出不穷,那么对于需要进行Python开发的我们来说,如何选择web框架也就变成了一门学问了。本篇文章主要是介绍目前一些比较有特点受欢迎的Web框架,我们可以根据各个Web框架的特性进行选择应用。 Django Django是市面上…

利用Astar算法实现飞行轨迹的三维路径规划(基于Matlab代码实现)

目录 1 概述 1.1研究背景 2 运行结果 3 Matlab代码实现 4 参考文献 1 概述 随着自动化技术的发展,现代航空技术水平有了前所未有的提高,促进了无人机在军事、民用领域的广泛应用。航迹规划技术作为无人机任务规划的关键技术,一直都是无人机领域的一大研究热点。无人机航迹规划是…

Synopsys Sentaurus TCAD系列教程之-- Svisual《一》看图工具

Svisual Svisual作为独立的模块,可以实现Inspect对于节点.plt曲线的查看,也可以实现TecplotSV的.tdr看图功能,还可以进行自动化操作。 当作看图工具使用 - 当作一维曲线看图工具(.plt,Inspect) 1.1 打开:Sdevice模块…

[附源码]Python计算机毕业设计SSM基于自组网的空地一体化信息系统(程序+LW)

[附源码]Python计算机毕业设计SSM基于自组网的空地一体化信息系统(程序LW) 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff0…

F12抓包简单案例

F12抓包原理:在电脑访问互联网之前,进行包录制 1.谷歌开发者工具(F12) 元素(Elements):页面元素查看分析,web自动化 控制台(Console):查看日志 来源&#xf…

c语言---指针进阶(2)--玩转指针

今天内容不多,但都是精华。 1.数组参数和指针参数 2.函数指针 2.1笔试题 3.函数指针数组 1.数组参数和指针参数 例1:一维数组传参 void test(int arr[]) {} void test(int arr[10]) {} void test(int *arr) {}void test2(int *arr2[20]) {} void …

kotlin之声明变量的方式

让我们来看一下java声明变量的方式 Java声明变量方式 类型 变量名 等于 初始化值 String str "999999999"; kotlin声明变量方式 <关键字> <变量名称> : <类型> <初始化值> var sr : String "s…

[附源码]Python计算机毕业设计SSM计算机软考系统的设计与实现(程序+LW)

[附源码]Python计算机毕业设计SSM计算机软考系统的设计与实现&#xff08;程序LW) 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。…

nginx安装及使用(详细版)

一、负载均衡介绍 负载均衡分为硬件负载均衡和软件负载均衡。 硬件负载均衡解决方案是最直接服务器和外部网络间安装负载均衡设备&#xff0c;这种设备我们通常称之为负载均衡器产品有F5、NetScaler等。 软件负载均衡解决方案是指一台或多台服务器响应的操作系统上安装一个或多…

【旋转目标检测】旋转标注工具roLabelImg使用教程

旋转目标检测系列文章:第一篇,学会使用roLabelImg标注工具 本次实验在Windows 10系统下进行, python版本3.6.10(2年前安装的python版本,有点老了) 下载标注工具项目代码: https://github.com/cgvict/roLabelImg 下载代码压缩包到桌面: 解压: 打开Anaconda Prompt终…

动态拉取接口数据

通过工具类动态拉取接口数据 写在前言&#xff1a; 使用工具类拉取接口中的数据&#xff0c;存放在自己的数据库&#xff0c;进行展示。 自己去看工具类中的注释&#xff0c;按照自己的需求去修改。 一、工具类 1、整理需求 想通过工具类把接口数据存放在数据库&#xff…

Feign远程调用

Feign是一个声明式的http客户端&#xff0c;官方地址&#xff1a;https://github.com/OpenFeign/feign Fegin的使用步骤如下&#xff1a; 1&#xff09;引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-clou…

Win11开始菜单里面的推荐项目怎么全部关闭教学

Win11开始菜单里面的推荐项目怎么全部关闭教学分享。在Win11系统的开始菜单中&#xff0c;有一些推荐的功能程序。这些程序用户平时并没有使用到&#xff0c;所以想要去将它们进行关闭。那么这些程序如何彻底的关闭显示呢&#xff1f;一起来看看关闭的方法吧。 操作方法&#x…

[附源码]计算机毕业设计咖啡销售平台Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[设计] Doris血缘解析流程

一、背景 1.1 元数据概述 元数据是凌久中台重要功能模块&#xff0c;是数据治理的重要一环&#xff0c;元数据治理是一切数据治理的基础&#xff0c;主要分为元数据管理和表血缘管理&#xff1b; 元数据管理主要用来做数据地图、数据资产等&#xff1b; 血缘治理主要用来追查…

爬虫-(5)

内容概览 scrapy架构介绍scrapy解析数据settings相关配置持久化方案爬取全站文章爬虫中间件与下载中间件 scrapy架构介绍 # 引擎(ENGINE) 引擎负责控制系统所有组件之间的数据流&#xff0c;并在某些动作发生时触发事件。有关详细信息&#xff0c;请参见上面的数据流部分。# …

SLURM批处理调度系统介绍

SLURM (Simple Linux Utility for Resouce Management) 非常成熟的开源社区集群批处理调度系统。 介绍 2008年左右起源于LLNL实验室, 最新版本20.11开源软件(约50万行c源码)&#xff0c;开发和发布一直活跃用户群: Top10里有5家使用(天河HPC是其一)商业公司SchedMD提供顾问咨…

经典算法之LRU算法

一、理论 LRU算法算是个常见的算法&#xff0c;很有必要去了解它&#xff0c;现在我们就来看看什么是 LRU LRU 的全称是 Least Recently Used&#xff08;最近最少使用&#xff09;&#xff0c;就如它的含义一样&#xff0c;最近最少使用的。在实际的场景中大多会把它当作一种…

CAN总线学习笔记 | STM32CubeMX配置CAN环回测试

CAN基础知识介绍文中介绍了CAN协议的基础知识&#xff0c;以及STM32F4芯片的CAN控制器相关知识&#xff0c;下面将通过实例&#xff0c;利用STM32CubeMX图形化配置工具&#xff0c;来实现CAN通讯的环回测试 一、STM32CubeMX配置 CAN是挂载在APB1总线上&#xff0c;设置PCLK1时…