6种最常用的3D点云语义分割AI模型对比

由于增强现实/虚拟现实的发展及其在计算机视觉、自动驾驶和机器人领域的广泛应用,点云学习最近引起了人们的关注。 深度学习已成功用于解决 2D 视觉问题,然而,由于其处理面临独特的挑战,深度学习技术在点云上的使用仍处于起步阶段。

在这里插入图片描述

推荐:用 NSDT编辑器 快速搭建可编程3D场景

深度学习的早期方法通过将点云预处理为结构化网格格式来克服这一挑战,但代价是计算成本增加或深度信息丢失。 3D点云分割是将点云分类为不同同质区域的过程,使得同一孤立且有意义的区域中的点具有相似的属性。 由于高冗余、采样密度不均匀以及点云数据缺乏明确的结构,3D 分割是一项具有挑战性的任务。

将点云分割为前景和背景是处理 3D 点云的基本步骤。 人们可以精确地确定 3D 数据中对象的形状、大小和其他属性。 然而,分割 3D 点云中的对象并不是一项简单的任务。 点云数据通常是嘈杂、稀疏且无组织的。 除此之外,点的采样密度不均匀,表面形状可以是任意的,数据没有统计分布模式。 此外,由于 3D 传感器的限制,背景与前景纠缠在一起。 此外,很难拥有计算效率高且内存占用低的深度学习模型来执行分割。

分割过程有助于分析各种应用中的场景,例如定位和识别对象、分类和特征提取。 3D点云分割可以部署在场景级别(语义分割)、对象级别(实例分割)和零件级别(零件分割)。 语义分割是一种检测每个像素所属的对象类别并将同一类的多个对象视为单个实体的技术。
在这里插入图片描述

给定一个点云,语义分割的目标是根据点的语义将其分成几个子集。 当前的文章重点研究基于点的方法下最先进的语义分割技术。 各种基于点的 3D 语义分割技术的分类可以由 4 种范式给出,即 (a) 逐点 MLP、(b) 点卷积、© 基于 RNN 和 (d) 基于图。

在利用本文介绍的AI模型训练或推理点云数据之前,最好先看一下点云数据。你可以使用 NSDT 3DConvert 这个在线工具,它支持PCD、XYZ、PLY等多种格式的3D点云的在线预览和转换:
在这里插入图片描述

https://3dconvert.nsdt.cloud

1、PointNet

卷积架构需要高度规则的输入数据格式,以便执行权重共享和其他内核优化。 由于点云和网格不是常规格式,因此大多数方法通常将数据转换为常规 3D 体素网格或图像集合,然后再将其输入深度网络架构。 然而,这种转换使得结果数据变得不必要地庞大,并且还引入了可能掩盖数据自然不变性的量化伪影。

PointNet 直接利用考虑输入排列不变性的点云。 PointNet 架构包含三个关键模块

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

为了找到无序输入的对称函数,PointNet通过在变换元素上应用对称函数来近似在点集上定义的通用函数。 PointNet 通过多层感知器网络来近似函数,并通过单变量函数和最大池函数的组合来变换函数。 函数的输出形成一个向量,该向量被视为输入集的全局签名,并通过将全局特征与每个点特征连接来馈送到每个点特征。 然后,基于组合点特征提取新的每点特征,因为每点将了解局部信息和全局信息。

构成第三个模块的联合对齐网络的灵感来自于这样一个事实:如果点云经历几何变换,则点云的语义标签必须保持不变。 PointNet 通过 T-net 架构预测仿射变换矩阵,并将该变换直接应用于输入点的坐标。 T-net 由点独立特征提取、最大池化和全连接层组成。 特征空间中的变换矩阵具有更高的维数。 因此,为了优化,将约束特征变换矩阵接近正交矩阵的正则化项添加到softmax训练损失中。 图中给出了PointNet的详细架构和语义分割的输出。

在这里插入图片描述

PointNet架构和语义分割的输出

2、PointNet++

PointNet 不会捕获由存在点的度量空间引起的局部结构,从而限制了其识别细粒度模式的能力以及对复杂场景的泛化能力。

PointNet++ 引入了一种分层神经网络,它将 PointNet 递归地应用于输入点集的嵌套分区。 通过利用度量空间距离,PointNet++ 能够学习上下文尺度不断增加的局部特征。

PointNet++ 通过底层空间的距离度量将一组点划分为重叠的局部区域。 与 CNN 类似,它从小邻域中提取捕获精细几何结构的局部特征,这些局部特征被进一步分组为更大的单元并进行处理以产生更高级别的特征。 重复这个过程直到获得整个点集的特征。

PointNet++的设计解决了两个问题:如何生成点集的划分,以及如何通过局部特征学习器抽象点集或局部特征。 PointNet 使用单个最大池操作来聚合整个点集,而 PointNet++ 构建点的分层分组,并沿着层次结构逐步抽象更大的局部区域。 这种层次结构由多个抽象级别组成,在每个级别上,都会对一组点进行处理和抽象,以生成一个包含更少元素的新集合。

抽象层由三层组成:采样层、分组层和PointNet层。 采样层从输入点中选择一组点,这定义了局部区域的质心。 然后,分组层通过查找质心周围的“相邻”点来构造局部区域集。 PointNet 层使用迷你 PointNet 将局部区域模式编码为特征向量。 图中展示了 PointNet++ 所使用的架构细节及其与 PointNet 的比较。

在这里插入图片描述

PointNet++ 语义分割的架构和输出

3、RandLA-Net

RandLA-Net 引入了一种轻量级神经架构,可以处理大规模点云,速度比其他架构快 200 倍,因为大多数现有架构都使用昂贵的采样技术以及计算量大的后处理和预处理方法。

PointNet 计算效率高,但无法捕获每个点的上下文信息。 RandLA-Net 单次处理大规模 3D 点云,无需任何预处理/后处理步骤,例如体素化、块分区或图形构建。 RandLA-Net 仅依赖于网络内的随机采样,因此需要更少的内存和计算。 局部特征聚合器通过考虑局部空间关系和点特征来获得逐渐变大的感受野。 整个网络包含共享的多层感知器,不依赖于图构建和核化,因此是高效的。 不同的采样方法(例如最远点采样、逆密度重要性采样、基于生成器的采样)的计算效率非常高。 然而,它们可能会导致重要功能的丢失。 因此,RandLA-Net提出了本地聚合模块。 该模块并行应用于每个 3D 点,由三个神经单元组成。

  • LocSE:在给定点云的该模块中,所有特征都明确用于编码三维坐标信息。 它使用 K 最近邻算法来收集邻近点,然后执行相对点位置编码的步骤,这有助于网络学习局部特征。 最后,在点特征增强中,将编码后的相对点位置与对应的点特征连接起来,得到增强的特征向量。 该向量对局部几何结构进行编码。
  • Attentive Pooling:注意力池。对于给定的一组局部特征,设计一个共享函数来学习独特的注意力分数并聚合邻域点特征集中的使用信息。 共享的多层感知器后面是一个 softmax 函数。 然后将这些学习到的注意力分数相加。
  • Dilated Residual Block:由于随机采样不断对输入点云进行下采样,因此需要增加每个点的感受野。 使用 Resnet 架构和跳过连接,将多个 LocSE 和 Attentive Pooling Block 连接起来形成 Dilated Residual Block。 该块负责扩大感受野并扩大有效邻域。 图 4 给出了 RandLA-Net 与 PointNet++ 的输出比较。
    在这里插入图片描述

RandLA-NET 语义分割输出与 PointNet++ 的比较

4、PointCNN

PointCNN 能够利用网格中密集表示的数据的空间局部相关性,并提供从点云进行特征学习的框架。 PointCNN 从输入点学习 χ 变换,以促进与点相关的输入特征的加权以及将点排列成规范顺序。 PointCNN 的架构包含两种设计:

  • 分层卷积:在规则网格中,卷积被递归地应用于局部网格块,这通常会降低网格分辨率,同时增加通道数。 类似地,在点云中,χ-Conv 递归地应用于“投影”或“聚合”,将来自邻域的信息分解为较少的代表点,但每个点都具有更丰富的信息。
  • χ-Conv算子:χ-Conv算子在局部区域进行运算,将关联点和邻域点作为输入并与它们进行卷积。 将相邻点转换为代表点的局部坐标系,然后将这些局部坐标单独提升并与相关特征组合。

具有两个 χ-Conv 层的 PointCNN 将输入点转换为更少的特征表示,但每个特征表示都具有更丰富的特征。 然而,顶层 χ-Conv 层的训练样本数量迅速下降,导致训练效率低下。 为了解决这个问题,PointCNN 使用更密集的连接,其中更多的代表点保留在 χ-Conv 层中。 此外,为了在保持感受野增长率的同时保持网络的深度,采用了扩张卷积。 对于分割任务,需要高分辨率逐点输出,因此使用Conv-DeConv架构并遵循U-Net设计。

5、Recurrent Slice Networks

大多数其他语义分割网络不会对点云之间所需的依赖关系进行建模。 RSNet 的关键组件是轻量级本地依赖模块。 本地依赖模块非常高效,并且切片池化/反池化层的时间复杂度为 O(n) w.r.t(输入点数量)和 O(1) w.r.t(局部上下文分辨率)。

RSNet 将原始点云作为输入并输出每个点云的语义标签。 给定一组无序点和一个候选标签集,RSNet 的任务是为每个点分配一个语义标签。 输入和输出特征提取块用于独立的特征生成。 中间是本地依赖模块。 输入特征块消耗输入点并产生特征,输出特征块将处理后的特征作为输入并为每个点生成最终预测。 两个块都使用一系列多个 1 x 1 卷积层来为每个点生成独立的特征表示。

局部依赖模块是新颖的切片池化层、双向递归神经网络(RNN)层和切片反池化层的组合。 通过首先将无序点投影为有序特征,然后应用传统的端到端学习算法来解决局部上下文问题。 该投影是通过新颖的切片池层实现的。 在这一层中,输入是无序点的特征,输出是聚合特征的有序序列。

接下来,RNN 应用于此序列中的模型依赖关系。 最后,切片反池化层将序列中的特征分配回点。 该图给出了RSNets的详细架构。 RSNet 在三个广泛使用的基准测试中被证明超越了以前最先进的方法,同时需要更少的推理时间和内存。
在这里插入图片描述

RSNet架构

6、DGCNN

DGCNN 是一种 EdgeConv,适用于点云上基于 CNN 的高级任务,包括分类和分割。

EdgeConv 作用于网络每一层动态计算的图。 它捕获局部几何结构,同时保持排列不变性。 EdgeConv 不是直接从嵌入生成点特征,而是生成描述点与其邻居之间关系的边缘特征。 EdgeConv 被设计为对邻居的顺序不变,因此是排列不变的。 由于 EdgeConv 构造局部图并学习边缘的嵌入,因此该模型能够对欧几里得空间和语义空间中的点进行分组。

DGCNN 不像 PointNet 那样处理单个点,而是通过构建局部邻域图并在连接相邻点对的边缘上应用类似卷积的操作来利用局部几何结构。 边缘卷积(EdgeConv)具有介于平移不变性和非局部性之间的属性。

与图 CNN 不同,DGCNN 的图不是固定的,而是在网络的每一层之后动态更新。 也就是说,一个点的 k 个近邻集在网络的层与层之间发生变化,并且是根据嵌入序列计算出来的。 DGCNN 可以执行分类和分割任务。 分类模型以 n 个点作为输入,为 EdgeConv 层的每个点计算大小为 k 的边缘特征集,并聚合每个集中的特征以计算相应点的 EdgeConv 响应。

最后一个 EdgeConv 层的输出特征被全局聚合以形成 1D 全局描述符,用于生成 cc 类的分类分数。 分割模型通过连接每个点的一维全局描述符和所有 EdgeConv 输出(用作局部描述符)来扩展分类模型。 它输出 p 个语义标签的每点分类分数。 该网络包含两个块:

  • 点云变换块:该块旨在通过应用估计的 3 × 3 矩阵将输入点集与规范空间对齐。 为了估计 3 × 3 矩阵,使用连接每个点的坐标及其 k 个相邻点之间的坐标差的张量。
  • EdgeConv块:该块将形状为n×f的张量作为输入,通过应用具有层神经元数量的多层感知器(MLP)来计算每个点的边缘特征,并生成形状为n×an的张量 在相邻边缘特征之间进行池化之后。 DGCNN 架构可以轻松地按原样合并到现有的管道中,用于基于点云的图形、学习和视觉。
    在这里插入图片描述

DGCNN架构

7、总结和定量比较

下表展示了对 3 个公开数据集 S3DIS、Semantic3D、ScanNet(v2) 和 Sem 的结果的定量分析。 KITTI使用评价指标OA、mIOU。
在这里插入图片描述


原文链接:3D点云语义分割综述 — BimAnt

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

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

相关文章

【Vue3】v-model

v-model 基本用法 prop: modelValue 事件&#xff1a;update:modelValue <!-- App.vue --><template><div><h1>我是父组件</h1><div>isShow: {{ isShow }}</div><div><button click"isShow !isShow">开关&…

nodejs+vue大学食堂订餐系统elementui

可以查看会员信息&#xff0c;录入新的会员信息&#xff0c;对会员的信息进行管理。 网站管理模块对整个网站中的信息进行管理&#xff0c;可以查看会员留在留言栏中的信息&#xff0c;设置网站中的参数等。用户管理模块主要实现用户添加、用户修改、用户删除等功能。 近年来&…

Oracle实现主键字段自增

Oracle实现主键自增有4种方式&#xff1a; Identity Columns新特性自增&#xff08;Oracle版本≥12c&#xff09;创建自增序列&#xff0c;创建表时&#xff0c;给主键字段默认使用自增序列创建自增序列&#xff0c;使用触发器使主键自增创建自增序列&#xff0c;插入语句&…

MySQL MHA 高可用

目录 1 MySQL MHA 1.1 什么是 MHA 1.2 MHA 的组成 1.3 MHA 的特点 2 搭建 MySQL MHA 2.1 Master、Slave1、Slave2 节点上安装 mysql5.7 2.2 修改 Master、Slave1、Slave2 节点的主机名 2.3 修改 Master、Slave1、Slave2 节点的 Mysql主配置文件/etc/my.cnf 2.4 在 Mast…

图像采集卡在应用程序的重要性概述

达到最大吞吐量是工业和工厂自动化的关键标准之一。提高传感器分辨率和帧速率有助于实现目标&#xff0c;但会限制带宽&#xff0c;并带来新的传输问题。图像采集卡是将相机连接到PC的最方便、最可靠的方式&#xff0c;在工业环境中使用图像采集卡为高速应用带来了特定的好处&a…

[C++ 网络协议] 异步通知I/O模型

1.什么是异步通知I/O模型 如图是同步I/O函数的调用时间流&#xff1a; 如图是异步I/O函数的调用时间流&#xff1a; 可以看出&#xff0c;同异步的差别主要是在时间流上的不一致。select属于同步I/O模型。epoll不确定是不是属于异步I/O模型&#xff0c;这个在概念上有些混乱&a…

【深度学习】【Opencv】Python/C++调用onnx模型【基础】

【深度学习】【Opencv】python/C调用onnx模型【基础】 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【Opencv】python/C调用onnx模型【基础】前言Python版本OpenCVWindows平台安装OpenCVopencv调用onnx模型 C版本OpenCVWindows平…

spring bean实例化过程及顺序

spring bean的初始化从doCreateBean方法开始&#xff0c;依次会调用下面三个方法执行bean的初始化。大部分方法都在AbstractAutowireCapableBeanFactory类中。 实例化 createBeanInstance()方法根据BeanDef获取bean对应的class通过反射调用构造函数进行bean的实例化。 这里会…

视频汇聚平台EasyCVR从一分屏切换到四分屏后加载记录显示黑屏该如何解决?

视频汇聚/视频云存储/集中存储/视频监控管理平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;实现视频资源的鉴权管理、按需调阅、全网分发、云存储、智能分析等&#xff0c;视频智能分析平台EasyCVR融合性强、开放度…

基于STM32+华为云IOT设计的智能门禁系统

一、项目介绍 智能门禁系统是一种应用物联网技术的智能化安防系统&#xff0c;提供安全高效的门禁管理和远程监控功能。传统的门禁系统通常使用磁卡、密码或钥匙等方式进行开锁&#xff0c;但存在易丢失、易复制、操作繁琐等问题。为了解决这些问题&#xff0c;并提高门禁安全…

Spring学习笔记13 Spring对事务的支持

Spring学习笔记12 面向切面编程AOP-CSDN博客 什么是事务:在一个业务流程当中,通常需要多条DML(insert delete update)语句共同联合才能完成,这多条DML语句必须同时成功,或者同时失败,这样才能保证数据的安全. 多条DML要么同时成功,要么同时失败,叫做事务(Transaction) 事务四…

ARM IIC总线实现温湿传感器

IIC.h #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h"/* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4* I2C1_SCL ---> PF14* I2C1_SDA ---> PF15** */#define SET_SDA_OUT do{G…

机器人过程自动化(RPA)入门 3. 顺序、流程图和控制流程

到目前为止&#xff0c;我们已经了解了RPA是什么&#xff0c;并且我们已经看到了通过记录任务的活动并运行它来训练UiPath机器人是多么简单。使用记录器的UiPath可以很容易地自动化日常任务。在我们开始自动化复杂的任务之前&#xff0c;让我们学习如何控制从一个到另一个的活动…

Linux命令之chattr命令

一、chattr命令简介 chattr命令用于更改文件或目录的属性&#xff0c;包括不可修改属性、同步属性、追加属性、无尽属性、压缩属性、无尽属性、不可删除属性等。chattr命令只能由超级用户或文件的所有者使用。 二、chattr命令使用示例 1、给文件设置版本 -v参数设置版本信息只…

12KM02E-V0002 3EGM030300R0002 模块化和加固的边缘计算加速

12KM02E-V0002 3EGM030300R0002 模块化和加固的边缘计算加速 随着边缘人工智能解决方案的兴起&#xff0c;对实时洞察和自主决策的需求显著增长。这也带来了对变革性技术的高度需求&#xff0c;这些技术可以在坚固的边缘支持和提供最佳性能。为了应对技术革命&#xff0c;Prem…

linux使用操作[3]

文章目录 版权声明环境变量$符号自行设置环境变量 上传、下载rz、sz命令 压缩、解压tar命令压缩tar解压zip 命令压缩文件unzip 命令解压文件 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明&#xff0c;所有版权属于黑马程序员或相关权利人…

了解MES:提升制造业的效率与竞争力

今天我将和大家分享关于MES&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;的知识。随着制造业的发展和变革&#xff0c;MES作为一个关键的信息技术工具&#xff0c;已经成为许多企业提升效率和竞争力的重要策略之一。 MES的定义与作用 MES是…

Redis集群架构搭建——主从、哨兵、集群

上一篇文章Ubuntu上通过源码方式安装Redis已经介绍了如何安装redis&#xff0c;在这篇文章中&#xff0c;将会教大家搭建Redis的几种高可用的架构&#xff1a;主从架构、哨兵集群、Cluster集群。 本篇文章使用的redis版本为6.2.13&#xff0c;不同版本的配置可能有略微的区别&a…

HTTP代理SSL连接:保障网络安全的重要协议

HTTP代理SSL连接是一种网络安全协议&#xff0c;它结合了HTTP代理和SSL/TLS协议&#xff0c;用于在客户端和服务器之间建立加密通信通道。HTTP代理SSL连接可以保护数据在传输过程中不被窃听、篡改或伪造&#xff0c;从而确保数据的完整性、保密性和可靠性。在本文中&#xff0c…

目前很火的养猫微信小程序源码带流量主+搭建教程

目前很火的养猫微信小程序源码带流量主搭建教程。 搭建教程 进入小程序我们下载开发者工具 开发者工具安装好了 我们就把前端源码导入进开发者工具中 这里的APPID我们填写自己的小程序APPID 修改siteinfo.js里的uniacid和acid 这两个ID在刚才后端添加的小程序那里看 在把…