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

news2024/11/28 17:44:17

由于增强现实/虚拟现实的发展及其在计算机视觉、自动驾驶和机器人领域的广泛应用,点云学习最近引起了人们的关注。 深度学习已成功用于解决 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.coloradmin.cn/o/1041882.html

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

相关文章

模仿快猫猫App实现的微信小程序,前端页面基本完成

概述 模仿快猫猫App实现的微信小程序,前端页面基本完成,通过微信开发这工具可以直接跑,代码没有问题,首页数据已经模拟,上拉加载等。 详细 通过小程序模拟快猫猫App的前端页面。代码简单易懂,没有什么高…

Mock.js介绍和使用与首页导航栏左侧菜单搭建

1.1 mockjs介绍 Mock.js是一个用于生成随机数据和模拟接口请求的JavaScript库。它可以帮助开发人员在前端开发过程中模拟后端接口的返回数据,以便进行前端页面的开发和测试。 Mock.js有两个重要的特性风靡前端: 数据类型丰富 Mock.js提供了一套简单易用的API&#x…

蓝牙手表出口欧盟CE认证常规测试项目和流程

蓝牙手表是一种带蓝牙功能的手表,是多功能智能通讯手表的一种,通过手表带有的蓝牙功能,可以和蓝牙手机配对连接后使用。现如今这种产品在生活中收到了许多年轻人的欢迎,一般这类产品要出口欧洲则必须要办理CE认证。 蓝牙手表是无线产品,所以需要办理CE-R…

哈希表的模拟实现

unordered_set: 接口函数: 对应的应用: unrodered_map: 对应的函数接口: 对应的应用: 比较set和unordered_set的效率: 可以看到各个方面hashset是优于set的。 哈希表的模拟实现: 哈希表的实现分为两种&…

Python大数据之PySpark(一)SparkBase

文章目录 SparkBase环境基础Spark框架概述Spark环境搭建-Local SparkBase环境基础 Spark学习方法:不断重复,28原则(使用80%时间完成20%重要内容) Spark框架概述 Spark风雨十年s 2012年Hadoop1.x出现,里程碑意义2013年Hadoop2.x出现&#…

html播放视频

文章目录 <embed>标签<object> 标签<video>标签<video>浏览器支持视频格式与浏览器的支持DOM元素提供的方法、属性和事件 兼容多版本的浏览器自定义控制栏 <embed>标签 <embed> 标签的作用是在 HTML 页面中嵌入多媒体元素。 前提&#xf…

直播软件App开发趋势:2023年最值得关注的五大技术突破

直播软件App开发正处于快速发展的阶段&#xff0c;不断涌现出新的技术突破和创新。本文将向您介绍2023年直播软件App开发领域最值得关注的五大技术突破&#xff0c;帮助开发者和行业从业者把握时代发展脉搏&#xff0c;实现更出色的直播体验。 技术突破一&#xff1a;实时AI强…

【数据结构-图】图介绍

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

【笔试强训选择题】Day48.习题(错题)解析

作者简介&#xff1a;大家好&#xff0c;我是未央&#xff1b; 博客首页&#xff1a;未央.303 系列专栏&#xff1a;笔试强训选择题 每日一句&#xff1a;人的一生&#xff0c;可以有所作为的时机只有一次&#xff0c;那就是现在&#xff01;&#xff01;&#xff01;&#xff…

WebGL绘制圆形的点

目录 前言 如何实现圆形的点&#xff1f; 片元着色器内置变量&#xff08;gl_FragCoord、gl_PointCoord&#xff09; gl_PointCoord的含义 示例程序&#xff08;RoundedPoint.js&#xff09; 代码详解 前言 本文将讨论示例程序RoundedPoint&#xff0c;该程序绘制了圆…

一款强大的ntfs磁盘读写工具Paragon NTFS 15破解版百度网盘下载

今天再给大家分享一款NTFS工具Paragon NTFS 15&#xff0c;Paragon NTFS 15破解版是目前的最新版&#xff0c;需要的赶快收藏&#xff0c;地址失效可以留言。 Paragon Ntfs For Mac 15下载&#xff1a;https://souurl.cn/s84CCB Crcak链接: https://pan.baidu.com/s/1c2Hx7QBE…

MySQL数据库基础知识要点总结

目录 前言 一.数据库构成 1.1 表 1.2 关系 1.3 索引 1.4 查询语言 1.5 数据库管理系统 二.数据类型 2.1 整数 2.2 浮点 2.3 日期与时间 2.4 字符串 三.约束条件 3.1 主键约束 3.2 唯一约束 3.3 外键约束 3.4 非空约束 3.5 默认值约束 总结 前言 数据库是…

Linux环境下安装jdk1.8并配置环境变量

JDK版本&#xff1a;1.8 Linux准备工作 1.在usr目录下创建一个java文件夹准备放置我们下载好的jdk安装包 // An highlighted block var foo bar;2 , 将下载好的安装包放到我们刚刚创建好的 /usr/java 目录下, 执行 命令解压安装包。 tar -zxvf jdk-8u221-linux-x64.tar.g…

open62541开发:添加sqlite3 历史数据库

历史数据库在OPCUA 应用中十分重要&#xff0c;例如OPCUA 网关和OPCUA 汇聚服务器中都需要历史数据库功能。但是open62541 协议栈中仅包含了基于内存的历史数据库&#xff0c;在实际应用中是不够的。本博文讨论open62541 中添加sqlite3 为基础的历史数据库若干问题。 借鉴 Gi…

【Python小练习】简单浮点矩阵乘法

前言 最近上《计算机控制系统》课&#xff0c;涉及许多矩阵运算&#xff08;乘法居多&#xff09;&#xff0c;觉得手算不过来&#xff0c;按计算器太慢&#xff0c;于是写一个Python小程序做做。 二、代码 import numpy as np from numpy import shapem int(input("…

3D点云数据集制作实录【LiDAR】

在过去的两年里&#xff0c;我一直在和机器人打交道。 今年早些时候&#xff0c;我不再只关注相机&#xff0c;而是决定开始使用激光雷达。 因此&#xff0c;经过大量研究后&#xff0c;我选择了 32 束 RoboSense 设备。 推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 …

ElasticSearch深度分页解决方案

文章目录 概要ElasticSearch介绍es分页方法es分页性能对比表方案对比 From/Size参数深度分页问题Scroll#性能对比向前翻页 总结个人思考 概要 好久没更新文章了&#xff0c;最近研究了一下es的深分页解决方案。和大家分享一下&#xff0c;祝大家国庆节快乐。 ElasticSearch介…

记一次 .NET 某拍摄监控软件 卡死分析

一&#xff1a;背景 1. 讲故事 今天本来想写一篇 非托管泄露 的生产事故分析&#xff0c;但想着昨天就上了一篇非托管文章&#xff0c;连着写也没什么意思&#xff0c;换个口味吧&#xff0c;刚好前些天有位朋友也找到我&#xff0c;说他们的拍摄监控软件卡死了&#xff0c;让…

Android Shape设置背景

设置背景时&#xff0c;经常这样 android:background“drawable/xxx” 。如果是纯色图片&#xff0c;可以考虑用 shape 替代。 shape 相比图片&#xff0c;减少资源占用&#xff0c;缩减APK体积。 开始使用。 <?xml version"1.0" encoding"utf-8"?…

【STM32单片机】u8g2智能风扇设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用STM32F103C8T6单片机控制器&#xff0c;使用按键、IIC OLED模块、DS18B20温度传感器、直流电机、红外遥控等。 主要功能&#xff1a; 初始化后进入温度显示界面&#xff0c;系统初始状态为手动…