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

news2024/11/20 12:22:56

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的性能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502224.html

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

相关文章

部署博客系统(部署博客系统到云服务器)

目录 1、建库建表 2、微调本地代码 3、打包(使用Maven打成war包) 4、拷贝到Tomcat的webapps 5、启动Tomcat服务器(只有启动成功了才能进行访问) 6、访问博客系统 1、建库建表 云服务器访问的是云服务器上的数据库,不是…

FFmpeg YUV 编码 H264

1. x264 库 由于 FFmpeg 不支持 h264 编码,所以需要集成 x264 库,现在使用的是当前最新版本 1.1 官方下载地址: videolanhttps://www.videolan.org/developers/x264.html 1.2 编译脚本地址: x264-ioshttps://github.com/kewlbear/x264-

【信息系统项目管理师】概要和框架-2023年5月7日总结

还有20天考试,记录下这二十天的学习内容。 今天之前4月4日到4月13日五天修炼看了一半,看到了项目风险管理,云里雾里看了个大概。 听野人老师的课从第一章跟着到了第十章,听一会儿就走神,听一会儿就走神。 改变思路&…

1.4 初探Spring - 采用Java配置类管理Bean

一、采用Java配置类管理Bean 1、打开项目 Maven项目 - SpringDemo 2、创建子包 在net.hf.spring包里创建day04子包 3、创建杀龙任务类 在day04子包里创建杀龙任务类 - SlayDragonQuest package net.hf.spring.day04;/*** 功能:杀龙任务类* 作者&#xff1…

Ubuntu搭建VPN服务

PPTD协议 此协议据说安全级别不高,苹果系统已经不支持,但windows依然支持 1.安装,root账号登录服务器 apt-get update apt-get install pptpd 2.配置主机ip及连接主机的设备所分配ip池,客户端分配的内网ip段。 vim /etc/pptpd.conf 将以下两行注释去…

同云跨可用区备份容灾解决方案详解

云可用区 云可用区(Availability Zone,AZ)是一个可用区是一个或多个物理数据中心的集合,有独立的风火水电,可用区内逻辑上再将计算、网络、存储等资源划分成多个集群。一个地域中的多个可用区间通过高速光纤相连,以满足…

Ubuntu安装Mininet和Ryu出现的问题

问题1-Ryu: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host‘pypi.org’, port443): 解决: pip install XXX -i http://pypi.douban.com/simple --trusted-host pypi.douban.com或 pip install XXX -i http://mirrors.aliyun.c…

国内首个BIM全生命周期装配式建筑项目,建设仅用25周

hi大家好,这里是建模助手。 文章开头我想先问问各位,在你眼中,25周能干点什么!小编和你说,在建筑行业里的25周,可以完成一整个保障房项目的建设。 我没开玩笑... 4月16日下午,随着最后一个混凝土…

信号与槽机制

一、信号与槽 1、什么是信号与槽? 信号和槽是用于对象之间的通信,它是Qt的核心机制,在Qt编程中有着广泛的应用。如果想学好Qt,一定要充分掌握信号的槽的概念与使用。 2、信号和槽的代码实例 在Qt中,发送对象、发送的信…

美国纽扣电池的包装电池盒必须附带警告标签16 CFR 第 1700.20

美国纽扣电池及硬币电池的包装、电池盒必须附带警告标签16 CFR 第 1700.20 美国要求在纽扣电池或硬币电池的包装上、电池盒上以及包含纽扣电池或硬币电池的消费品附带说明和手册上贴上警告标签。 商品法规、标准和要求纽扣电池和硬币电池以下所有项: 16 CFR 第 17…

虚幻引擎配置物体水面浮力的简便方法

虚幻引擎配置物体水面浮力的简便方法 目录 虚幻引擎配置物体水面浮力的简便方法前言前期工作配置水面浮力针对一个立方体的水面浮力配置针对船3D模型的水面浮力配置 小结 前言 在使用虚幻引擎配置导入的3D模型时,如何快速地将水面浮力配置正确,从而使得…

快速原型设计工具(Axure)的简单使用

1.运行 安装好后运行,可以看到欢迎界面(不想每次启动都弹出这个的话建议勾选启动时不显示) ​ 这就是Axure的主要界面了,能成功进到这里就说明安装成功! 2.Axure主要界面 3.展示形式 通过Axure这个软件生成和打开的文件的后缀名是 .rp&#x…

如何在Jetpack Compose中将可滚动项捕捉到屏幕中心

如何在Jetpack Compose中将可滚动项捕捉到屏幕中心 从 Snapper 迁移到 SnapFlingBehavior 之前,我们探讨了Android应用程序开发中一个常见的用例:在fling手势后将可滚动项捕捉到屏幕中心。 为了在Jetpack Compose中实现这一目标,我们使用…

手把手教你写Web自动化测试并生成美观交互的测试报告

B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 摘要: Web自动化测试 Allure测试报告 总结 摘要: 在Web应用程序开发中&#xff0c…

ICV: 全球QRNG产业规模在2030年有望突破200亿美元

近日,专注于前沿科技领域的国际咨询机构ICV发布了《全球量子随机数发生器的产业研究报告》,从多个角度对QRNG的市场进行预测。 QRNG 是解决与随机数相关的问题(例如密码解决方案)的重要硬件来源。 QRNG 是随着量子物理技术的发展…

DJ4-4 基本分页存储管理方式

目录 离散分配的基本概念 4.4.1 分页存储管理基本思想 1、分页存储管理的基本方法 2、页面与物理块 3、实现分页存储管理的数据结构 4、实现分页存储管理的地址结构 5、分页存储管理的逻辑地址表示 4.4.2 地址变换机构 1、基本的地址变换机构 2、具有快表的地址变换…

Alibaba技术官熬夜肝出的,Kafka “限量笔记” 牛掰 ~

前言 分布式,是程序员必备技能之一,在面试过程中属于必备类的,在工作中更是会经常用到。而Kafka是一个分布式的基于发布订阅的消息队列,目前它的魅力是无穷的,对于Kafka的奥秘,还需要我们细细去探寻。 要…

GUN C编译器拓展语法学习笔记(三)内联函数、内建函数与可变参数宏

内联函数、内建函数与可变参数宏 一、内联函数1.1 属性声明:noinline1.2 内联函数与宏1.3 编译器对内联函数的处理1.4 内联函数为什么定义在头文件中 二、内建函数2.1 内建函数定义2.2 常用的内建函数2.3 C标准库的内建函数2.4 内建函数:__builtin_const…

WPF异常处理详解

总目录 文章目录 总目录一、WPF异常1 未捕获异常2 模拟未捕获异常场景 二、处理未捕获异常1 DispatcherUnhandledException 异常捕获2 UnhandledException异常捕获3 UnobservedTaskException异常捕获4 异常捕获的综合使用 结语 一、WPF异常 1 未捕获异常 正常情况下&#xff…

《走进对象村5》面向对象的第二大特性——继承

文章目录 🚀文章导读1.1 为什么需要继承1.2 继承的概念**关于继承有如下三点请记住:**1.4 父类成员访问1.4.1 子类中访问父类成员变量1.4.2 super 关键字1.4.3 子类中访问父类成员方法 1.5 子类构造方法1.6 面试题this 和 super 的区别(重点)1.7 再谈代码…