点云入门知识

点云的处理任务
在这里插入图片描述
场景语义分割
在这里插入图片描述
物体的三维表达方法(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.mzph.cn/bicheng/37119.shtml

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

相关文章

【安全开发】内网扫描器

文章目录 前言现实现的功能较少后序开发会逐步加入简单漏洞探探测和代理功能。 一、开发过程1.项目结构2.main.go3.core模块3.1 scanner.go3.2 service.go 4.bruteforc4.1 bruteforce.go 二、使用步骤 前言 为什么要写这个? fscna被杀的概率太高(哪天二…

十步学习法,赋能程序员

大家好,我是码农先森。 引言 最近看了《软技能:代码之外的生存指南》这本书,对其中的 “十步学习法”。 有一些感触,所以将其中的内容记录并总结了下来,分享给大家。 程序员在学习成长的过程中,除了关注…

【深度学习】单机多卡 | DataParallel将计算任务在多个 GPU 上并行执行,可以在多个 GPU 上分摊工作负载,从而加快训练速度

【深度学习】单机多卡 | DataParallel将计算任务在多个 GPU 上并行执行,可以在多个 GPU 上分摊工作负载,从而加快训练速度 写在最前面DataParallel (DP) 简介使用 DataParallel 的场景使用 DataParallel 的基本步骤 代码部分train.py简单的代码示例代码解…

可用的微信小程序抓包方式(Charles + bp)

扫码领资料 获网安教程 前言 接到对公司小程序进行渗透的任务,尝试了网上几种对小程序抓包的方式(BurpProxifier、Burp安卓模拟器等)都无法完成抓包,可能已经失效,结合不同的文章尝试了bpCharles,成功抓包…

diffusion model(十八):diffusion model中negative prompt的工作机制

info个人博客主页http://myhz0606.com/article/ncsn 前置阅读: DDPM: http://myhz0606.com/article/ddpm classifier-guided:http://myhz0606.com/article/guided classifier-free guided:http://myhz0606.com/article/classi…

如何评估CRM客户系统的功能是否满足助贷机构的需求?

评估 CRM 客户系统的功能是否满足助贷机构的需求,可以从以下几个方面入手: 1. 客户信息管理 - 检查系统能否全面、准确地记录客户的基本信息,如个人身份、财务状况、贷款需求等。 - 确认是否支持多维度的客户分类和标签功能,以…

Python:探索高效、智能的指纹识别技术(简单易懂)

目录 概括 导入库 函数一 参数: 函数二 函数三 主函数 运行结果 src: model_base 7.bmp ​编辑 总结 概括 指纹识别是一种基于人体生物特征的身份验证技术。它通过捕捉和分析手指上的独特纹路和细节特征,实现高准确度的身份识别。…

【工具测评】ONLYOFFICE8.1版本桌面编辑器测评:好用!

随着远程工作的普及和数字化办公的发展,越来越多的人开始寻找功能强大、易于使用的办公软件。在这个背景下,ONLYOFFICE 8.1应运而生,成为许多用户的新选择。ONLYOFFICE 8.1是一款办公套件软件,提供文档处理、电子表格和幻灯片制作…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-41目标检测数据集

41目标检测数据集 import os import pandas as pd import torch import torchvision import matplotlib.pylab as plt from d2l import torch as d2l# 数据集下载链接 # http://d2l-data.s3-accelerate.amazonaws.com/banana-detection.zip# 读取数据集 #save def read_data_b…

右键新建没有TXT文本文档的解决办法

电脑右键新建,发现没有txt了,我查网上办法都有点复杂,诸如注册表的,但是其实很简单,重启windows资源管理器就可以了。 点击重新启动,之后新建就有txt文档了。

C++20中的Feature Test Mocros

C20定义了一组预处理器宏,用于测试各种语言和库的feature。 Feature Test Mocros(特性测试宏)是C20中引入的一种强大机制,用于应对兼容性问题。Feature Test Mocros作为预处理器指令(preprocessor directives)出现,它使你能够在编译过程中仔细…

流水线作业模拟程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 流水线作业模拟 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private int Count 0;private bool IsStop false;private void uiLight1_Click(object sender, EventArgs e…

[MYSQL] MYSQL库的操作

前言 本文主要介绍MYSQL里 库 的操作 请注意 : 在MYSQL中,命令行是不区分大小写的 1.创建库 create database [if not exists] database_name [charsetutf8 collateutf8_general_ci] ...] create database 是命名语法,不可省略[if not exists] 如果不存在创建,如果存在跳过…

最新Node.js安装及配置详细教程

文章目录 下载Node.js安装Node.js配置Node.js1、修改npm包的全局安装路径和缓存路径2、环境变量设置3、镜像源配置4、安装其他包管理工具 下载Node.js 下载:https://nodejs.org/en/download/prebuilt-installer,下载LTS版本的,LTS(Long Time…

基于多模态知识图谱的多模态推理-MR-MKG

MR-MKG论文中提出了一种新的多模态推理方法,即利用多模态知识图(Multimodal Knowledge Graph, MMKG)进行多模态推理的方法。这种方法旨在通过从MMKG中学习,扩展大型语言模型(LLMs)的多模态知识。 1 三个模…

面对.rmallox勒索病毒:如何有效防范及应对

引言: 在当今数字化社会,网络安全问题日益严重,勒索病毒成为企业和个人不可忽视的威胁之一。最近出现的.rmallox勒索病毒更是给全球各地的用户带来了严重的数据安全问题。本文将探讨.rmallox勒索病毒的特点、感染方式及应对策略,…

探索CSS布局:创建一个居中的内嵌方块示例

在网页设计中,布局是至关重要的部分。CSS提供了多种方式来实现元素的布局,包括居中对齐、外边距、内边距等。本文将通过一个简单的示例,介绍如何使用CSS来创建一个居中的内嵌方块,并探讨其背后的布局原理。 HTML 结构 首先&…

java服务MultipartFile入参测试

项目中经常会涉及到文件的上传下载以及导入相关的功能,今天针对MultipartFile类型文档导入写一下如何测试。 文档导入接口完成,使用postman测试,使用POST方法,进入Body模块,选择form-data选项,key的框体右侧…

微服务部署上线过程总结

目录 一、找到适合自己的部署方式 二、开始部署,先安装需要的环境 2.1 梳理一下都需要安装什么软件 2.2 配置数据库环境 2.3 配置redis 2.4 配置nacos 2.5 配置rabbitmq 2.6 配置docker环境 三、环境配置好了,开始部署后端 3.1 梳理后端都…

韩顺平0基础学java——第32天

p638-652 Properties类 list:这个设备可以是一个流对象。 修改:如果该文件里没有Key,那即是创建,如果是有那就是修改。 继续坦克大战 防止敌人坦克重叠 满脑子都是今汐,亚达哟😭😭&#x1f6…