PointNet和PointNet++论文解读

news2024/9/30 4:59:11

目录

一、导言

二、PointNet介绍

三、PointNet网络结构

1、损失函数

2、正则化

四、PointNet++

1、分层次的点集抽象层


一、导言

        PointNet来自CVPR2017,是最早直接处理点云数据用于计算机视觉的模型,并运用于分割、检测、场景理解任务,PointNet++来自NIPS2017(这么高产吗?),作为PointNet的改进包括添加了多尺度提取特征等工作,优化PointNet网络架构。

二、PointNet介绍

        2017年之前大部分工作都是将3D点云体素化转为多个视角的2D图像,来进行常规的卷积神经网络,而没有直接使用点云进行提取特征。

        该论文提出只输入点的坐标信息,考虑通过法向量或者角度信息,来添加更多的维度。

(1)点云无序性解决:使用单一的对称函数,本文使用最大池化层,来解决无序性的问题。通过最大池化层方法可以保证所有点云没有先后顺序,聚合成全局点集特征。

对称函数:

        对于无序点云数据x_i \in \mathbb{R}^d,定义一组函数f: X\rightarrow \mathbb{R},将点云映射到向量上,其中γ和h为MLP网络。

                                         f(x_1,x_2,...,x_n)=\gamma(MAX_{i=1,...,n}{h(x_i)})

(2)特征对齐:考虑到网络预测结果对特定的变换(如刚性变换)具有不变性,提出通过T-Net变换矩阵提取特征并与输入feature进行乘法。

T-Net结构:

T-Net与原特征乘法通道连接: 

                                ​​​​​​​        

(3)稳定性:由于模型可以拟合任何连续函数,而对于微小扰动不会影响函数拟合,通过在输入点云中引入一定噪声点,以及删除一定数据来增强网络的鲁棒性,提高预测效果。 

三、PointNet网络结构

        PointNet网络的主干网络保持不变,对于分类和分割来说有不同的Head,对于分割头有更多不同层的特征进行融入,提高特征多维化。但是这网络特征提取方式过于简单,也造成对于局部的,特定场景的,效果可能有缺陷。

1、损失函数

        对于不同问题的损失,均可以表示为特定问题Head的损失加上特征变换矩阵的损失。

(1)分类问题:分类损失交叉熵

(2)分割问题:将分割问题转换为每个点的分类问题,再用交叉熵

(3)特征变换矩阵损失:理想情况下特征矩阵应该是正交矩阵,而实际的特征矩阵可能有所偏差,根据正交矩阵的性质,一定有AA^T=I,所以我们将特征变换矩阵损失表示为:        ​​​​​​​           

                                                      L_{reg}=||I-AA^T||^2_F

2、正则化

        论文中考虑在第二次使用T-Net时添加正则化,来提高模型鲁棒性。

四、PointNet++

        解决了PointNet不能很好地提取局部特征的问题,并进一步提取不同尺度下的特征。

1、分层次的点集抽象层

        使用多个点集抽象层(SA层,Set Abstraction)来进行逐层特征提取,差别在于每一个SA模块的采样点和采样数量不一样,会逐层增大。

        SA模块包括三个关键层:Sampling Layer、Grouping Layer、PointNet Layer。

(1)采样层:从输入点中使用迭代最远点采样法(FPS)选择一组局部区域质心点。

FPS算法:

        首先,从输入点集中随机选择一个点作为第一个采样点。

        然后,从剩余点集中选择与已选采样点中最远的点作为下一个采样点

        重复第二步,直到采样足够多的点作为中心点。

(2)分组层:通过采样的质心以及邻近来构造局部区域集

五、PointNet++网络结构

论文参考1:PointNet
论文参考2:PointNet++ 

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

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

相关文章

celery简单使用

1. 框架介绍 Celery是一个强大的异步任务队列/作业队列框架, 它主要用于处理大量消息, 同时为操作提供稳定可靠的消息传输机制. Celery的分布式特性允许任务分散到多个计算节点上并行处理, 从而提高系统的可扩展性, 可靠性和性能. Celery使用消息代理(如: RabbitMQ, Redis)来实…

【Linux】win 环境下进行 linux开发

文章目录 IDE 安装Python开发创建一个新项目安装 Python、pip 和 venv创建虚拟环境(建议)运行Python 参考文章 想要win 环境下进行 linux开发,需要依赖于wsl。wsl安装可参考上篇文章 【Linux】wsl win安装Linux环境 这里主要介绍在 linux下…

【pkill pgrep】Centos/Linux pkill命令详细介绍

简介 系统版本:Centos7.6 pkill命令用于杀死一个进程,会根据进程名称和其他属性杀死进程(默认会向进程发送SIGTERM信号,详细请看Linux信号的行为说明),与之相似的命令有killall,与kill命令相比&…

C++学习之路(1)— 第一个HelloWorld程序

C学习之路(1)— 第一个HelloWorld程序 一、前言 C在C语言的基础上添加了对面向对象编程和泛型编程的支持,在 20世纪90年代便是最重要的编程语言之一,并在21世纪仍保持强劲势头。C继承了C语言高效、简洁、快速和可移植性的传统。 …

鸿蒙HarmonyOS开发:常用布局及实用技巧

文章目录 一、概述二、盒子模型三、线性布局(Column/Row)1、space属性2、justifyContent属性3、alignItems属性 四、实用技巧1、Blank组件的使用2、layoutWeight属性的使用 一、概述 布局是指对页面组件进行排列和定位的过程,其目的是有效地…

【STM32】“stm32f10x.h” 头文件的作用

目录 1. 文件结构与头文件保护1.1 头文件保护1.2 包含的头文件 2. 宏定义和常量2.1 系统时钟相关2.2 外设时钟使能2.3 中断优先级 3. 外设寄存器结构体3.1 GPIO 寄存器结构体3.2 RCC 寄存器结构体3.3 USART 寄存器结构体 4. 外设头文件的引入4.1 GPIO 外设头文件4.2 RCC 外设头…

CMU15445 (Fall 2023) Project 3 - Query Execution 思路分享

文章目录 写在前面Task 0 - Read the Source Code算子(executor)如何获取数据,BusTub如何描述算子?ButTub如何存储表的数据,描述表的结构? Task 1 - Access Method ExecutorsSeqScanInsertUpdateDeleteIndexScanOptimizing SeqSca…

Tensorflow训练视觉模型(CPU)

目录 零、模型下载 一、清理C盘 二、 配置环境 三、运行项目前提操作 (1)根据自己的项目设置路径。每次激活虚拟环境(tensorflow115)都得重设一次 (2)执行setup 这个项目的路径移动了位置也需要重设一…

7.17题目练习

目录 1.二叉树的最近公共祖先 2.从前序与中序遍历序列构造二叉树 3.最小k个数 1.二叉树的最近公共祖先 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ class Solution …

余承东再次否认“遥遥领先”禁令:没有罚款一说,被喊烂了

7月29日,问界第四十万台新车在赛力斯超级工厂正式下线。在下线仪式上,华为常务董事、终端BG董事长、智能汽车解决方案BU董事长余承东再次否认了外界关于其被禁提“遥遥领先”一次的传闻,在谈及问界M9时,他表示,问界M9不…

java基础 之 equals和==的区别

文章目录 浅谈“”特点比较基本类型比较引用类型 浅谈“equals”背景和使用重写equals自定义类为什么需要重写equals方法 总结附录代码及文章推荐 前言: 1、8大基本数据类型,它们的值直接代表了某种数据,不是对象的实例,不能使用n…

DeepSpeed基础及内存优化特性

DeepSpeed 1.基础概念 DeepSpeed是一个由Microsoft 公司开发的开源深度学习优化库,旨在提高大规模模型训练的效率和可扩展性,使研究人员和工程师能够更快地迭代和探索新的深度学习模型和算法。它采用了多种技术手段来加速训练,包括模型并行…

【百度面试算法题】2024-08-02

部门项目实际上也涉及到多种语言,有没有意愿去学习其他语言?你是如何利用数据结构来做技术的/项目中是如何解决高并发的?(没听懂问题…就直接开始介绍项目了…后来被打断说不进行发散了,开始问八股)说一下单…

Visual Studio中gets报错解决方法

1、报错内容 2、visual studio 2015之后就不支持gets了,变成了gets_s,并且后面的括号中也不能单独写一个数组名,还需加上数组内的个数,如下: 问题就解决了

虚拟机如何使用pxe服务实现自动安装系统

一、前提 服务机为rhel7.9 因为我们需要虚拟机为服务器来给要安装系统的虚拟机分配IP 所以要先将VMWare的NAT模式的DHCP自动分配取消,如图: yum install httpd -y systemctl enable --now httpd 二、基于HTTP协议的PXE服务器 1、首先需要进入图形化…

2-55 基于matlab的 永磁同步电机滑膜观测器估算电机转速

基于matlab的 永磁同步电机滑膜观测器估算电机转速。精度比传统观测器精度高。分别输出电机转速估计值与实际值、电机转速估计误差、电机转子位置估计值与实际值、电机转子位置估计误差。程序已调通,可直接运行。 2-55滑膜观测器估算电机转速 - 小红书 (xiaohongsh…

正点原子imx6ull-mini-Linux驱动之Linux SPI 驱动实验(22)

跟上一章一样,其实这些设备驱动,无非就是传感器对应寄存器的读写。而这个读写是建立在各种通信协议上的,比如上一章的i2c,我们做了什么呢,就是把设备注册成一个i2c平台驱动,这个i2c驱动怎么搞的呢&#xff…

PXE:Kickstart自动化安装Linux系统

PXE:工作在 Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。 运行 PXE协议需要设置:DHCP服务器和TFTP服务器。DHCP服务器用来给 PXE client(将要安装系统的主机&…

在使用JSON过程中遇到的一个空间释放问题

在对完成的模块进行空间访问检查中发现了这个问题,这刚开始接触JSON的使用,也不知道他的内部实现,因此该问题找了好久,终于发现是每个节点创建都会自动开辟空间,因此造成空间未成功释放的错误。 JSON未成功替换节点空间…

NVIDIA A100 和 H100 硬件架构学习

目前位置NV各种架构代号: NVIDIA GPU 有多个代号和架构,这些架构对应不同的世代和硬件特性。以下是 NVIDIA 主要 GPU 架构及其计算能力(Compute Capability)代号的简要概述: Tesla 架构 G80、GT200 Compute Capabi…