PointNet++改进策略 :模块改进 | OE Unit | PointSIFT,结合方向信息提升模型精度

本文主要是介绍PointNet++改进策略 :模块改进 | OE Unit | PointSIFT,结合方向信息提升模型精度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Pasted image 20240830100720

  • 论文:PointSIFT: A SIFT-like Network Module for 3D Point Cloud Semantic Segmentation
  • 来源:ECCV 2020
  • 机构:清华大学 & 上海交通大学
  • 论文:http://arxiv.org/abs/1807.00652
  • 代码:
    • https://github.com/MVIG-SJTU/pointSIFT/
    • https://github.com/lelouedec/3DNetworksPytorch

Pasted image 20240830100712

  • 灵感来源:来着SIFT方法,该方法是提取2D图像中图像特征的方法,来生成类似图像中形状的描述
  • 方法实现:设计一个网络PointSIFT,能够提取物体中方向的信息同时能适应不同尺度的物体
  • 实验结果:在ScanNet数据集上语义分割任务中,相比PointNet++网络IOU提升2.3%Acc提升3.22%

网络整体

整体网络如下,PointSIFT对PointNet++中的MLP层进行了改进。
Pasted image 20240830101209

PointSIFT模块

通过堆叠多个 OE 单元,使得网络能够适应不同尺度的形状特征。在 PointSIFT 模块中堆叠多个 OE 单元,每个单元的感受野逐渐增大,以捕捉更大范围内的局部特征。使用shortcuts将各级 OE 单元的输出连接起来,然后通过一个点卷积(point-wise convolution)将多尺度特征融合,最终输出具有多尺度感知能力的特征表示。

Pasted image 20240830100754

Orientation-Encoding Unit

OE单元是一个方向编码单元来描述八个关键方向。

  • 其中主要两个步骤:
    • 八邻域搜索(Stacked 8-Neighborhood Search)对于每个输入点,PointSIFT 首先按照坐标轴将空间划分为八个象限,并在每个象限中找到距离最近的点作为邻居。如果某个象限内没有点,则将输入点自身复制为其最近邻。
      方向编码卷积(Orientation-Encoding Convolution, OEC):在八邻域点上进行三阶段的卷积操作(沿 X, Y, Z 轴),将这些点的特征进行融合。具体来说,卷积操作将 2×2×2 立方体中的特征依次沿各轴进行卷积,最终输出包含方向信息的特征表示。

Pasted image 20240830101158

代码实现

我在文章顶端中,有俩个PointSIFT实现版本分别是pytorch和tensorflow实现,大家根据需求迁移到自己的项目中,下面我讲以pytorch版本网络设计对代码进行注释,具体的实现细节可以参考上面的链接中

class PointSIFT(nn.Module):def __init__(self, nb_classes):super(PointSIFT, self).__init__()self.num_classes = nb_classes# 第一个 PointSIFT 残差模块,用于提取局部特征,半径为 0.1,输出通道为 64。self.pointsift_res_m3 = PointSIFT_res_module(radius=0.1, output_channel=64, merge='concat')# 第一个 PointNet 下采样模块,采样 1024 个点,半径为 0.1,32 个邻居点,输出特征维度为 128。self.pointnet_sa_m3 = Pointnet_SA_module(npoint=1024, radius=0.1, nsample=32, in_channel=64, mlp=[64, 128], group_all=False)# 第二个 PointSIFT 残差模块,半径为 0.2,输出通道为 128。self.pointsift_res_m4 = PointSIFT_res_module(radius=0.2, output_channel=128, extra_input_channel=128)# 第二个 PointNet 下采样模块,采样 256 个点,半径为 0.2,32 个邻居点,输出特征维度为 256。self.pointnet_sa_m4 = Pointnet_SA_module(npoint=256, radius=0.2, nsample=32, in_channel=128, mlp=[128, 256], group_all=False)# 第三个 PointSIFT 残差模块,第一个子模块,半径为 0.2,输出通道为 256。self.pointsift_res_m5_1 

这篇关于PointNet++改进策略 :模块改进 | OE Unit | PointSIFT,结合方向信息提升模型精度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基