点云分割报告整理(未完成版-每天写一点)

2024-06-12 00:36

本文主要是介绍点云分割报告整理(未完成版-每天写一点),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

体积占用网格表示对点进行体素化,然后使用3d卷积神经网络来学习体素级语义。由于点云的稀疏性,体素化效率低,为避免较高的计算成本而忽略了细节。此外,由于同一体素内的所有点都被赋予了相同的语义标签,因此精度受到限制。为了利用传统的那些2D分割框架,尝试将3D空间从多角度映射到二维空间,然后分割完成后再投影回去,然而,重新投影回3d空间也是一个重要的问题。

非结构化点云的 3d 语义分割存在的问题:

1.大规模点云数据

2.不规则形状

3.非均匀密度

Pointnet

PointNet是第一个直接处理原始点云的方法。只有全连接层和最大池化层,PointNet网络在推理速度上具有强大的领先优势,并且可以很容易地在CPU上并行化。

困难:

由于点云不是常规数据格式,通常将此类数据转换为规则的 3D 体素网格或图像集合,然后再用神经网络进行处理。数据表示转换使生成的数据过于庞大。

应对点云的无序性有三种方案:

方案1:排序

高维空间的排序,不可稳定

方案2:假如有N个点,N!种排列训练一个RNN。

2015年《Order Matters: Sequence to sequence for sets》证明RNN网络对序列的排序还是有要求的。

方案3:设计对称函数,因为输入顺序对于对称函数没有影响。比如:加法、乘法

PointNet使用的最大池化,是对称函数。

Pointnet的解决方法:

训练一个正交矩阵,将点云对齐

使用单个对称函数 max pooling

限制:

PointNet架构有两个限制将其性能限制在更大、更复杂的点云上。一方面,只集成了点特征和池化的全局特征,无法捕获相邻点所代表的局部结构。另一方面,首先将点云细分为小体积块,每个块都是独立预测的,没有任何连接。因此,点网的整体精度在复杂场景中受到限制。

PointNet++

PointNet 没有捕捉到由现场的度量空间点引起的局部结构,限制了其识别细粒度模式和对复杂场景的泛化能力。

Pointnet可以通过一组稀疏的关键点来总结输入点云,这些关键点大致对应可视化骨架。PointNet 对输入点的小扰动以及点插入(异常值)或删除(缺失数据)损坏具有高度鲁棒性。

点集通常以不同的密度进行采样,这导致在均匀密度上训练的网络的性能大大降低,我们提出了一种新的集合学习层来自适应地组合多个尺度的特征。

为了实现这一目标,提出了密度自适应点网层,当输入采样密度发生变化时,这些点网层可以学习组合来自不同尺度区域的特征。具有密度自适应点网层的分层网络称为pointnet++

PointNet++的设计必须解决两个问题:如何生成点集的划分,以及如何通过局部特征学习器抽象点集或局部特征。

2种方案:

(a)多尺度分组(MSG);(b)多分辨率分组(MRG)

PointSIFT

PointSIFT是在pointnet++的基础上改进的,引入了尺度不变特征变换。

八叉树

八叉树(Octree)的定义:若不为空树的话,树中任一节点的子节点恰好只会有八个,或零个,也就是子节点不会有08以外的数目。

八叉树在3D空间中,可以很快地知道物体在3D场景中的位置。

八叉树算法的算法实现简单,但大数据量点云数据下,其使用比较困难的是最小粒度(叶节点)的确定。

3D-RNN

为了捕捉局部特征,使用步长为1 的金字塔池化。

方式1步长固定、窗口大小不同

方式2 窗口大小固定,不同步长

采用双向RNN,具体来说,首先将点云沿两个水平方向(xy)细分为部分重叠的块。椅子通常在桌子附近,窗户通常在墙内。

这篇关于点云分割报告整理(未完成版-每天写一点)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052697

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

chart 完成拓扑图单节点拖拽不影响其他节点位置

就是做这种的功能,箭头原本是可以动态重复移动的,但不知道哪里问题导致没箭头了,然后补了个edgeSymbol: ['','arrow'], 字段,才增加了箭头。 拖拽某个节点,只有关联到的线条会跟着变动其他的节点位置不变。 参考 https://gallery.echartsjs.com/editor.html?c=x8Fgri22P9 https://echarts.baidu.com/exa

android的strings整理脚本

统一对String整理的工具,结构如下 代码 package com.owant.toollib;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.util.ArrayList;import java.util.List;import java.util

自动驾驶---Perception之Lidar点云3D检测

1 背景         Lidar点云技术的出现是基于摄影测量技术的发展、计算机及高新技术的推动以及全球定位系统和惯性导航系统的发展,使得通过激光束获取高精度的三维数据成为可能。随着技术的不断进步和应用领域的拓展,Lidar点云技术将在测绘、遥感、环境监测、机器人等领域发挥越来越重要的作用。         目前全球范围内纯视觉方案的车企主要包括特斯拉和集越,在达到同等性能的前提下,纯视觉方

IPython使用技巧整理

以下是一些常见且有用的IPython使用技巧,整理如下: 一、基本功能 1. 启动IPython:在终端输入`ipython`命令即可启动IPython环境。 2. 自动补全:使用`Tab`键进行变量和函数名的自动补全。例如,输入`pri`后按`Tab`键,会自动补全为`print`。 二、魔法命令(Magic Commands) 1. %timeit:用来计时小段代码的执行时间

关于CPU的一点知识

首先说一下,CPU是干啥的: CPU所负责的就是解释和运行最终转换成机器语言的程序内容 我们需要知道的CPU结构:重点需要关注寄存器 运算器 简单说就是负责运算从内存读取到寄存器中的数据,可以看作一个数据加工厂,就是对寄存器中的数据做运算,这些运算包含基本的算术和逻辑运算。 算术逻辑单元(ALU) 这个是运算器中重要的一个组成,主要负责的就是对数据的处理,从而实现对数据的算术和

芯片后端之 PT 使用 report_timing 产生报告如何阅读

今天,就PT常用的命令,做一个介绍,希望对大家以后的工作,起到帮助作用。 在PrimeTime中,使用report_timing -delay max命令生成此报告。switch -delay max表示定时报告用于设置(这是默认值)。 首先,我们整体看一下通过report_timing 运行之后,报告产生的整体样式。 pt_shell> report_timing -from start_

leetcode刷题(95)——416. 分割等和子集

给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11]. 示例 2: 输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子

android反馈Crash报告

此文章转载他人,担有所改动,,在全局获取异常有所改动 为什么需要反馈Crash报告?   做Android应用程序,要尽量避免程序Crash的发生。虽然说零Crash是程序员追逐的最终目标,但是现实的情况是,程序员只能尽量的减少Crash的发生,而几乎不可能完全杜绝Crash。也许,你认为你的应用的健壮性已经近乎完美,轻松的经受住了测试部门魔鬼般的考验,但是当你的应用发布到市