基于RandLA-Net深度学习模型的激光点云语义分割
一、场景要素语义分割部分的文献阅读笔记
RandLA-Net是一种高效、轻量级的神经网络,其可直接逐点推理大规模点云的语义标签。RandLA-Net基于随机点采样获得了显著的计算和内存效率,并采用新的局部特征聚合模块有效地保留了几何细节,弥补了随机采样可能丢失关键特征的不足。其中,局部特征聚合器(Local Feature Aggregation,LFA)由局部空间编码、自适应注意力池化以及扩张残差块三个子模块组成。
局部特征聚合器的三个重要子模块:
- 局部空间编码(Local Spatial Encoding,LocSE)。 首先基于K最近邻算法找到各输入点的K个邻近点,然后逐输入点通过一个共享的多层感知机进行相对位置编码,继而进行特征堆叠和特征增强以获取每个输入点的邻域特征。局部空间编码单元显式地嵌入所有邻近点的空间三维坐标,这样可以明确地学习到输入点周围邻域的局部几何模式,从而有利于整个网络有效地学习复杂的局部结构。
- 自适应注意力池化(Attentive Pooling,AP)。首先将局部空间编码所提取到的邻域特征通过共享权重多层感知机和Softmax函数组合进行注意力得分计算,然后依据注意力分数对得到的局部特征进行加权求和以得到更为准确的特征向量组。
- 扩张残差块(Dilated Residual Block,DRB)。一个扩张残差块包含两次局部空间编码模块与自适应注意力池化模块组合,扩张残差块基于短接操作将输入特征和增强后的特征求和输出,其目的在于增加感受野、加快学习速度和持续提升模型精度。
RandLA-Net网络模型的随机采样结合了点概率标记的方法,点概率由距离和搜索权重计算,这样可以防止一个点被多次选中,也可以防止数量多的类别点被多次选中,而数量少的类别点很少被选中。同时,RandLA-Net网络模型在推理过程中会将输入点云进行下采样且记录原始点云与下采样后的最近邻关系,采用距离最近点标签预测一致的原则输出原始输入点云的预测结果,从而加快模型推理速度。
二、RandLA-Net点云语义分割项目代码逐行解析
项目环境配置:
操作系统:Ubuntu 20.04
Python解释器:Python 3.6(本实验中,若版本大于3.6则无法编译compile_op.sh文件)
CUDA版本:9.0
cuDNN版本:7.3.1
Tensorflow框架版本:1.11.0
配置顺序:CUDA/cuDNN -> tensorflow-1.11.0 -> 配置项目依赖及编译.sh文件
百度网盘链接:
https://pan.baidu.com/s/10hrjVJ3RUOlx_50OH2J2gw
模型测试结果可视化:
电力廊道场景应用下的文件结构说明:
① RandLA-Net-master\main_Power.py
该文件实现了Power类,该类主要完成数据集的划分(训练集、验证集和测试集)、生成输入数据流、数据预处理(数据增强、中心化等)等功能。
② RandLA-Net-master\RandLANet.py
该文件实现了Network类,该类主要完成模型超参数设置、模型推理结构、模型训练结构、模型精度评价结构等功能,包含了注意力池化(att_pooling)、近邻点坐标/特征聚合(gather_neighbour)、最近邻插值上采样(nearest_interpolation)、随机采样(random_sample)等编码模块。
③ RandLA-Net-master\tester_Power.py
该文件实现了ModelTester类,该类主要完成模型对测试数据的推理预测与存储对应预测结果点云。
④ RandLA-Net-master\helper_tool.py
该文件主要实现了ConfigPower类、DataProcessing类,二者实现模型训练超参数调试优化和数据预处理(点云数据网格下采样、KD树索引建立、原始点云与下采样后点云最近距离点索引存储)等功能函数。
⑤ RandLA-Net-master\helper_ply.py
该文件实现了.ply存储格式的点云数据读取和写入功能。
⑥ RandLA-Net-master\DataPreds_IOU.py
该文件实现了对点云预测结果的精度评价文件输出(.txt格式)以及预测点云标签三维空间分布数据生成。
⑦ RandLA-Net-master\utils\data_prepare_Power.py
该文件用于将S3DIS DataSet文件树数据集转换为.ply格式存储点云数据。该文件主要完成点云数据.ply格式转换、点云网格下采样、网格下采样后的KD树构建存储、存储原始所有点云在网格下采样点云中距离最近的点索引集合等功能,目的在于加快邻域点搜索和点云上采样还原。
⑧ RandLA-Net-master\data
该文件夹包含input_0.xxx、original_ply和Power三个文件夹。其中,Power文件夹存放S3DIS DataSet文件树结构的电力档段数据集,input_0.xxx存放网格下采样后的点云数据,original_ply存放转换为.ply格式存储的原始点云数据。
⑨ RandLA-Net-master\utils\meta
该文件夹包含anno_paths.txt和class_names.txt两个文件,anno_paths.txt文件存储电力档段的各要素点云集合文件夹名(如Area_0/Annotations),class_names.txt文件顺序存储要素类别名称。该文件夹用于点云类别标签转换赋值。
⑩ RandLA-Net-master\PowerTXT
存放由DataPreds_IOU.py文件生成的预测后三维点云类别标签空间分布数据和自定义精度评价文件(.txt格式)。
⑩① RandLA-Net-master\results\Log_2024-05-03_09-02-24\snapshots
存放模型的训练参数文件,其中checkpoint文件存放了多次保存的模型参数文件名称。
注意事项:
1、本百度网盘不包含任何点云数据,仅为项目代码;
2、电力档段激光点云数据文件与S3DIS Dataset文件树结构一致,具体的数据文件树结构转换代码详见基于PointNet / PointNet++深度学习模型的激光点云语义分割-CSDN博客;
3、由于点云采样的随机性与最近邻点标签上采样还原机制,点云类别标签预测会在每一次测试中体现出差异,因此设置多次验证取,对每个点取最多次预测的类别标签较为准确;
4、具体的命令行训练以及测试流程依据参考资料[1]的Semantic3D部分。
参考资料:
[1] GitHub - QingyongHu/RandLA-Net: 🔥RandLA-Net in Tensorflow (CVPR 2020, Oral & IEEE TPAMI 2021)
[2] RandLa-Net_哔哩哔哩_bilibili
[3] https://zhuanlan.zhihu.com/p/105433460
[4] 从零开始点云语义分割:RandLANet教程-CSDN博客
[5] https://www.tensorflow.org/api_docs/python/tf
[6] conda虚拟环境中安装cuda和cudnn,再也不用头疼版本号的问题了_conda cudnn-CSDN博客
RandLA-Net发表论文
/*1*/ RandLA-Net
https://arxiv.org/abs/1911.11236
相关文章:
基于RandLA-Net深度学习模型的激光点云语义分割
一、场景要素语义分割部分的文献阅读笔记 RandLA-Net是一种高效、轻量级的神经网络,其可直接逐点推理大规模点云的语义标签。RandLA-Net基于随机点采样获得了显著的计算和内存效率,并采用新的局部特征聚合模块有效地保留了几何细节,弥补了随机…...
C语言的结构体与联合体
引言 C语言提供了结构体和联合体两种聚合数据类型,使得程序员可以创建包括多个数据类型的复杂数据结构。结构体用于将不同类型的数据组合成一个单元,而联合体用于在同一存储空间中存储不同类型的数据。本篇文章将详细介绍C语言中的结构体和联合体&#x…...
React Hooks小记(三)_forwardRef
forwardRef 【写在前面】 1、ref 的作用是获取实例,但由于函数组件不存在实例,因此无法通过 ref 获取函数组件的实例引用,而 React.forwardRef 就是用来解决这个问题的。 2、React.forwardRef 会创建一个 React 组件,这个组…...
面试复习记录
六级终于结束了,之前背的八股几乎也忘得差不多了,今天开始继续准备秋招,以下是每天的安排,会按时更新,就当是一种对自己的督促,也欢迎小伙伴们一起来互相监督。 2024.6.16 力扣:sql基础题库50…...
块级元素与行内元素详解
在网页设计与开发中,元素根据其在页面布局中的表现可分为两大类:块级元素(Block-level Elements)和行内元素(Inline Elements)。理解它们的特性和使用规则对于构建结构清晰、布局合理的网页至关重要。 块级…...
Kotlin编程实践-【Java如何调用Kotlin中带默认值参数的函数】
问题 如果你有一个带有默认参数值的 Kotlin 函数,如何从 Java 调用它而无须为每个参数显式指定值? 方案 为函数添加注解JvmOverloads。 也就是为Java添加重载方法,这样Java调用Kotlin的方法时就不用传递全部的参数了。 示例 在 Kotlin …...
中国城市统计年鉴(1985-2023年)
数据年限:1985-2023 数据格式:pdf、excel 数据内容:共分四个部分 第一部分是全国城市行政区划,列有不同区域、不同级别的城市分布情况; 第二、三部分分别是地级以上城市统计资料和县级城市统计资料,具体包括…...
RestTemplate远程请求的艺术
1 简说 编程是一门艺术,追求优雅的代码就像追求优美的音乐。 很多有多年工作经验的开发者,在使用RestTemplate之前常常使用HttpClient,然而接触了RestTemplate之后,却愿意放弃多年相处的“老朋友”,转向RestTemplate。那么一定是RestTemplate有它的魅力,有它的艺术风范。…...
Spring 整合 MyBatis 底层源码解析
大家好,我是柳岸花开。今天我们要讲的是 Spring 整合 MyBatis 的底层源码解析。希望大家能更深入理解 Spring 和 MyBatis 的整合原理,并应用到实际项目中。 由很多框架都需要和Spring进行整合,而整合的核心思想就是把其他框架所产生的对象放到…...
LeetCode 189.轮转数组
1.这个题我用的方法比较巧妙,大家如果觉得好的话,就给个免费的赞吧^ _ ^,谢谢了。 void reverse(int* nums,int left,int right) {while(left < right){int a nums[left];nums[left] nums[right];nums[right] a;left;right--;} } void rotate(int…...
JDK17 你的下一个白月光
JDK版本升级的非常快,现在已经到JDK20了。JDK版本虽多,但应用最广泛的还得是JDK8,正所谓“他发任他发,我用Java8”。 但实际情况却不是这样,越来越多的java工程师拥抱 JDK17,于是了解了一下 JDK17新语法&a…...
springboot优雅shutdown时如何保障异步线程的安全
我前面写了一篇springboot优雅shutdown的文章,看起来一切很美好。 https://blog.csdn.net/chenshm/article/details/139640775 那是因为没有进行多线程测试。如果一个请求中包括阻塞线程(主线程)和非阻塞线程(异步线程)…...
C++格式化库fmt使用方法
1. 格式化库fmt简介 fmt github地址 api说明 格式化参数说明 内容的格式化,体现在代码中主要表现为字符串、基本类型、自定义类型的拼接。例如说打印日志、拼接变量等。C中我们会经常使用类似printf,snprintf(C风格使用不方便),std::string.append(繁琐), std::io…...
HTML 颜色名:网页设计的调色板
HTML 颜色名:网页设计的调色板 在网页设计和开发中,颜色是一个关键元素,它不仅影响视觉效果,还能传达情感和品牌信息。HTML 颜色名是用于在 HTML 和 CSS 代码中指定颜色的预定义名称。这些颜色名易于记忆,方便设计师和开发者快速选择和应用颜色。本文将详细介绍 HTML 颜色…...
12306 火车票价格解析 (PHP 解析)
1. 从接口拿数据 日期 出发站 终点站 都填上 xxx/otn/leftTicketPrice/queryAllPublicPrice?leftTicketDTO.train_date2024-06-15&leftTicketDTO.from_stationBJP&leftTicketDTO.to_stationSJP&purpose_codesADULT 返回的数据是这样的 {"validateMess…...
了解统计学中不同类型的分布
目录 一、说明 二、均匀分布: 三、机器学习和数据科学中的均匀分布示例: 3.1 对数正态分布: 3.2 机器学习和数据科学中的对数正态分布示例: 四、 帕累托分布 4.1 什么是幂律? 4.2 机器学习和数据科学中的帕累托分布示例…...
k8s-CCE创建工作负载变量引用
CCE创建工作负载变量引用 背景,看到cce创建负载时会生成变量,如下。在skywaking-agent的使用,想要调用cce负载变量生成service_name。 -Dskywalking.agent.authentication里含有敏感信息需要写到配置项。简单粗糙的都写到配置项好像不合适。…...
后端主流框架--Spring02
前言:上篇关于Spring的文章介绍了一些Spring的基本知识,此篇文章主要分享一下如何配置Spring环境,如何注入等。 Spring项目构建 导入Spring相关JAR包 <dependency><groupId>org.springframework</groupId><artifactId>spring…...
[数据集][目标检测]减速带检测数据集VOC+YOLO格式5400张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):5400 标注数量(xml文件个数):5400 标注数量(txt文件个数):5400 标注…...
分析Linux操作指令及使用场景与频率分析 持续更新
本篇主要针对在日常工作与学习中使用较多的linux指令的使用方法以及使用频次进行分析与讲解,旨在能够更好的掌握这些必备的技能。 linux指令非常的多,如果要记住所有的指令使用方法是非常困难的且要花费很长的时间,很多人习惯离开使用去通篇…...
Redis 字符串(String)
Redis 字符串(String) 介绍 Redis是一种开源的、高性能的键值数据库,它支持多种类型的数据结构,其中字符串(String)是Redis中最基本的数据类型之一。字符串类型可以存储任何形式的字符串,包括文本、序列化的对象或二进制数据。在Redis中,字符串类型的最大容量为512MB。 …...
第一篇:容器化的未来:从Docker的革命到云原生架构
容器化的未来:从Docker的革命到云原生架构 1. 引言 在当今快速演进的技术领域,容器化技术已经成为云计算和微服务架构的重要组成部分。该技术以其高效的资源利用率、快速的部署能力和卓越的隔离性能,彻底改变了软件开发和部署的方式。容器化…...
【2024最新华为OD-C/D卷试题汇总】[支持在线评测] URL拼接(100分) - 三语言AC题解(Python/Java/Cpp)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 URL拼接(100分) 🌍 评测功能需要订阅专栏后私信联系清隆解…...
反射,枚举以及lambda表达式
【本节目标】 1. 掌握反射 2. 掌握枚举 3. 掌握lambda表达式使用 反射 1 定义 Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调…...
DNS域名解析----分离解析、多域名解析、父域与子域
1 理论部分 1.1 分离解析 DNS的分离解析,是指根据不同的客户端提供不同的域名解析记录。来自不同地址的客户机请求解析同一域名时,为其提供不同的解析结果。也就是内外网客户请求访问相同的域名时,能解析出不同的IP地址,实现负载…...
Spring底层架构核心概念解析
BeanDefinition BeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点.比如: beanClass:表示Bean类型scope:表示Bean作用域,单例/原型等lazyInit:表示Bean是否懒加载initMethodName:表示Bean初始化时要执行的方法destoryMethodName:表示Bean销毁时…...
C++ 44 之 指针运算符的重载
#include <iostream> #include <string> using namespace std;class Students04{ public:int m_age;Students04(int age){this->m_age age;}void showAge(){cout << "年龄是: " << this->m_age << endl;}~Students0…...
onlyoffice在线预览加载优化
背景: 使用容器部署onlyoffice到linux服务器,使用内网访问速度还可以接受,但是如果放到外网路径访问起来,速度就会很慢,甚至加载失败; 优化方案: 预览的过程排除网络因素,可以发现打…...
依赖自动装配
黑马程序员SSM框架 文章目录 1、依赖自动装配2、依赖自动装配的特征 1、依赖自动装配 IoC容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动装配自动装配方式 按类型(常用)按名称按构造方法不启用自动装配 配置中使用bean标签auto…...
mysql和redis的双写一致性问题
一,使用方案 在使用redis作为缓存的场景下,我们一般使用流程如下 二,更新数据场景 我们此时修改个某条数据,如何保证mysql数据库和redis缓存中的数据一致呢? 按照常规思路有四种办法,1.先更新mysql数据&a…...
宁波专业优化网站制作公司/软文写作300字
1.web.py安装(windows) 下载:http://webpy.org/static/web.py-0.37.tar.gz 安装: (1).首先确定已经安装python并设置好环境变量 (2).打开cmd,cd到刚下载文件的目录下D:\python_tool\web.py-0.37\web.py-0.37 (3).输入python setup…...
网站建设公司的名字/自己怎么建网站
Fastjson RCE续(自动化) 一、漏洞介绍 参阅Fastjson≤1.2.47 RCE。 二、漏洞危害 参阅Fastjson≤1.2.47 RCE。 三、漏洞验证 环境搭建: 实验环境系统IP地址攻击机win10199.200.234.44靶机Centos7192.168.134.133 docker pull vulhub/f…...
phpcms 怎么做视频网站首页/微信软文范例100字
抱歉,这个问题太幼稚了,但对于我在该主题上的经历也是如此.从谷歌搜索我所了解的内容,我只是想确认该理解是正确的.欢迎大家查明我错了.> OCI基本上是一组API,供C/C程序员用来编写C/C应用程序访问Oracle数据库.> a)Oracle Instant Client SDK是使用OCI(???)的(DLL /共…...
中联网站建设/优化设计答案
配置环境:centos 6.6、redhat9、hadoop1.0.3、jdk1.6 基本配置:这里选择了cento6.6作为master,redhat9是slave 基于单节点伪分布式配置(参考单节点的配置),修改其配置: step1:在master的配置&am…...
wordpress主题授权系统/百度贴吧人工客服
要将内容与默认网格嵌套在一起,请在现有的.col-md- *列中添加一个新的.row和一组.col-md- *列。您可以尝试运行以下代码以了解如何在Bootstrap中实现嵌套列-示例html>Bootstrap ExampleHeadingbox-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px #444;&qu…...
西安做网站排名/做网页
创建表的两种办法: 使用DBMS 提供的交互式创建和管理数据库表的工具;直接用SQL 语句创建。表创建基础 创建表示例: 1 CREATE TABLE Products 2 ( 3 prod_id CHAR(10) NOT NULL,--是否可以为null 4 vend_id CHAR(10) NOT NULL, 5 …...