点云入门知识

点云的处理任务
在这里插入图片描述
场景语义分割
在这里插入图片描述
物体的三维表达方法(3D representations):
在这里插入图片描述
点云:是由物体表面上许多点数据来表征这个物体。最接近原始传感器数据,且具有丰富的几何信息。
Mesh:用三角形面片和正方形面片拼成一个物体。
Volumetric:一种栅格化的表征方法。
Projected View:通过图片来不同的角度来构成的一个立体的兔子。(附有RGB颜色信息和D深度信息)。

点云数据的获取方法:
在这里插入图片描述

(1)可以通过激光雷达扫描所得到;

(2)通过摄影的方法,获取RGB图像,再通过一些方法获取深度信息。最后通过透视即可反推出空间中的一些点云数据。
Depth Sensor(带有深度传感器的摄像头)这种相对图中其他方法更为接近原始传感器数据。过去还需要经过点云对准、去噪等处理。
比如:较为先进的,可以通过多个摄像头进行倾斜摄影来构造点云数据。
点云一般具有的基本信息:位置信息三维坐标:(x,y,z),颜色信息。
另外还可以通过别的方法来获取:强度信息(intensity)、法向量的信息等。
在这里插入图片描述
严格来说呢,RGB+D这种结合,只能算为2.5D。
在这里插入图片描述

点云数据处理的挑战:
(1)不规则:密集和稀疏的区域不规则。通常激光雷达获取的数据,近密远疏。
(2)非结构化。
(3)无序的。这就带来置换不变性:从几何上来说,这个点云的顺序是没有关系的,不同的点排不同的序还是同一个点云。
在这里插入图片描述

在这里插入图片描述
对于点云的处理:
(1)结构化表示学习:
1.1基于体素:将非结构化点云数据,转换为右边的很多小栅格所表示的表达方式来处理。
1.2基于多视角:将点云数据通过各个角度来进行投影,得到一个二维视角的一个图像。后续通过比如:CNN进行处理。
在这里插入图片描述
(2)深度学习直接在原始点云数据上进行处理:
PointNet–直接处理点云数据的深度学习技术的开山之作
是一个可以完成多种任务的统一框架:
分类、部件分割、场景的语义分割
在这里插入图片描述
2.1基于点的方法:PointNet、PointNet++
PointNet(没有考虑局部的上下文信息):就是对输入的点进行share的多层感知机MLP处理后,经过最大池化,来得到点云的特征。
PointNet++:通过Sampling采样,然后Grouping后,来获得局部信息,以提升性能。
在这里插入图片描述
(3)基于卷积的方法:
在这里插入图片描述
(4)基于图的方法
在这里插入图片描述
对于3D点云的一个深度学习方法的分类:
在这里插入图片描述
以前的一些相关工作:
在这里插入图片描述
在这里插入图片描述
PointNet原理
挑战:
在这里插入图片描述
(1)输入的点云是无序的点的集合;
在这里插入图片描述
这里有一个点云数据:N个无序的点,每个点表示为D维向量。最简单的就是x,y,z三维坐标,法向量,颜色,强度信息(总之可以表达为一个矢量)
这个点的顺序的集合表示,在改变顺序后,应该还是表示同样的集合。
也就是说对于这种置换、排列应该有同样的结果,难么,什么样的处理能够做到这种置换不变性呢?
对称函数是可以做到这一点的,(就是改变函数中x1到xn的排列顺序后,输出不受影响)
求最大值函数是不是和排列顺序无关呢?求和函数也是啊。那么我们就可以通过神经网络构造这样的对称函数了。
在这里插入图片描述
构造复合函数:每个点都经过h这个函数(共享函数)(可以用MLP)进行升维变换,然后经过一个g函数(对称函数)(可以用最大池化maxpooling),比如求最大值,在经过伽马函数,得到特征。这个特征就可以用来分割、分类等。
在这里插入图片描述
这里只要g函数是对称的,整个复合函数都是对称的。
但是这里的maxpooling是求每个维度山的最大值,会丢失一些数据点的信息;所以可以使用MLP进行升维变换(每个点单独做MLP,但是MLP的参数是共享的),高维空间里基本信息就会被保留下来。再经过maxpooling,就会得到全局特征(基本上会反映出原来点云数据的基本特征征)。
在这里插入图片描述

(2)对于几何变换应该有不变的特性;比如下图中的兔子有不同的视角,但是经过PoinNet后都应该分类为一个兔子。就是说这种几何变换对分类应该不会产生影响。
对于这个点,做的各种变换,最终的结果都不应有不同。设计一个变换的网络来对输入进行对准,(其实就是把点云旋转到一个角度,来更好的进行分类等。)比如,飞机旋转到一个更合适的角度,你会看的更清楚,让物体的特征更加鲜明表示出来。
在这里插入图片描述
其实对输入的对准是通过矩阵乘法来实现的:
在这里插入图片描述
那么对于MLP升维得到的特征,也可以做一个对特征空间的对准
在这里插入图片描述
PointNet分类网络的结构:
最终输出的K,就是对于分类中的每个类别的得分值。
在这里插入图片描述
而对于分割网络,有一些变化:
分割需要对每一个点都要做分类,当我们最后得到一个全局特征后(这个其实已经丢失了每个点的基本信息了),我们对每个点进行分类的话,需要每个点的特征,所以这里进行了一个拼接操作,
最终网络的输出是nXm,还是n个点,m表示每个类别的得分情况。
在这里插入图片描述
PointNet++原理
是借鉴了多层神经网络的思想,可以进行层次化的多级别学习。
就和CNN类似,不同感受野下的特征学习,然后进行拼接,得到多尺度特征。
PointNet要么就是MLP对所有点学习,要么就是maxpooling对一个点,就丢失了每个点的局部上下文信息(也就是每个点和周围的点的关系)
在这里插入图片描述
思想:对局部区域应用PointNet(多次迭代式):
多级别学习,保持旋转不变性、置换不变性。
(1)多级别学习
多个点组成了字母“A”形状,选择一个点(红色点)作为“中心点”,画一个圈,圈里面的点作为一个组,接着对这个点应用给PointNet进行特征提取。就可以学到这个局部小区域的全局特征。在这里插入图片描述
这个小区域可以是多个且可以重叠:
在这里插入图片描述
这里的确定centroid中心点就叫:Sampling采样。
确定以后,以centroid为中心选取局部的点就叫:Grouping分组。
最后对每个小分组应用PointNet进行特征学习。就得到最终小方块组成的点了。这些方块点就具有局部上下文信息特征了。
然后还可以接着小方块再次进行centroid的确定,再Grouping,再应用PointNet。就完成了多级别的特征学习了。
Set Abstraction = Sampling + Grouping + PointNet。
在这里插入图片描述
Set Abstraction:
(1)Sampling :可以均匀采样;相较于随机采样,最远点采样可以更好的覆盖采样空间。
选取距离这个点集合最远的那个点。
在这里插入图片描述
(2)Grouping :
可以利用机器学习K-means。
也可以利用球查询。以centroid为中心,按照半径(三维空间中)来找。可以保证固定区域的尺寸,让这个局部特征在整个空间中更具通用性。
在这里插入图片描述
PointNet++的层次化特征学习结构:
经过两次Set Abstraction,就得到一个全局化特征了。可以用来做分类;
分割的话,用了一个插值,多级别学习,点是逐渐变得稀疏的,分割是需要对原始点云数据中的每个点做分类,这样的话特征是不够的,做一个插值让点数增加;类似于RGB分割的编码(下采样)与解码(上采样)操作。
在这里插入图片描述
插值方式,其实就是基于距离:
在这里插入图片描述
非均匀采样密度:
获取点云数据的时候,通常会出现近密远疏的现象:
会影响层次化特征学习,分组半径的选择就需要进行考量,那么对于密集点和稀疏点就不应该选取同样的半径进行分组。
在这里插入图片描述
点的密集程度会对网络产生性能影响:
在这里插入图片描述
处理方法:
(1)MSG:这是对于同一级别,选取不同的半径进行分组来提取局部特征,然后拼接不同区域得到的结果;

(2)MRG:在不同级别上,将第一次的Set Abstraction的结果作为下一级别的输入。将两次Set Abstraction的结果进行拼接。
在这里插入图片描述
网络结构中的一些表达方式:
除了MSG,还有SSG:
用了多个SA(Set Abstraction)(但是多个SA不做拼接),每个SA有不同的半径,整个物体的尺寸都被归一化(以中心点为原点,最远点的距离是1);
而MSG:
多个SA,每个SA有多个不同的半径,比如这里的SA(512,[0.1,0.2,0.4]),有0.1,0.2,0.4不同的半径,不同半径的局部特征要做拼接。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机语言vs指令vs中央处理器cpu

计算机中如何表示数据 在计算机中,所有数据和指令都是用二进制表示的,即0和1。这些0和1实际上是电压信号的高低电平,0通常表示低电平(如0伏特),1表示高电平(如5伏特)。 指令系统&a…

食品行业怎么用JSON群发短信

食品作为日常生活不可缺少的元素,市场需求是很稳定的,但是份额就那么多,商家都要来抢占的话,就需要运营推广各凭本事,市场运营中选择合适的推广方式,可以增加店铺销售额,很多实体店或商城都会建…

LLM应用开发-RAG系统评估与优化

前言 Hello,大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,在上一篇文章中,我们学习了如何基于LangChain构建RAG应用,并且通过Streamlit将这个RAG应用部署到了阿里云服务器;&am…

expandtabs()方法——tab符号转为空格

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 expandtabs()方法把字符串中的tab(\t)符号转为空格,tab(\t)符号默认的空格数是…

软考初级网络管理员__操作系统单选题

1.在Windows资源管理器中,假设已经选定文件,以下关于“复制”操作的叙述中,正确的有()。 按住Ctr键,拖至不同驱动器的图标上 按住AIt键,拖至不同驱动器的图标上 直接拖至不同驱动器的图标上 按住Shift键&#xff0…

普元EOS学习笔记-EOS8.3精简版安装

前言 普元EOS是优秀的高低开结合的企业应用软件开发框架。 普元:这是普元公司的名字,普元信息,上市公司哦,这里就不过多安利了。 EOS:普元公司的企业应用开发系统,开发语言是基于Java,技术框…

LLDP 基本原理

LLDP 简介 定义 LLDP(Link Layer Discovery Protocol,链路层发现协议)是 IEEE 802.1ab 中定义的第二层发现(Layer 2 Discovery)协议。 LLDP 提供了一种标准的链路层发现方式,可以将本端设备的主要能力、…

【51单片机入门】数码管原理

文章目录 前言共阴极与共阳极数码管多个数码管显示原理 总结 前言 在我们的日常生活中,数码管被广泛应用于各种电子设备中,如电子表、计时器、电子钟等。数码管的主要功能是显示数字和一些特殊字符。在这篇文章中,我们将探讨数码管的工作原理…

【详细】CNN中的卷积计算是什么-实例讲解

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、 CNN的基础卷积计算1.1.一个例子了解CNN的卷积计算是什么1.2.卷积层的生物意义 二、卷积的拓展:多输入通道与多输出通道2.1.多输入通道卷积2.2.多输出通道卷积 三、卷积的实现3.1.pytorch实现卷积…

助农扶贫网站

摘要:随着信息科技的快速发展和互联网的普及,信息技术在助力农业发展、促进农村振兴以及扶贫工作中发挥着越来越重要的作用。本文基于Spring Boot框架和Vue.js前端开发技术,设计完成了一个助农扶贫电商网站。网站提供便捷的农产品信息发布、农…

【验收支撑】项目验收计划书(Word原件)

软件验收相关的文档通常包括以下,这些文档在软件项目的不同阶段和验收过程中起着关键作用: 1、概要设计说明书: 描述了软件系统的整体架构、主要模块及其相互关系。 2、详细设计说明书: 提供了软件系统中各个模块的详细设计信息&a…

确保家电安全无忧:可燃气体报警器检验的重要性与必要性

随着家电行业的快速发展,安全问题已成为消费者关注的焦点。 可燃气体报警器作为一种重要的安全装置,在保障家庭安全中扮演着至关重要的角色。它能够实时监测室内可燃气体浓度,一旦超过预设的安全阈值,便会发出警报,提…

【Linux】服务器被work32病毒入侵CPU占用99%

文章目录 一、问题发现二、问题解决2.1 清楚病毒2.2 开启防火墙2.3 修改SSH端口2.4 仅使用凭据登录(可选) 一、问题发现 我的一台海外服务器,一直只运行一项服务(你懂的),但是前不久我发现CPU占用99%。没在…

simulink开发stm32,使用中断模块,无法产生中断,其中包括使用timer模块,以及ADC都无法产生中断,需要注意的地方

1,其中包括使用timer模块,以及ADC都无法产生中断,需要注意的地方 原来是需要在配置文件里开启一下timer的中断,其他模块自动加载ioc就可以了,这个timer需要注意力,需要自己勾选一下 如下图: 看…

【嵌入式操作系统(Linux篇)】实验期末复习(1)

以下是关于嵌入式操作系统(Linux篇)的实验汇总,大概率都是会考的 特别是shell程序和文件IO的操作 嵌入式操作系统实验小结—涉及期末大题 (一)Linux操作系统的使用实验 1、认识Linux操作系统的目录结构 请进入自己…

一个开源的、独立的、可自托管的评论系统,专为现代Web平台设计

大家好,今天给大家分享的是一个开源的、独立的、可自托管的评论系统,专为现代Web平台设计。 Remark42是一个自托管的、轻量级的、简单的(但功能强大的)评论引擎,它不会监视用户。它可以嵌入到博客、文章或任何其他读者…

如何知道docker谁占用的显卡的显存?

文章目录 python环境安装nvidia-htop查看pid加一个追踪总结一下【找到容器创建时间】使用说明示例 再总结一下【用PID找到容器创建时间,从而找到谁创建的】使用说明示例 python环境安装nvidia-htop nvidia-htop是一个看详细的工具。 pip3 install nvidia-htop查看…

Qt:4.信号和槽

目录 1.信号源、信号和槽: 2.Qt类的继承关系: 3.自定义槽函数: 4.第一种信号和槽的连接的方法: 5.第二种信号和槽的连接的方法: 6.自定义信号: 7.发射信号: 8.信号和槽的传参:…

第7章_低成本 Modbus 传感器的实现

文章目录 第7章 低成本 Modbus 传感器的实现7.1 硬件资源介绍与接线7.2 开发环境搭建7.3 创建与体验第 1 个工程7.3.1 创建工程7.3.2 配置调试器7.3.3 配置 GPIO 操作 LED 7.4 UART 编程7.4.1 使用 STM32CubeMX 进行配置1.UART12.配置 RS485方向引脚 7.4.2 封装 UART7.4.3 上机…

已解决javax.security.auth.login.LoginException:登录失败的正确解决方法,亲测有效!!!

已解决javax.security.auth.login.LoginException:登录失败的正确解决方法,亲测有效!!! 目录 问题分析 出现问题的场景 报错原因 解决思路 解决方法 1. 检查用户名和密码 用户名和密码验证 2. 验证配置文件 …