点云入门知识

news2024/11/26 9:31:29

点云的处理任务
在这里插入图片描述
场景语义分割
在这里插入图片描述
物体的三维表达方法(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不同的半径,不同半径的局部特征要做拼接。
在这里插入图片描述

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

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

相关文章

计算机人说学校-北京理工大学-计算机方向

1. 专长、特点、特色 北京理工大学(北理工)的计算机专业同样具有显著的优势和特点: 学术水平高:作为一所985高校,北理工在计算机科学与技术以及人工智能领域都有着较高的学术水平和教学资源。研究方向广泛&#xff1…

阿里云服务器数据库迁云: 数据从传统到云端的安全之旅(WordPress个人博客实战教学)

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 一、 开始实战1.2创建实验资源1.3重置云服务器ECS的登录密码(请记住密码)1.4 设置安全组端口1…

akamai指纹自由

最近项目的部分业务设计到了akamai的技术。也是第一次接触,于是网上搜了一下,相关的帖子和文章很多,在前人共享的资料的基础上,自己这几天终于完全弄通了。 先上结果 akmai的针对策略就2个,第一个是tls验证&#xff0…

【ElementPlus源码】Container 布局容器

文章目录 index.tsContainerheaderutilswithInstallwithNoopInstall hooksuseNamespace 单元测试 看源码时候做的笔记。如有错误请指出! 关于路径的省略,详见button:【ElementPlus源码】Button按钮-CSDN博客 index.ts 导入一堆组件&#xff…

(南京观海微电子)——三极管原理及应用区别

PNP与NPN三极管的原理与使用方法 三极管主要的功能是电流放大和开关作用。 三极管按材料分有两种:锗管和硅管。而每一种又有NPN和PNP两种结构形式,但使用最多的是硅NPN和PNP两种三极管,两者除了电源极性不同外,其工作原理都是相同…

编程开发不得不懂的世界协调时UTC的由来

在各种时间标准出现之前,各地都是根据太阳来进行计时的。把太阳连续2次经过地球同一位置所经历的时间间隔称为真太阳日,然后再把这个太阳日划分为更小的时间单位,例如中国古代使用日晷记录时间,把一个太阳日分为12个时辰。因为地球…

排序(冒泡排序、选择排序、插入排序、希尔排序)-->深度剖析(一)

欢迎来到我的Blog,点击关注哦💕 前言 排序是一种基本的数据处理操作,它涉及将一系列项目重新排列,以便按照指定的标准(通常是数值大小)进行排序。在C语言中,排序算法是用来对元素进行排序的一系…

竞赛选题 python的搜索引擎系统设计与实现

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 python的搜索引擎系统设计与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:5分创新点:3分 该项目较为新颖&#xff…

昇思25天学习打卡营第04天|数据集 Dataset

数据是深度学习的基础,高质量的数据输入将在整个深度神经网络中起到积极作用。MindSpore提供基于Pipeline的数据引擎,通过数据集(Dataset)和数据变换(Transforms)实现高效的数据预处理。其中Dataset是Pipel…

【机器学习】基于层次的聚类方法:理论与实践

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 基于层次的聚类方法:理论与实践引言1. 层次聚类基础1.1 概述1.2 距离…

decode()方法——解码字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 解码是将字节流转换成字符串(文本),其他编码格式转成unicode。在Python中提供了decode()方法&#xff0…

GS NVMe全闪存储通过XFS文件系统助力太空科研AI处理

用户是名列全球TOP 5的太空研究机构,专为各种卫星任务和应用开发有效载荷、仪器及天基系统,在通信、广播、导航、灾害监测、气象学、海洋学、环境监测,以及自然资源测量等方面发挥重要的作用,为探索月球、火星等天体做出了重大的贡…

pafination官网自制

1.pafination.js 参考element ui 中 prev表示上一页,next为下一页 // const itemsPerPage 10; // const totalItems 30; var itemsPerPage ; var totalItems ; let currentPage 1; var pagerCount5 // 设置最大页码按钮数 var totalPages Math.ceil(totalItem…

Flutter循序渐进==>封装、继承、多态、抽象类以及属性修改

导言 新学一门编程语言,最难以理解的莫过于类了。如果类没用,也就算了,它偏偏很有用,我们必须得掌握,不然怎么好意思说自己会面向对象编程呢? 抽象类(Abstract Class)在面向对象编程中扮演着…

前后端分离项目面试总结

一:是否登录状态 服务端登录的时候,给分配一个session用于存储数据,同时将sessionID返回给浏览器,浏览器通过cookie把sessionID存储起来,下次访问时携带上,服务端就可以通过sessionID来确定用户是否登录。 …

uview文本框组件计数count报错u--textarea

报错内容: [Vue warn]: Error in render: “TypeError: Cannot read property ‘length’ of null” found in —> at uni_modules/uview-ui/components/u-textarea/u-textarea.vue at uni_modules/uview-ui/components/u–textarea/u–textarea.vue mp.runtime.…

Flutter循序渐进==>基金管理APP首页

目录 查看版本 组件 组件源码学习 做个基金APP首页源代码 效果 查看版本 组件 组件的本质就是个类。 import package:flutter/material.dart;void main() {runApp(const OurFirstApp(),); } OurFirstApp()实例化,就是给runApp用的,runApp就是运行实…

Java的NIO体系

目录 NIO1、操作系统级别下的IO模型有哪些?2、Java语言下的IO模型有哪些?3、Java的NIO应用场景?相比于IO的优势在哪?4、Java的IO、NIO、AIO 操作文件读写5、NIO的核心类 :Buffer(缓冲区)、Channel&#xff…

用GPT-4纠错GPT-4 OpenAI推出CriticGPT模型

根据OpenAI周四(6月27日)发布的新闻稿,该公司新推出了一个基于GPT-4的模型——CriticGPT,用于捕获ChatGPT代码输出中的错误。CriticGPT的作用相当于让人们用GPT-4来查找GPT-4的错误。该模型可以对ChatGPT响应结果做出批评评论&…

Echarts地图实现:山东省报考人数

Echarts地图实现:山东省报考人数 效果预览 设计思路 数据可视化:选择地图作为数据展示的方式,可以直观地展示山东省不同城市的报考人数分布。交互性:通过ECharts的交互功能,如提示框(tooltip)…