CVPR 2023 | Attention-Based Point Cloud Edge Sampling

注1:本文系“计算机视觉/三维重建论文速递”系列之一,致力于简洁清晰完整地介绍、解读计算机视觉,特别是三维重建领域最新的顶会/顶刊论文(包括但不限于 CVPR, ICCV, ECCV, NeurIPS等)。本次介绍的论文是:
CVPR 2023 | Attention-Based Point Cloud Edge Sampling

CVPR 2023 | Attention-Based Point Cloud Edge Sampling

在这里插入图片描述

一、背景介绍

点云作为一种重要的数据表示,广泛应用于自动驾驶、增强现实和机器人技术等领域。由于点云数据量通常很大,对其进行采样以获得一个具有代表性的点集子集是三维计算机视觉中的一个基础和重要的任务。

除了随机采样和最远点采样之外,大多数传统的点云采样方法都是基于数学统计的,例如均匀采样、网格采样和几何采样等。最近,一些基于神经网络的方法开始通过端到端的任务驱动学习方式进行更好的任务定向采样,例如S-Net、SampleNet、DA-Net等。但是这些方法大多是基于生成模型的,而不是直接选择点。

本文提出了一种结合神经网络学习和数学统计直接点选择的点云边缘采样方法APES。它借鉴了Canny边缘检测算法的思想,使用注意力机制计算点之间的相关性,并采样相关性更高的边缘点。

二、研究现状

点云采样的研究可以分为基于数学统计的传统方法和基于深度学习的方法:

(1)传统采样方法:

  • 随机采样(RS):简单高效,但无法控制采样点分布。

  • 最远点采样(FPS):迭代选择点云中最远点,目前最广泛使用。

  • 均匀采样:选择点云中均匀分布的点。

  • 网格采样:使用规则网格采样点,无法精确控制点数。

  • 几何采样:基于局部几何信息采样,例如曲率。

  • 逆密度采样(IDIS):采样距离和值较小的点。

在这里插入图片描述

(2)深度学习采样方法:

  • S-Net:直接从全局特征生成新点坐标。

  • SampleNet:在S-Net基础上引入软投影操作。

  • DA-Net:考虑点云密度进行自适应采样。

  • MOPS-Net:学习采样变换矩阵与原点云相乘生成新点云。

  • PST-NET:使用self-attention层替代S-Net中的MLP层。

但是现有的深度学习采样方法大多基于生成模型,不能直接选择点;也没有考虑形状边缘作为特殊特征。

三、开展研究的动机

  • 现有采样方法存在的问题:

    1)传统方法无法进行任务驱动的采样;

    2)深度学习采样方法多基于生成模型;

    3)没有将形状轮廓作为特殊特征。

  • 可以借鉴图像Canny边缘检测的思想,检测点云的轮廓边缘点。

  • 注意力机制可以用来计算点之间的关联性。

  • 因此,有必要开展一种结合深度学习和数学统计的点云边缘采样方法。

四、方法介绍

在这里插入图片描述

1. Canny边缘检测算法

关键思路是计算每个像素与邻域内像素的梯度关系,梯度大的判断为边缘像素。

具体步骤:

(1)高斯滤波平滑图像

(2)计算梯度幅值和方向

(3)非极大值抑制

(4)双阈值检测潜在边缘

(5)连接边缘

核心思想是计算每个像素的梯度强度。我们可以更通用地考虑:

  • 定义像素 i i i与邻域像素 j j j之间的特征相关性 h ( p i , p j ) h(p_i, p_j) h(pi,pj);

  • 计算归一化的相关性图 m i = 1 k ∑ j ∈ S i h ( p i , p j ) m_i=\frac{1}{k}\sum_{j\in S_i} h(p_i, p_j) mi=k1jSih(pi,pj), S i S_i Si是像素 i i i的邻域;

  • 计算 m i m_i mi的标准差 σ i \sigma_i σi, σ i \sigma_i σi大的点选为边缘点。

这样相当于用标准差替代了梯度计算。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RR81icYF-1691562376798)(图片1链接)]

图1. Canny边缘检测算法关键思路

2. 基于局部的边缘采样

对点云,我们可以用 k k k近邻定义每个点的局部邻域 S i S_i Si,然后应用上述Canny边缘检测算法的思路:

  • 定义点 i i i与邻点 j j j的特征相关性 h l ( p i , p j ) h_l(p_i,p_j) hl(pi,pj);

  • 计算归一化图 m i l = 1 k ∑ j ∈ S i h l ( p i , p j ) m_i^l=\frac{1}{k}\sum_{j\in S_i} h_l(p_i,p_j) mil=k1jSihl(pi,pj);

  • 计算标准差 σ i \sigma_i σi, σ i \sigma_i σi大的点为边缘点。

这里, h l ( ⋅ ) h_l(·) hl()采用注意力机制计算:

h l ( p i , p j ) = Q ( p i ) T K ( p j − p i ) h_l(p_i, p_j)=Q(p_i)^TK(p_j-p_i) hl(pi,pj)=Q(pi)TK(pjpi)

Q Q Q K K K是点特征的线性映射。我们称之为邻域-点(N2P)注意力,它捕获局部信息。

采样结果如图2所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qzs1LLQJ-1691562376799)(图片2链接)]

图2. 基于局部的边缘点采样

3. 基于全局的边缘采样

全局信息对采样也很重要。令 k = N k=N k=N,即考虑全部点,那么N2P注意力化简为全注意力:

h g ( p i , p j ) = Q ( p i ) T K ( p j ) h_g(p_i,p_j)=Q(p_i)^TK(p_j) hg(pi,pj)=Q(pi)TK(pj)

称为点-点(P2P)注意力

得到全相关性图 M g M_g Mg,我们改为按列(而不是行)计算和,得到 u j = ∑ i m i j u_j=\sum_i m_{ij} uj=imij u j u_j uj较大的点作为边缘点采样。

这是因为,如果点 j j j邻近边缘点 i i i,那么 m i j m_{ij} mij应较大,如果 j j j M g M_g Mg中对应列元素的值经常较大,则 j j j也可能是边缘点。

4. 网络框架

基于上述方法,我们构建了分类网络和分割网络,结构如图3所示:

在这里插入图片描述

主要组成部分:

  • 编码层:提取点云特征。

  • 采样层:应用提出的基于局部或全局的边缘点采样方法进行下采样。

  • 解码层:使用注意力机制进行上采样。

5. 算法伪代码

基于局部的边缘采样伪代码:

输入:
    原始点云P,包含N个点
    采样大小M
    邻域大小k
输出:
    采样后的点云Q,包含M个点
    
P' = FPS(P, 2M) // 先用FPS采样2M点
for i = 1 to N:
    Si = KNN(P', i, k) // 找到第i个点的k近邻
    mi = Attention(P'[i], P'[Si]) // 注意力计算局部归一化相关性图
    σi = Std(mi) // 计算标准差 
I = 按σi从大到小排序 // 按标准差排序
Q = P'[I[0:M]] // 取前M个点作为采样结果

基于全局的采样类似,区别在于直接计算全局归一化相关性图,并按列和排序。

五、实验结果

在ModelNet40分类任务和ShapeNetPart分割任务上进行评估。

在这里插入图片描述

1. 定量结果

  • 分类精度与SOTA方法处于同水平。

  • 分割精度略低于SOTA,但对下采样点云的中间结果非常好。

    这是因为边缘采样改变了点云分布,上采样时无法很好重构。

2. 定性结果

如下图所示,边缘采样明显捕捉了形状轮廓。

在这里插入图片描述

基于局部的更严格地聚焦边缘点;基于全局的也采样了一些边缘附近的关键点。

在这里插入图片描述

3. 对比实验

与其它采样方法比较,边缘采样整体效果较好,尤其是采样率较高时。如图5所示,边缘采样明显聚焦轮廓。

在这里插入图片描述

六、讨论与未来展望

1. 优点

  • 直接选择点进行采样,过程可视化。

  • 可以采样任意数量的点。

  • 效果好,尤其是采样率高时。

2. 不足

  • 分割精度略低,上采样时无法很好重构。

  • 只考虑了边缘特征,没有利用其它几何特征。

3. 未来展望

  • 设计上采样方法以处理边缘采样的分布改变。

  • 加入其它辅助损失进行训练。

  • 结合更多几何特征进行采样。

总结

本文提出了一种结合深度学习和数学统计的点云边缘采样方法APES。它使用注意力机制计算点之间的相关性,采样相关性高的边缘点。定量和定性结果都验证了其有效性。未来可以考虑引入更多几何特征、设计更好的上采样方法等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【c语言】-- 结构体

📕博主介绍:目前大一正在学习c语言,数据结构,计算机网络。 c语言学习,是为了更好的学习其他的编程语言,C语言是母体语言,是人机交互接近底层的桥梁。 本章来学习结构体。 让我们开启c语言学习之…

CTF流量题解http4.pcapng

流量分析 导出http 打开报错 验证文件头,发现是zip。 图常片见里文可件能的包16含进:压制缩头包部,word,pdf JPG FF D8 FF E0/FF D8 FF E1 PNG 89 50 4E 47 GIF 47 49 46 38 ZIP 50 4B 03 04 RAR 52 61 72 21 MP3 49 44 33 0 改后缀 使用工具爆破。 git clone git…

WordPress使用【前端投稿】功能时为用户怎么添加插入文章标签

在使用Wordpress做前端投稿功能的时候,可能需要用户填写文章标签,在插入文章的时候很多人不知道怎么把这些标签插入进去,下面这篇文章来为大家带来WordPress使用前端投稿功能时插入文章标签方法。 在Wordpress里 wp_insert_post 此函数的作…

docker菜谱大全

记录docker常用软件安装,感谢小马哥和杨师傅的投稿。😎😎😎 相关文档: DockerHub:https://hub.docker.com/Linux手册:https://linuxcool.com/Docker文档:https://docs.docker.com/Do…

探索Python异常世界:玩转异常、模块与包

文章目录 一 异常概念二 异常的捕获方法2.1 捕获异常的原因2.2 捕获常规异常2.3 捕获指定异常2.4 捕获多个异常2.5 捕获异常并输入异常信息2.6 捕获所有异常2.7 异常else2.8 异常finally 三 异常的传递四 python模块4.1 模块的导入方式4.2 自定义模块4.3 测试模块4.4 注意事项4…

金蝶云星空与旺店通WMS对接集成盘盈单查询连通商品同步接口(盘盈单=>其他入库单)

金蝶云星空与旺店通WMS对接集成盘盈单查询连通商品同步接口(盘盈单>其他入库单) 来源系统:金蝶云星空 金蝶K/3Cloud结合当今先进管理理论和数十万家国内客户最佳应用实践,面向事业部制、多地点、多工厂等运营协同与管控型企业及集团公司,提供一个通用…

python爬虫相关

目录 初识爬虫 爬虫分类 网络爬虫原理 爬虫基本工作流程 搜索引擎获取新网站的url robots.txt HTHP协议 Resquests模块 前言: 安装 普通请求 会话请求 response的常用方法 简单案例 aiohttp模块 使用前安装模块 具体案例 数据解析 re解析 bs4…

第2章:模型评估与选择

经验误差与泛化误差 过拟合是核心问题。 过拟合是无法避免的,只能尽量去缓解。 每个算法都要思考,是怎么缓解过拟合的?缓解方法什么情况下会失效? 模型选择 评估方法 留出法 为什么不能太小? 因为Mx要用来逼近M100的结…

深入理解PyTorch中的NoamOpt优化器

深入理解PyTorch中的NoamOpt优化器 作者:安静到无声 个人主页 今天,我们将深入探讨一个在自然语言处理领域广泛使用的优化器——NoamOpt。这个优化器是基于PyTorch实现的,并且在"Attention is All You Need"这篇论文中首次提出。…

JedisDataException DENIED Redis is running in protected mode...异常的解决办法

一. 异常现象 壹哥最近在带学生做项目的过程中,有学生在使用Redis的时候,产生了如下这样的异常信息: com.yyg.demo.Demo01Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is runni…

Vue项目npm run dev 启动报错TypeError: Cannot read property ‘upgrade‘ of undefined

vue项目启动报错 TypeError: Cannot read property upgrade of undefined 由于我的vue.config.js文件 里面的代理target为空导致的 修改: 结果就可以正常运行了 参考原文: vue项目运行时报Cannot read property ‘upgrade’ of undefined错误_cannot r…

Springboot中拦截GET请求获取请求参数验证合法性

目录 目的 核心方法 完整代码 创建拦截器 注册拦截器 测试效果 目的 在Springboot中创建拦截器拦截所有GET类型请求,获取请求参数验证内容合法性防止SQL注入(该方法仅适用拦截GET类型请求,POST类型请求参数是在body中,所以下面…

git教程(第一次使用)

一、gitee和github区别 二、git使用 下载地址 windows:https://gitforwindows.org/ mac:http://sourceforge.net/projects/git-osx-installer/ 1.git初次运行前的配置 (1)配置用户信息 git config --global user.name "…

torch.functional.affine_grid的坑

问题描述:在用torch进行图像仿射变换的时候,平移始终有问题 比如现在想要让一张图对应的tensor平移0.5个图像长度 那么需要先构造一个transform_matrix,这里网上说的是偏移量不是像素值,而是归一化的比例 shift_x 0.5 shift_y…

LAMMPS推出GUI界面,模拟从未如此简单

lammps一直没有编辑界面,对新手来说特别的不友好,不过,今年8月4号lammps推出了一款包含界面的版本。 运行效果如下图所示,这个版本带有独立的编辑界面,可以使用菜单新建或者打开in文件,也可以使用菜单运行…

openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA

文章目录 openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA34.1 语法格式34.2 参数说明34.3 示例 openGauss学习笔记-34 openGauss 高级数据管理-SCHEMA SCHEMA又称作模式。通过管理SCHEMA,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象…

配置root账户ssh免密登录并使用docker-machine构建docker服务

简介 Docker Machine是一种可以在多种平台上快速安装和维护docker运行环境,并支持多种平台,让用户可以在很短时间内在本地或云环境中搭建一套docker主机集群的工具。 使用docker-machine命令,可以启动、审查、停止、重启托管的docker 也可以…

计算机组成原理-笔记-第四章

目录 第四章——指令系统 1、指令格式 (1)指令(机器指令-二进制数) (2)指令分类(按照 地址码的数量 分类) (3)指令分类(按照长度分类&#x…

.Net C# 免费PDF合成软件

最近用到pdf合成,发现各种软件均收费啊,这个技术非常简单,别人写好的库一大把,这里用到了PDFsharp,项目地址Home of PDFsharp and MigraDoc Foundation 软件下载地址 https://download.csdn.net/download/g313105910…

【Python学习笔记】Matplotlib画图

Matplotlib画图 一、基本函数1. plt.plot2. plt.text3. 设置刻度4. 设置坐标5.设置网格 二、绘制折线图三、绘制散点图四、绘制柱状图五、绘制双坐标图 一、基本函数 1. plt.plot 参数功能选项color改变折线颜色‘r’,‘g’,‘b’,‘black’,‘gray’marker改变数据点的形状‘…