当前位置: 首页 > news >正文

【01】PointNet论文解析

图1

PointNet的应用

1.点云图像的分类(整片点云是什么物体)

2.点云图像的部件分割(整片点云所代表的物体能拆分的结构)

3.点云图像的语义分割(将三维点云环境中不同的物体用不同的颜色区分开)

补充

PointNet是一个统一的模型,直接将点云作为输入,同时输出整个输入的类标签或者输入的的每个点块/部分的标签。网络最终的全连接层把这些学习到的最优值聚合到如上所述的整个形状的全局描述符(形状分类)上或者用于预测每个点标签(形状分割)。

点云数据:直接使用无序点集作为输入。点云表示为一组3D点,其中每个点的Pi是其坐标(x , y , z)的向量加上额外的特征通道,例如颜色、法线等,除非另有说明,我们只使用坐标(x , y , z)作为我们点的通道。(注:有些点云数据可能是6个值, 除了三个坐标外, 还有nx,ny,nz构成法向量。)那么由N个点构成的一个点云数据其实就是一个Nx3的数组

我们的输入格式很容易应用刚性或者仿射变换,因为每个点都是独立变换的。因此我们能够增加一个依赖数据的空间变换网络,该网络会在PointNet处理数据前对数据进行规范化,以便进一步改善结果。

我们工作的主要贡献如下:

  • 我们设计了一个适用于处理3D无序点集的新型深度网络模型
  • 我们展示了如何训练这样的网络模型来执行3D形状分类、形状部分分割和场景语义分析任务
  • 我们对该方法的稳定性和效率进行了深入的验证和理论分析
  • 我们演示了网络中所选择神经元计算出的3D特征,并对其性能进行了直观的解释

我们的网络有三个关键模块:

  • 最大池层作为对称函数用于聚类所有点的信息
  • 组合局部信息和全局信息的结构
  • 两个对齐输入点和点的特征的联合对齐网络

点集\mathbb{R}^{n}​的深度学习

我们网络的构架的灵感来自\mathbb{R}^{n}​中的点集的属性。

\mathbb{R}^{n}​中的点集的属性 

我们的输入是来自欧式空间的点的子集。它有三个主要属性:

  1. 无序性:点云是一组没有特定顺序的点。点与点之间没有严格的顺序,如将两个点交换之后仍然表示同一个点云。【对称函数设计用于表征】
  2. 点之间的相互作用:虽然点云的点是离散的,但是却可以共同组成物体或者环境的轮廓。这意味着这些点不是孤立的,而且相邻的点形成一个具有意义的子集。因此模型需要能够捕获附近点的局部结构,以及局部结构之间组合的相互作用。【局部全局特征结合】
  3. 转换的不变性:对于几何对象,点集学习到的表示应该对某些变换具有不变性。例如,所有的旋转点和平移点都不能修改全局点云的类别或者点的分割。点云进行刚性变换(旋转平移)后,再进行输入,输出的分类或者是分割结果不变。【alignment network】

 1 三维数据

在这里插入图片描述

​三维数据的表述形式一般分为四种:

  1. 点云:由N个D维的点组成,当D = 3的时候,一般代表着( x , y , z )的坐标,当然也可以包括一些法向量、强度等别的特征。
  2. Mesh:由三角面片和正方形面片组成。
  3. 体素:由三维栅格将物体用0和1表征。
  4. 多角度的RGB图像或者RGB-D图像

2 PoinNet出现以前的点云深度学习模型

在PointNet出现以前,点云上的深度学习模型大致分为三类:

  1. Volumetric CNNs: 是在体素形状上应用3D卷积神经网络的先驱。然而,由于数据的稀疏性和3D卷积的计算成本,体积表示受到其分辨率的限制。————基于3D体素(3D voxel grids)模型:先将点云映射到体素空间上,3D体素数据格式可以直接通过3D卷积进行分类或者分割。但是对于3D体素格式来说任务效果以及计算量是取决于它的分辨率的
  2. Multiview CNNs: 试图将3D点云或形状渲染成2D图像,然后应用2D卷积神经网络对它们进行分类。————说往往会损失一些几何信息,比如遮挡。
  3. Spectral CNNs
  4. Feature-based DNNs: 首先通过提取传统的形状特征将3D数据转换成向量,然后使用全连接网络对形状进行分类。——————利用传统的人工点云特征分类

3 为什么使用点云

  1. 点云更接近于设备的原始表征(即雷达扫描物体直接产生点云)
  2. 点云的表达方式更加简单,一个物体仅用一个N × D 的矩阵表示

综上,点云数据在3D几何表示中作为一种重要的数据格式,它不存在着3D体素以及多视角投影遇到的那些问题。因此这篇文章提出了一种通用的用于处理点云数据的神经网络框架。

在这里插入图片描述

4 点云特性设计网络

好的网络需要根据点云特性来设计特定的网络。点云特性:置换不变性、旋转不变性

置换不变性:点的排序不影响物体的性质

在这里插入图片描述

​当一个N × D 在N的维度上随意的打乱之后,其表述的其实是同一个物体。网络设计就要考虑这一特性。 那么什么函数有这样的属性呢? 比如求max, 求和等等, 这些都是顺序无关的。因此针对点云的置换不变性,其设计的网络必须是一个对称的函数。我们经常看到的SUMMAX等函数其实都是对称函数。因此我们可以利用max函数设计一个很简单的点云网络,如下:

在这里插入图片描述在这里插入图片描述

但是这样的网络有一个问题,就是每个点损失的特征太多了,输出的全局特征仅仅继承了三个坐标轴上最大的那个特征,因此我们不妨先将点云上的每一个点映射到一个高维的空间(例如1024维),目的是使得再次做MAX操作,损失的信息不会那么多。

在这里插入图片描述

 此时我们发现,当我们将点云的每个点先映射到一个冗余的高维空间后,再去进行max的对称函数操作,损失的特征就没那么多了。由此,就可以设计出这PointNet的雏形,称之为PointNet(vanilla)。

要解决点云图像的分类和分割任务就是如何对点云数据进行特征提取:

 如果不进行MLP神经网络进行升维直接进行池化操作提取特征,那么n个点才提取到1个3个维度的特征(2,3,4),然后在进行K分类,似乎很不合理 ,损失特征太多了。所以在进行池化操作前要进行升维,让特征足够多。

如上图公式所示,h函数相当于升维操作,g函数为池化提取特征操作,y函数为分类操作。

我们通过多层感知机来近似h,并通过单个变量函数和最大池函数的组合来近似g 。通过实验发现这表现的很好。通过h的集合,我们可以学到一些f来捕获点集的不同属性

旋转不变性:给予一个点云一个旋转,所有的x , y , z坐标都变了,但是代表的还是同一个物体。

在这里插入图片描述

因此对于普通的PointNet(vanilla),如果先后输入同一个但是经过不同旋转角度的物体,它可能不能很好地将其识别出来。在论文中的方法是新引入了一个T-Net网络去学习点云的旋转,将物体校准,剩下来的PointNet(vanilla)只需要对校准后的物体进行分类或者分割即可。

在这里插入图片描述

由图可以看出,由于点云的旋转非常的简单,只需要对一个N × D 的点云矩阵乘以一个D × D的旋转矩阵即可,因此对输入点云学习一个3 × 3的矩阵,即可将其矫正;同样的将点云映射到K维的冗余空间后,再对K维的点云特征做一次校对,只不过这次校对需要引入一个正则化惩罚项,希望其尽可能接近于一个正交矩阵。

在这里插入图片描述

5 PointNet网络结构

满足了以上两个点云的特性之后,就可以顺理成章的设计出PointNet的网络结构了

在这里插入图片描述

 其中:分类网络设计global feature,分割网络设计point-wise feature

 “mlp”代表多层感知机,括号中的数字是层的大小。Batchnorm用于ReLU的所有层。Dropout层用于分类网络中的最后一个多层感知机。

PointNet由分类网络和分割网络两部分组成。

  • 分类网络以n个点作为输入,应用输入和特征转换,然后通过最大池化来聚合点特征。输出是K个类的分类分数。
  • 分割网络是分类网络的扩展。它连接全局和局部特征,并输出每个点的分数。多层感知器 (MLP)由5个隐藏层组成,神经元大小分别为64,64,64, 128,1024,所有点共享一个MLP副本。————分割任务略复杂一些, 因为要对每个点进行分类, 只有1x1024维的全局特征显然不够, 那么就在max前的阶段提取每个点的特征, 把每个点的特征跟1x1024维的全局特征拼接起来作为特征, 再用MLP对每个点进行分类, 就完成了分割任务。
  • 分类和分割网络中靠近输出的MLP由大小为512,256的两层组成。

PointNet过程:点云数据——MLP升维到1024——在每个维度对所有点进行max操作——最终得到1x1024维度的全局特征。

在这里插入图片描述

1.点云排列无序性

要做到对点云点排列不变性有几种思路:
1.直接将点云中的点以某种顺序输入(比如按照坐标轴从小到大这样)
不这样做的原因:很难找到一种稳定的排序方法
 

2.作为序列去训练一个RNN,即使这个序列是随机排布的,RNN也有能力学习到排布不变性
不这样做的原因:RNN很难处理好成千上万长度的这种输入元素(比如点云)。

3.使用一个简单的对称函数去聚集每个点的信息

这里,对称函数将n个向量作为输入,同时输出一个对输入顺序不变的新向量。左边f是我们的目标,右边g是我们期望设计的对称函数。由上公式可以看出,基本思路就是对各个元素(即点云中的各个点)使用 ℎ分别处理,在送入对称函数 g中处理,以实现排列不变性。在实现中 ℎ 就是MLP,g 就是max pooling

2.Local and Global Information Aggregation

对于分割任务,我们需要point-wise feature

因此分割网络和分类网络设计局部略有不同,分割网络添加了每个点的local和global特征的拼接过程,以此得到同时对局部信息和全局信息感知的point-wise特征,提升表征效果。

3.alignment network 联合对准网络

直接的思路:将所有的输入点集对齐到一个统一的点集空间。

PointNet的做法:如果点云在经历了某些几何变换(eg刚性变换),那么点云的语义标签必须是不变的。因此我们希望点集的学习表示对这些变换是不变的。我们通过T-Ne[T-Net=三层共享的MLP+对称函数max+两层全连接隐藏层和线性层。]t预测仿射变换矩阵,直接预测一个变换矩阵(3*3)来处理输入点的坐标,直接将该变换作用于输入点的坐标。

这个想法可以进一步扩展到特征空间的对齐。我们可以在点的特征上插入另一个对齐网络,并预测特征变换矩阵以对齐来自不同输入点云的特征。然而,特征空间中的变换矩阵比空间变换矩阵的维度高很多,这极大地增加了优化的难度。因此,我们在softmax的训练损失中增加了一个正则化项。我们约束特征变换矩阵接近于正交矩阵。

局部和全局信息聚类

上一节的输出组成了一个向量,这是输入集的全局标签。在计算完全局点云特征向量后,我们将全局特征和每一个点的特征连接起来反馈给每一个点特征。然后我们基于组合的点特征提取新的每个点的特征,这样每个点特征都考虑了局部和全局信息。通过这样的修改,我们的网络能够预测依赖于局部几何和全局语义的每个点数量。

具体来说,对于每一个N × 3的点云输入,网络先通过一个T-Net将其在空间上对齐(旋转到正面),再通过MLP将其映射到64维的空间上,再进行对齐,最后映射到1024维的空间上。这时对于每一个点,都有一个1024维的向量表征,而这样的向量表征对于一个3维的点云明显是冗余的,因此这个时候引入最大池化操作,将1024维所有通道上都只保留最大的那一个,这样得到的1 × 1024 的向量就是N个点云的全局特征

如果做的是分类的问题,直接将这个全局特征再进过MLP去输出每一类的概率即可;但如果是分割问题,由于需要输出的是逐点的类别,因此其将全局特征拼接在了点云64维的逐点特征上,最后通过MLP,输出逐点的分类概率。

6 Theoretical Analysis

①只要神经元足够多,pointnet也可以逼近任意的连续函数,这里也就为pointnet处理各种复杂的3D任务提供了理论支持。

②通过研究是哪些点最大程度激活了神经元的值,论文发现,能够最大程度激活网络的点都是物体的主干点(下图第二行),将其上采样,很容易能得到原始的结构。因此这就是PointNet网络的缺失鲁棒性的来源。只要点云中包括了这些关键点,那么pointnet提取出来的特征就是不变的。当max pooling出来的维度k比较小的时候,k会限制关键点的数量,因为实际关键点的数量不会超过k,此时k越大关键点数量也就越多,模型表现也就越好也更稳定。

在这里插入图片描述

它由Charles R. Qi、Li Yi、Hao Su等人于2017年提出。

PointNet是一种用于处理点云数据的深度学习框架,可以在没有先验知识的情况下直接对点云进行分类、分割等任务。

PointNet的主要思想是将点云看作一个无序点集,然后通过一些操作将其转换为一个向量或矩阵,再输入到全连接神经网络中进行分类或分割等任务。

PointNet的网络结构包括三个主要部分:变换网络、特征提取网络和全连接层。

变换网络是PointNet中的一个可微分操作,主要用于对点云进行归一化和对齐。它包括三个1×1卷积层和一个最大池化层,可以将点云的坐标进行规范化。通过对点云进行这种规范化,可以使得PointNet对于不同的旋转、缩放、平移等变换具有不变性。

特征提取网络是PointNet中的核心组件,它用于提取点云的特征。特征提取网络由若干个共享权重的多层感知器(MLP)组成,每个MLP由两个1×1卷积层和一个全连接层组成。这些MLP可以处理点的坐标和特征向量,并将它们组合成一个全局特征向量。

全连接层是PointNet的最后一层,用于对全局特征向量进行分类或分割等任务。在分类任务中,全连接层使用softmax函数将特征向量映射到类别概率上。在分割任务中,全连接层使用一个1×1卷积层将特征向量映射到每个点的类别上。

总体来说,PointNet的优点是可以对点云进行端到端的处理,不需要手工提取特征或进行数据预处理,具有很好的可扩展性和可应用性。

相关文章:

【01】PointNet论文解析

PointNet的应用 1.点云图像的分类(整片点云是什么物体) 2.点云图像的部件分割(整片点云所代表的物体能拆分的结构) 3.点云图像的语义分割(将三维点云环境中不同的物体用不同的颜色区分开) 补充 PointN…...

nuxt.js 在IE浏览器||其他浏览不识别document/window 情况处理

1 第一步注册到nuxt.config.js文件 2 第二步建立js 文件 import Vue from vue (function(){ if(process.client){ console.log(process.client) }else{ console.log(process.client) } if (!!window.ActiveXObject || "ActiveXObject" i…...

JavaEE简单示例——基于注解的SSM整合

基于注解的SSM整合 在之前我们进行了基于XML配置文件的整合,这次我们介绍基于注解的SSM框架的整合。基于注解的含义是将我们之前所有的配置文件用java类来代替,也就是我们会在Java类中编写之前我们之前在配置文件中编写的内容。 首先我们将之前我们编写…...

EFBG-06-250双比例阀放大器

EFBG-06-250双比例阀放大器特点: 1.本阀系仅供应驱动元件所需最低的压力及流量的入口节流式节能阀。 2.本阀可使油泵及马达侧的压力随时维持大于负载压0.6-0.9MPa的压差,因而可节省能耗。 3.外置比例放大器参数可调,维修更换简单。...

初级算法-栈与队列

主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-栈与队列一、栈实现队列二、队列实现栈三、有效的括号四、删除字符串中的所有相邻重复项五、逆波兰表达式求值六、滑动窗口最大值七、前K个高频元素栈先进后出,不提供走访功能…...

菜鸟教程之Android学习笔记Service

Service初步 一、StartService启动Service的调用顺序 MainActivity.java package com.example.test2;import androidx.appcompat.app.AppCompatActivity;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View;…...

半个月狂飙1000亿,ChatGPT概念股凭什么?

ChatGPT 掀起了AI股历史上最疯狂的一轮市值狂飙。 自春节后至今,ChatGPT概念股开始了暴走模式,短短半月时间,海天瑞声、开普云等ChatGPT概念股市值累计增加了近1400亿。 如此的爆炸效应,得益于ChatGPT所展现出商业化落地的巨大潜…...

linux使用systemctl

要使用 systemd 来控制 frps,需要先安装 systemd,然后在 /etc/systemd/system 目录下创建一个 frps.service 文件 安装systemd # yum yum install systemd # apt apt install systemd创建并编辑 frps.service 文件 [Unit] DescriptionFrp Server Serv…...

交换机和VLAN简介

一.二层设备(交换机和网桥)的区别简介 1.交换机: 2.网桥: 二.交换机原理介绍 三.VLAN概念介绍 1.VLAN将一个物理区域LAN划分为多个区域 2.作用: 3.标识方式VLAN ID 4.VLAN配置下MAC地址表的三元素 5.交换中的…...

想要拯救丢失的海康威视硬盘录像数据?可采用这三种恢复方法

海康威视作为全球领先的视频监控产品及解决方案提供商,其硬盘录像机可用于对大型公共场所、企事业单位及个人住宅等场所的安全监控。然而在实际使用中,有时会发生硬盘录像数据丢失的情况,这将对用户带来不小的损失和困扰。 硬盘录像数据丢失…...

每周一算法:高精度乘法(一)大整数乘整数

高精度乘法 乘法是我们在比赛中常用到运算之一,但在利用C++进行乘方或者阶乘计算时,由于其结果的增长速度很快,很容易就溢出了。例如: 13 ! = 6 , 227 , 020 , 800 13!=6,227,020,800 13!=6...

c++华为od面经

手撕代码: 力扣1004 最大连续1的个数 给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。 输入:nums [1,1,1,0,0,0,1,1,1,1,0], K 2 输出:6 解释:[1,1,1…...

【郭东白架构课 模块二:创造价值】18|节点一:架构活动中为什么要做环境搭建?

你好,我是郭东白。在第 16、17 讲,我们讲解了架构师在架构活动中要起的作用,主要有达成共识、控制风险、保障交付和沉淀知识这四个方面。这是从架构师创造价值的维度来拆解的。 那么从这节课开始,我将从架构活动生命周期的维度上…...

15个awk的经典实战案例

目录 一、插入几个新字段 二、格式化个空白 三、筛选IPV4地址 命令及结果 第一种查询方式 第二种查询方式 第三种查询方式 四、读取.ini配置文件中的某段 命令及结果 第一种查询方式 第二种查询方式 五、根据某字段去重 命令及结果 第一种方式 第二种方式 六、…...

【JAVA】本地代码获取路径乱码

本地代码获取路径乱码 获取resources下资源乱码 解决方法: 获取路径后把返回值decode下就可以了. 用utf-8编码 String path this.getClass().getResource("").getPath();...

自然机器人最新发布:智能流程助手,与GPT深度融合

ChatGPT自2022年11月上线后就受到现象级地广泛关注,5天时间用户就已经突破百万,仅2个月时间月活用户就突破1亿,成为史上增速最快的消费级应用,远超TikTok、Facebook、Google等全球应用。它展现了类似人类的语言理解和对话交互能力…...

【Mybatis】4—动态SQL

⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记链接👉https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以,麻烦各位看官顺手点个star~😊 如果文章对你有所帮助,可以点赞👍…...

事务传播特性和隔离级别

事务的四大特性 1.原子性(Atomicity):事务不可再分,要么都执行,要么都不执行。 2.一致性(Consistency):事务执行前后,数据的完整性保持一致,即修改前后数据总…...

socket网络编程

端口 :主机上一个应用程序的代号(端口不变) 为什么不用PID来表示一个应用 因为PID会变化,而端口是不变的 套接字进程间通信——跨越主机 1、主机字节序列和网络字节序列 主机字节序列分为大端字节序和小端字节序,不同…...

IO多路复用机制详解

高性能IO模型浅析 服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blo…...

Hardware-Efficient Attention for Fast Decoding

TL;DR 2025 年普林斯顿大学提出的硬件友好 attention 设计,在 MQA/GQA 与 deepseek 提出的 MLA 基础之上继续优化,提出 Grouped-Tied Attention (GTA) 和 Grouped Latent Attention (GLA),实现更高推理效率的同时也能保持较好的模型效果。 …...

PublishSubject、ReplaySubject、BehaviorSubject、AsyncSubject的区别

python容易编辑,因此用pyrx代替rxjava3做演示会比较快捷。 pyrx安装命令: pip install rx 一、Subject(相当于 RxJava 的 PublishSubject) PublishSubject PublishSubject 将对观察者发送订阅后产生的元素,而在订阅前…...

asp.net mvc如何简化控制器逻辑

在ASP.NET MVC中,可以通过以下方法简化控制器逻辑: ASP.NET——MVC编程_aspnet mvc-CSDN博客 .NET/ASP.NET MVC Controller 控制器(IController控制器的创建过程) https://cloud.tencent.com/developer/article/1015115 【转载…...

【生活】程序员防猝si指南

note 一、定期体检二、均衡饮食,多食用对心脏有保护作用的食物三、每周运动四、减压五、保证睡眠六、戒烟限酒7、控制血压8、警惕流感攻击心脏9、关注牙齿健康10、不要抵触吃药 文章目录 note一、定期体检二、均衡饮食,多食用对心脏有保护作用的食物三、…...

从“人找政策”到“政策找人”:智能退税ERP数字化重构外贸生态

离境退税新政核心内容与外贸企业影响 (一)政策核心变化解析 退税商店网络扩容 新政明确鼓励在大型商圈、旅游景区、交通枢纽等境外旅客聚集地增设退税商店,并放宽备案条件至纳税信用M级企业。以上海为例,静安区计划新增1000家退…...

如何对Video视频进行SEO优化?

如何对Video视频进行SEO优化? 在现代互联网的海洋中,搜索引擎优化(SEO)无疑是每一个网站管理员和内容创作者必须掌握的技能。而今天,我要向大家介绍一个极为强大的工具——Schema.org。它不仅能提升你的网站在搜索引擎…...

服务器中CC攻击的特点有哪些?

CC攻击作为一种常见的网络攻击类型,主要是用来攻击网站页面的,当大量的用户在访问网站的过程中,打开页面的速度会变得比较慢,给数据库造成的压力就越大,CC攻击会消耗大量的服务器资源,给企业带来一定的经济…...

Python60日基础学习打卡Day46

一、 什么是注意力 注意力机制的由来本质是从onehot-elmo-selfattention-encoder-bert这就是一条不断提取特征的路。各有各的特点,也可以说由弱到强。 其中注意力机制是一种让模型学会「选择性关注重要信息」的特征提取器,就像人类视觉会自动忽略背景&…...

【DAY42】Grad-CAM与Hook函数

内容来自浙大疏锦行python打卡训练营 浙大疏锦行 知识点: 回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例 作业:理解下今天的代码即可 在深度学习中,我们经常需要查看或修改模型中间层的输出或梯度。然而,标准的前向传播和反…...

手机端抓包大麦网抢票协议:实现自动抢票与支付

🚀 手机端抓包大麦网抢票协议:实现自动抢票与支付 🚀 🔥 你是否还在为抢不到热门演出票而烦恼?本文将教你如何通过抓包技术获取大麦网抢票协议,并编写脚本实现自动化抢票与支付!🔥 …...