当前位置: 首页 > news >正文

PointNet++论文复现


✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua小谢,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:传知代码论文复现

欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙

​​

​​

目录

3D点云

什么是3D点云

为什么要使用3D点云(和计算机视觉比较)

点云数据演示效果

CloudCompare可视化工具

PointNet++模型

Set Abstraction Layer(集合抽象层)

Feature Propagation Layer(特征传播层)

多层感知机(MLP)

Symmetric Function(对称函数)

PointNet++核心代码

附件使用方式

3D点云数据下载

安装依赖

训练脚本

预测脚本

注:附件中不仅有点云分类代码,还有点云分割相关代码


本文所有资源均可在该地址处获取。

3D点云

什么是3D点云

3D点云是由大量空间中的点组成的数据集,这些点在三维坐标系统中具有X、Y和Z三个坐标值,用以表示物体或环境的形状和结构。每个点通常还包含额外的信息,如颜色、强度、法线等,这些信息可以帮助更准确地描述点云所代表的对象。3D点云数据可以通过各种技术获取,如激光扫描(LIDAR)、结构光扫描、立体摄像头以及其他3D感测设备。

点云数据在许多领域都有应用,包括但不限于测绘、建筑、制造业、自动驾驶汽车、文化遗产保护以及游戏开发等。它们为计算机提供了丰富的空间信息,使得能够进行高级的形状分析和模型重建。

为什么要使用3D点云(和计算机视觉比较)

3D点云在许多方面与传统的计算机视觉技术相比具有独特的优势,以下是一些主要的原因:

空间信息的丰富性
3D点云:提供了物体或场景的精确三维空间信息,可以准确地表示对象的形状、大小和位置。
计算机视觉:通常处理二维图像,虽然可以通过立体视觉等方法估计深度信息,但精度和分辨率通常不如3D点云。
精确度
3D点云:由于其三维特性,可以用于精确的尺寸测量和形状分析,这对于工程和制造领域尤为重要。
计算机视觉:在处理二维图像时可能会受到视角、光照变化和遮挡的影响,从而影响测量的精确度。
遮挡和视角问题
3D点云:可以从多个角度分析物体,即使在有遮挡的情况下也能较好地重建物体的完整结构。
计算机视觉:遮挡可能导致图像中关键信息的丢失,这可能会影响识别和分类的准确性。
复杂场景的理解
3D点云:能够更好地理解复杂的三维场景,例如城市环境或工业设施,这对于自动驾驶汽车和机器人导航等应用至关重要。
计算机视觉:在处理复杂场景时可能需要更多的预处理和假设,以简化场景并提取有用的信息。
交互性和沉浸感
3D点云:可以用于创建高度交互性和沉浸感的虚拟现实(VR)和增强现实(AR)体验。
计算机视觉:虽然也可以用于AR/VR,但通常缺乏3D点云所提供的详细和精确的空间信息。
总之,3D点云在处理三维空间数据方面具有独特的优势,它为计算机视觉带来了新的维度,使得在许多领域中的应用更加精确和有效。然而,3D点云技术也有其局限性,如数据处理和存储的要求较高,以及点云配准和降噪等预处理步骤的复杂性。不过,随着技术的进步,这些问题正在逐步得到解决

点云数据演示效果

CloudCompare可视化工具

下载地址:https://www.cloudcompare.org/


使用方式


可视化效果

PointNet++模型

Set Abstraction Layer(集合抽象层)

集合抽象层是PointNet++的核心模块,它通过迭代地采样点云中的点,并在每个采样点上应用PointNet来提取局部特征。

采样(Sampling):从输入点云中均匀或根据密度进行采样,选择一组点作为局部区域的中心。
分组(Grouping):对于每个采样点,根据距离选择它的邻近点形成一个小区域(称为“点集”或“组”),这些邻近点将用于提取局部特征。
局部特征提取(Local Feature Extraction):对每个分组应用PointNet或类似的结构,提取局部特征。这通常涉及到使用多层感知机(MLP)来处理每个点的坐标和特征,然后通过最大池化(max pooling)操作来获得一个固定大小的特征向量,该特征向量代表了该组的局部几何特征。

Feature Propagation Layer(特征传播层)

特征传播层用于将高层次的特征传播回原始点云的每个点,以细化特征表示。

插值(Interpolation):使用最近邻或基于距离的权重插值方法,将高层次的特征传播到低层次或原始点云的每个点。
特征更新(Feature Updating):在将高层次特征传播到原始点后,通过额外的MLP层更新每个点的特征,以融合局部和全局信息。

多层感知机(MLP)

在PointNet++中,多层感知机(MLP)用于对点云中的点进行特征提取。MLP是一个简单的前馈神经网络,它可以在每个点上进行多次非线性变换,以提取更复杂的特征。

Symmetric Function(对称函数)

PointNet++使用最大池化作为对称函数,以确保特征的排列不变性。这意味着无论点的顺序如何变化,提取的特征都是相同的。

  1. 输出层
    在网络的最后,通常会添加一个或多个全连接层(也称为密集层),以对提取的特征进行分类或分割任务。这些层将特征向量映射到最终的分类标签或每个点的分割标签

PointNet++核心代码

特征提取核心代码

class PointNetSetAbstraction(nn.Module):def __init__(self, npoint, radius, nsample, in_channel, mlp, group_all):super(PointNetSetAbstraction, self).__init__()self.npoint = npointself.radius = radiusself.nsample = nsampleself.mlp_convs = nn.ModuleList()self.mlp_bns = nn.ModuleList()last_channel = in_channelfor out_channel in mlp:self.mlp_convs.append(nn.Conv2d(last_channel, out_channel, 1))self.mlp_bns.append(nn.BatchNorm2d(out_channel))last_channel = out_channelself.group_all = group_alldef forward(self, xyz, points):"""Input:xyz: input points position data, [B, C, N]points: input points data, [B, D, N]Return:new_xyz: sampled points position data, [B, C, S]new_points_concat: sample points feature data, [B, D', S]"""xyz = xyz.permute(0, 2, 1)print(xyz.shape) # (B,1024,3)if points is not None:points = points.permute(0, 2, 1) #(B,1024,3)# new_xyz是从1024个点中根据最远原则选出的512个点# new_points是以这512个点为圆心,框出32个点 if self.group_all:new_xyz, new_points = sample_and_group_all(xyz, points)else:new_xyz, new_points = sample_and_group(self.npoint, self.radius, self.nsample, xyz, points)print(new_xyz.shape, new_points.shape) # (B,512,3),(B,512,32,6)# new_xyz: sampled points position data, [B, npoint, C]# new_points: sampled points data, [B, npoint, nsample, C+D]new_points = new_points.permute(0, 3, 2, 1) # [B, C+D, nsample,npoint]print(new_points.shape) # (B,6,32,512) 将特征维度转为in_channelfor i, conv in enumerate(self.mlp_convs):bn = self.mlp_bns[i]new_points =  F.relu(bn(conv(new_points)))print(new_points.shape) # 依次改变6的特征维度,不改变32,512new_points = torch.max(new_points, 2)[0] # (B,64,512)new_xyz = new_xyz.permute(0, 2, 1)return new_xyz, new_points

附件使用方式

3D点云数据下载

与原始的ModelNet40数据集相比,ModelNet40_normal_resampled数据集中的点云具有更均匀的采样密度,这使得数据集更适合于训练深度学习模型。
每个点云样本通常包含1024个点,这些点是从原始模型表面均匀采样的。
数据集中的每个点不仅包含三维坐标(x, y, z),还包含表面法线信息(nx, ny, nz)。这些法线信息有助于模型更好地理解点云的几何结构,对于某些3D识别任务来说是非常有用的。
modelnet40_normal_resampled下载地址:https://aistudio.baidu.com/datasetdetail/50045/0
将它放到附件的/data文件夹下

安装依赖

pip install -r requirements.txt

训练脚本

python train_classification.py

预测脚本

python test_classification.py

注:附件中不仅有点云分类代码,还有点云分割相关代码

 ​​

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

相关文章:

PointNet++论文复现

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

【VUE】el-table表格内输入框或者其他控件规则校验实现

1、封装组件 1、规则校验一般基于form表单实现&#xff0c;因此需要给具体控件套一层form表单 新建组件input-required.vue&#xff0c;内容如下 <template><div><el-form ref"formRef" :model"form" :rules"formRules" label-…...

django开发中html继承模板样式

存在问题&#xff1a; django开发中&#xff0c;不同页面样式相同&#xff0c;如何共用一套母版&#xff0c;避免每个页面都重复写样式&#xff1b; 解决方案&#xff1a; 添加一个母版&#xff0c;如“layout.html”&#xff0c;在需要继承的位置添加{% block content %}{% e…...

MT6769/MTK6769核心板规格参数_联发科安卓主板开发板方案

MT6769安卓核心板具有集成的蓝牙、FM、WLAN和GPS模块&#xff0c;是一个高度集成的基带平台&#xff0c;结合了调制解调器和应用处理子系统&#xff0c;以支持LTE/LTE-A和C2K智能手机应用。 该芯片集成了两个工作频率高达2.0GHz的ARMCortex-A75内核、六个工作频率高达1.70GHz的…...

鸿蒙进阶篇-状态管理之@Provide与@Consume

大家好&#xff0c;这里是鸿蒙开天组&#xff0c;今天我们来学习一下状态管理中的Provide与Consume。 一、概述 嘿&#xff01;大家还记得这张图吗&#xff1f;不记得也要记得哦&#xff0c;因为这张图里的东西&#xff0c;既是高频必考面试题&#xff0c;也是实际开发中&…...

java集合及源码

目录 一.集合框架概述 1.1集合和数组 数组 集合 1.2Java集合框架体系 常用 二. Collection中的常用方法 添加 判断 删除 其它 集合与数组的相互转换 三Iterator(迭代器)接口 3.0源码 3.1作用及格式 3.2原理 3.3注意 3.4获取迭代器(Iterator)对象 3.5. 实现…...

GraphRAG访问模式和知识图谱建模

GraphRAG访问模式和知识图谱建模 GraphRAG访问模式和知识图谱建模什么是GraphRAG了解文本分块检索模式图谱建模相关概念图结构 GraphRAG访问模式和知识图谱建模 graphrag.com是一个开源项目&#xff0c;收集了围绕GraphRAG的相关资源&#xff0c;目前正在快速收集大家的投稿。深…...

TCP/IP协议攻击与防范

一、TCP/IP协议攻击介绍 1.1 Internet的结构​ LAN&#xff1a;局域网 WAN&#xff1a;广域网 WLAN&#xff1a;无线局域网 私有IP地址与公有IP地址&#xff1f; 私有地址&#xff1a;A类&#xff1a;10.0.0.0~10.255.255.255 B类&#xff1a;172.16.0.0~172.31.255.255…...

Java基于 SpringBoot+Vue的口腔管理平台(附源码+lw+部署)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…...

11.26深度学习_神经网络-数据处理

一、深度学习概述 1. 什么是深度学习 ​ 人工智能、机器学习和深度学习之间的关系&#xff1a; ​ 机器学习是实现人工智能的一种途径&#xff0c;深度学习是机器学习的子集&#xff0c;区别如下&#xff1a; ​ 传统机器学习算法依赖人工设计特征、提取特征&#xff0c;而深…...

【人工智能】Python常用库-TensorFlow常用方法教程

TensorFlow 是一个广泛应用的开源深度学习框架&#xff0c;支持多种机器学习任务&#xff0c;如深度学习、神经网络、强化学习等。以下是 TensorFlow 的详细教程&#xff0c;涵盖基础使用方法和示例代码。 1. 安装与导入 安装 TensorFlow&#xff1a; pip install tensorflow…...

微信小程序按字母顺序渲染城市 功能实现详细讲解

在微信小程序功能搭建中&#xff0c;按字母渲染城市会用到多个ES6的方法&#xff0c;如reduce&#xff0c;map&#xff0c;Object.entries()&#xff0c;Object.keys() &#xff0c;需要组合熟练掌握&#xff0c;才能优雅的处理数据完成渲染。 目录 一、数据分析 二、数据处理 …...

23省赛区块链应用与维护(房屋租凭【下】)

23省赛区块链应用与维护(房屋租凭) 背景描述 随着异地务工人员的增多,房屋租赁成为一个广阔市场。目前,现有技术中的房屋租赁是由房主发布租赁信息,租赁信息发布在房屋中介或租赁软件,租客获取租赁信息后,现场看房,并签订纸质的房屋租赁合同,房屋租赁费用通过中介或…...

数据结构-图-领接表存储

一、了解图的领接表存储 1、定义与结构 定义&#xff1a;邻接表是图的一种链式存储结构&#xff0c;它通过链表将每个顶点与其相邻的顶点连接起来。 结构&#xff1a; 顶点表&#xff1a;通常使用一个数组来存储图的顶点信息&#xff0c;数组的每个元素对应一个顶点&#xff…...

快速入门web安全

一.确定初衷 1.我真的喜欢搞安全吗? 2.我只是想通过安全赚钱钱吗? 3.我不知道做什么就是随便。 4.一辈子做信息安全吗 这些不想清楚会对你以后的发展很不利&#xff0c;与其盲目的学习web安全&#xff0c;不如先做一个长远的计划。 否则在我看来都是浪费时间。如果你考虑好了…...

rabbitMq两种消费应答失败处理方式

在rabbitMq消费端&#xff0c;有三种应答模式&#xff1a; none&#xff1a;不处理。即消息投递给消费者后立刻 ack 消息会立刻从MQ删除。非常不安全&#xff0c;不建议使用 manual&#xff1a;手动模式。需要自己在业务代码中调用api&#xff0c;发送 ack 或 reject&#xff…...

Qt C++(一) 5.12安装+运行第一个项目

安装 1. Download Qt OSS: Get Qt Online Installer 在该链接中下载qt在线安装程序 2. 安装时候&#xff0c;注意关键一步&#xff0c;archive是存档的意思&#xff0c;可以找到旧的版本&#xff0c; 比如5.12 3. 注意组件没必要全选&#xff0c;否则需要安装50个g, 经过请教…...

【RISC-V CPU Debug 专栏 1 -- RISC-V debug 规范】

文章目录 RISC-V Debug调试用例支持的功能限制和不包括的内容RISC-V 调试架构的主要组件用户与调试主机调试翻译器调试传输硬件调试传输模块(DTM)调试模块(DM)调试功能触发模块版本介绍RISC-V Debug RISC-V 调试规范为 RISC-V 处理器提供了一套标准化的调试接口和功能,旨…...

使用Gradle编译前端的项目

使用Gradle编译前端的项目 前言项目结构根项目&#xff08;parent-project&#xff09;的 settings.gradle.kts后端项目&#xff08;backend&#xff09;的 build.gradle.kts前端项目&#xff08;frontend&#xff09;的 build.gradle.kts打包bootJar 前言 最近的项目都是使用…...

网络爬虫——常见问题与调试技巧

在开发网络爬虫的过程中&#xff0c;开发者常常会遇到各种问题&#xff0c;例如网页加载失败、数据提取错误、反爬机制限制等。以下内容将结合实际经验和技术方案&#xff0c;详细介绍解决常见错误的方法&#xff0c;以及如何高效调试和优化爬虫代码。 1. 爬虫过程中常见的错误…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...