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

PointNet:利用深度学习对点云进行3D分类和语义分割

PointNet:利用深度学习对点云进行3D分类和语义分割

参考自,PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

代码仓库地址为:https://github.com/charlesq34/pointnet/

介绍

这次介绍的是一个比较基础的工作,针对空间点云,进行分类或者语义分割的框架,现在通常也被用作对RGB-D图像进行特征提取的部分。

该工作的目的就是,输入点云信息,得到每一个点的语义,或者是得到整个点云代表的物体信息。

image-20230508161017421

如上图所示,该工作可以对点云数据进行分类,语义分割,部分分割等。

具体细节

首先,我们假设点云为一系列点的集合,记为 { P 1 , P 2 , . . . , P n } \{P_1, P_2, ...,P_n\} {P1,P2,...,Pn}

每一个点,都有坐标 ( x , y , z ) (x,y,z) (x,y,z),以及代表色彩的通道值,如果是rgb,那就是3个通道的值

这里直接给出整个PointNet的结构图

image-20230508161436196

我们首先来看蓝色背景的部分,代表一个分类网络,输入是一个 n × 3 n\times 3 n×3 的点云信息,其中 n n n 是点的数目, 3 3 3 代表着空间坐标的维度

最终输出一个 k k k 维的分数,代表对 k k k 个物体的分类置信度。

我们来仔细看一下处理的过程:

1. Input Transform

这一部分由一个T-Net和矩阵乘法构成,最终输出的形状还是 n × 3 n\times 3 n×3

通过分析其代码,可以知道,该T-Net由3个卷积层,1个最大池化层以及2个线性层组合而成

最终输出一个 3 × 3 3\times 3 3×3 的变换矩阵,然后右乘上输入(输入的形状是 n × 3 n\times 3 n×3 )得到 n × 3 n\times 3 n×3 的输出

直觉上看,就是用一个小的网络学习一个线性变换,对输入的点云做处理

2. MLP

代码中使用的是两个卷积层:

  • 先用一个 1 × 3 1\times 3 1×3 的卷积,输出通道数为 64 64 64
  • 然后是一个 1 × 1 1\times 1 1×1 的卷积,输出通道也是 64 64 64

所以最终的输出是 n × 64 n\times 64 n×64 的形状

3. Feature Transform

和先前一样,用T-Net输出一个 64 × 64 64\times 64 64×64 的线性变换矩阵右乘上去

4. MLP

用三个 1 × 1 1\times1 1×1 的卷积,将通道数直接提升到了 1024 1024 1024,输出的形状也就是 n × 1024 n\times 1024 n×1024

本质上和线性层是一样的

5. MaxPool

过一个MaxPool,kernel大小设置成 1 × n 1\times n 1×n ,直接得到一个 1024 1024 1024 维的特征向量

6. MLP

最后直接用三个线性层,将输出转换成 k k k 维的分类置信度

语义分割的细节

这里合并了两个特征,形状分别是 n × 64 n\times 64 n×64 1024 1024 1024

1024 1024 1024 长度的特征向量复制 n n n 次,接在 64 64 64 维的向量后面,便得到 n × 1088 n\times 1088 n×1088 的输出

过一系列MLP,最终输出 n × m n \times m n×m 形状的矩阵, m m m 代表语义分割的类别

实验分析

物体分类

首先是在ModelNet40数据集上分类的准确率

image-20230508164800227

基本上在3D输入上达到了SOTA的性能,整体正确率为89.2%。

语义分割

image-20230508164946749

可以看到,比起3D全卷积的baseline,mIoU也是达到SOTA的性能

相关文章:

PointNet:利用深度学习对点云进行3D分类和语义分割

PointNet:利用深度学习对点云进行3D分类和语义分割 参考自,PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 代码仓库地址为:https://github.com/charlesq34/pointnet/ 介绍 这次介绍的是一个比较基础的工作…...

第四十二章 Unity 下拉框 (Dropdown) UI

本章节我们介绍下拉框 (Dropdown),我们点击菜单栏“GameObject”->“UI”->“Dropdown”,然后调整它的位置,效果如下 其实它的本质就是一个下拉列表,然后选择列表中的一个选项而已。大家在很多网页中应该可以看到类似的UI元…...

STL常用梳理——STACK、QUEUE

STL——适配器篇 1、ListSTL list 容器介绍list使用 2、适配器介绍3、Deque容器Stack、Queue适配器实现 1、List STL list 容器介绍 STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可…...

Unity物理系统基本概念

前言:物理引擎仅仅是对现实物理的一种近似模拟。无论是从运算精度和时间连续性都不够准确。目的只是为了让游戏具备令人信服的物理表现,增强游戏的表现力和用户的沉浸感。 一、刚体Rigidbody 刚体是让物体产生物理行为的主要组件。一旦挂载了Rigidbody组…...

防止表单重复提交的几种方式,演示一个自定义注解方式的实现

防止表单重复提交的几种方式,演示一个自定义注解方式的实现 一、防止表单重复提交的几种方式方式一:Token 机制方式二:去重表(主要是利用 MySQL 的唯一索引机制来实现的)方式三:Redis 的 setnx方式四&#…...

《基于智能手机采集的PPG信号预测血管老化》阅读笔记

目录 一、论文摘要 二、论文十问 Q1: Q1论文试图解决什么问题? Q2: 这是否是一个新的问题? Q3: 这篇文章要验证一个什么科学假设? Q4: 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员&#xff1f…...

【大数据-调度工具】dolphinscheduler安装和遇到的问题

1.安装 安装步骤按照官网安装即可 官网:DolphinScheduler | 文档中心 (apache.org) 版本:3.1.5 2.踩坑记录 Q1.大文件无法上传 问题描述: 在资源中心中上传文件选择完大文件夹之后,选择确认之后确认按钮转了几圈圈之后就没…...

滑动轨迹生成的思路和代码分享-测试可过极验 90%机率

如有技术侵权、可联系本人下架 由于极验采用人工智能的方式对滑动的轨迹进行的验证,因此如果我们比较随意的生成鼠标滑动轨迹基本是肯定被封的,因此我们要详细分析一下鼠标轨迹的规律, 通之前介绍的调试手段,手工滑动滑块,获取到鼠标滑动轨迹的集合数组如下: [[-37,-41…...

【Linux】项目自动化构建工具make/makefile

🏖️作者:malloc不出对象 ⛺专栏:Linux的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、make/makefile的背景二、…...

【系分范文】论软件需求获取技术以及应用

目录 论题论题介绍论文要点理论素材准备范文摘要正文论题 论软件需求获取技术以及应用 论题介绍 软件需求是指用户对新系统在功能、行为、性能、设计约束等方面的期望。软件需求获取是一个确定和理解不同的项目干系人的需求和约束的过程。需求获取是否科学、准备充分,对获取…...

vue2.0中post请求

vue2.0中post请求 三种格式:在vue中axois的用法:1、 multipart/form-data类型2、 x-www-form-urlencoded类型3、 application/json类型 三种格式: ○ Content-Type:x-www-form-urlencoded ○ Content-Type:multipart/form-data ○ Content…...

MySQL双写缓冲区(Doublewrite Buffer)

本文已收录至Github,推荐阅读 👉 Java随想录 文章目录 摘要为什么需要Doublewrite BufferDoublewrite Buffer原理Doublewrite Buffer相关参数总结 摘要 InnoDB是MySQL中一种常用的事务性存储引擎,它具有很多优秀的特性。其中,Dou…...

免费开源的Umi-OCR 文字识别工具

大家好,我是小寻,欢迎关注公众号:工具优选,免费领取优质项目源码和常用工具,还可以加入我的交流群! 如今,在日常生活和工作中,我们经常需要捕捉屏幕截图并识别其中的文本信息。比如别人给你发资料时直接发…...

如何让微信小程序弹窗滚动条设置在最上面

最近发现一个事情搞得很烦&#xff0c;微信小程序的弹窗内容可以滚动的时候&#xff0c;要保证每一次打开都在最上面&#xff0c;研究了一下终于发现了怎么解决 第一步 首先得把你的弹窗里面的内容用scroll-view标签包起来&#xff0c;像这样 <scroll-view style"hei…...

c语言-指针

指针详解 ​ 这段时间在看 Linux内核&#xff0c;深觉C语言功底不扎实&#xff0c;很多代码都看不太懂&#xff0c;深入学习巩固C语言的知识很有必要。先从指针开始。 什么是指针 ​ C语言里&#xff0c;变量存放在内存中&#xff0c;而内存其实就是一组有序字节组成的数组&…...

Jenkins集成SonarQube实现代码质量检查

文章目录 一、前提配置1.1 安装及配置SonarQube Scanner插件1.2 配置SonarQube servers 二、非流水线集成SonarQube1.1 配置非流水线任务 三、流水线集成SonarQube 一、前提配置 1.1 安装及配置SonarQube Scanner插件 (1) 点击【系统管理】>【插件管理】>【可选插件】搜…...

2023 谷歌I/O发布会新AI,PALM 2模型要反超GPT-4,一雪前耻!

文章目录 1 前言2 Google I/O 发布者大会3 PaLM 2模型3 Bard项目4 其他AI工具4.1 AI 图片编辑 Magic Editor4.2 Duet AI 办公4.3 Universal Translator 翻译工具4.4 Google 沉浸式导航4.5 Google 搜索引擎 5 讨论 1 前言 每年必看两大会&#xff0c;苹果发布会和谷歌发布会&am…...

MySQL和Redis如何保证数据一致性?

前言 由于缓存的高并发和高性能已经在各种项目中被广泛使用&#xff0c;在读取缓存这方面基本都是一致的&#xff0c;大概都是按照下图的流程进行操作&#xff1a; 但是在更新缓存方面&#xff0c;是更新完数据库再更新缓存还是直接删除缓存呢&#xff1f;又或者是先删除缓存再…...

Markdown使用(超详细)

&#xff08;HBuilderX&#xff09; 掌握md及HBuilderX对md的强大支持。如果没有点右键设置自动换行&#xff0c;可按Alt滚轮横向滚动查看。 很多人只把markdown用于网络文章发表&#xff0c;这糟蹋了markdown。 markdown不止是HTML的简化版&#xff0c;更重要的是txt的升级版…...

yolov5实现扑克牌识别的产品化过程

文章目录 介绍项目下载硬件准备软件环境素材获取自行获取素材网盘获取图片标注模型训练窗口截图窗口截图(HWND)桌面截图wgc方法最终采用的方式WGC使用方法如何保存灰度图片python 如何加载dll库图片推理扑克牌逻辑ui编写模型加密软件授权软件加密软件打包安装包制作...

第07讲:Java High Level Client,读写 ES 利器

SkyWalking OAP 后端可以使用多种存储对数据进行持久化&#xff0c;例如 MySQL、TiDB 等&#xff0c;默认使用 ElasticSearch 作为持久化存储&#xff0c;在后面的源码分析过程中也将以 ElasticSearch 作为主要存储进行分析。 ElasticSearch 基本概念 本课时将快速介绍一下 E…...

dockerfile暴力处理配置文件外提

前言&#xff1a; 一般来说&#xff0c;springboot打成的jar运行时&#xff0c;同目录/config目录下放application.yml文件会被进行加载&#xff0c;然后通过设置docker映射出宿主机即可做到配置文件外配的效果&#xff0c;但很多时候别的配置文件做不到这种效果&#xff0c;说…...

如何快速给出解释——正交矩阵子矩阵的特征值的模必然不大于1

Memory 首先快速回忆一下正交矩阵的定义&#xff1a; A为n阶实矩阵&#xff0c;且满足A‘AE或是说AA’E&#xff0c;那么A为正交矩阵。 &#xff08;啊&#xff0c;多么简洁的定义&#xff09; 其次快速想到它的性质&#xff1a; ① 实特征值必然 或 其他复数…...

c语言-位运算

位运算小结 ​ 位运算不管是在C语言中&#xff0c;或者其他语言&#xff0c;都是经常会用到的&#xff0c;所以本文也就不固定以某种语言来举例子了&#xff0c;原始点就从0、1开始。位运算主要包括按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、右移(>…...

【Android学习专题】安卓样式学习(学习内容记录)

学习记录内容来自《Android编程权威指南&#xff08;第三版&#xff09;》 样式调整和添加 调整颜色资源&#xff08;res/values/colors.xml&#xff09; 格式&#xff1a; 添加样式&#xff08;res/values/styles.xml&#xff09;&#xff0c;&#xff08;创建BeatBox项目时…...

普罗米修斯统计信息上报结构设计

为了实现高效的监控和警报&#xff0c;普罗米修斯提供了一个强大的统计信息上报机制。通过这个机制&#xff0c;可以将应用程序的各种统计信息发送到普罗米修斯&#xff0c;普罗米修斯会对这些信息进行处理&#xff0c;然后提供丰富的监控和警报功能。下面是基本的统计信息上报…...

两个系统之间的传值

在两个系统之间传值可以采用以下几种方式&#xff1a; 使用 URL 参数&#xff1a;可以将数据作为 URL 参数传递给另一个系统&#xff0c;另一个系统可以解析 URL 参数并获取数据。例如&#xff1a;Example Domain 使用 Cookie&#xff1a;可以在一个系统中设置 Cookie&#xf…...

PostgreSQL(五)JDBC连接串常用参数

目录 1.单机 PostgreSQL 连接串2.集群PostgreSQL 连接串 PostgreSQL JDBC 官方驱动下载地址&#xff1a; https://jdbc.postgresql.org/download/ PostgreSQL JDBC 官方参数说明文档&#xff1a; https://jdbc.postgresql.org/documentation/use/ 驱动类&#xff1a; driver-…...

如何修改浏览器中导航栏的背景色和字体

在日常使用电脑时&#xff0c;我们总会使用浏览器来浏览网页。而浏览器中的导航栏是用户进行网页浏览的主要界面之一&#xff0c;其背景色和字体的选择对用户的体验有着重要的影响。因此&#xff0c;为了让导航栏更加美观和易于使用&#xff0c;我们需要对其背景色和字体进行修…...

如何选择合适的智能氮气柜?

随着电子产品的普及&#xff0c;IC、半导体、精密元件、检测仪器之类的物品对湿度要求越来越高&#xff0c;潮湿、霉菌和金属氧化所造成的损害&#xff0c;随时在发生。人们对于物品的存放环境要求逐渐提高&#xff0c;利用防潮设备如智能氮气柜、电子防潮柜来存储产品也越来越…...