PointNet++改进策略 :模块改进 | PAConv,位置自适应卷积提升精度

本文主要是介绍PointNet++改进策略 :模块改进 | PAConv,位置自适应卷积提升精度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 题目:PAConv: Position Adaptive Convolution with Dynamic Kernel Assembling on Point Clouds
  • 来源:CVPR2021
  • 机构:香港大学
  • 论文:https://arxiv.org/abs/2103.14635
  • 代码:https://github.com/CVMI-Lab/PAConv

前言

PAConv,全称为位置自适应卷积(Position Adaptive Convolution),是一种用于处理3D点云数据的通用卷积操作。不同于传统的2D卷积,PAConv通过根据点在三维空间中的位置动态组合卷积核。它的实现依赖于一个称为权重库(Weight Bank)的结构,该结构存储了基本的权重矩阵。这些矩阵通过一个称为ScoreNet的网络动态组合,ScoreNet根据点的位置关系学习如何自适应地组装这些卷积核。

PAConv的关键特点包括:

  1. 动态卷积核组装:卷积核不是固定的,而是通过根据学习到的与位置相关的系数动态组合权重矩阵生成的。
  2. 灵活性:相比于传统的2D卷积,PAConv更加灵活,特别适用于处理3D点云的不规则和无序特性。
  3. 降低复杂度:PAConv通过组合预定义的矩阵来生成卷积核,而不是直接从点的位置预测卷积核,这降低了计算复杂度。
  4. 与MLP网络集成:PAConv可以无缝集成到经典的点云处理框架(如PointNet或DGCNN)中,而无需改变其网络架构,同时还能显著提高在3D物体分类和分割任务中的表现。

Pasted image 20240904205406

方法实现

PAConv(位置自适应卷积)的实现基于以下几个核心部分:动态卷积核组装权重库(Weight Bank)ScoreNet。其主要实现步骤如下:

PAConv 的实现通过 ScoreNet 根据点之间的位置信息动态组合权重库中的权重矩阵,生成适应点云不规则性的卷积核。这一过程不仅有效处理了 3D 点云的复杂空间结构,同时通过减少直接预测卷积核的计算负担,实现了较高的效率和性能提升。
Pasted image 20240904212139

1. 权重库(Weight Bank)

PAConv 的第一个核心部分是权重库,它存储了多个基础的权重矩阵,记作 B = { B 1 , B 2 , … , B M } B = \{ B_1, B_2, \dots, B_M \} B={B1,B2,,BM},其中每个矩阵 B m B_m Bm 的维度为 C i n × C o u t C_{in} \times C_{out} Cin×Cout。这些矩阵不会直接用于卷积,而是通过后续的动态组合过程生成卷积核。

2. ScoreNet

ScoreNet 是一个多层感知器 (MLP),用于学习点之间的位置信息,生成用于组合权重矩阵的系数。

ScoreNet 的输入是中心点 p i p_i pi 和邻居点 p j p_j pj 的位置信息 ( p i , p j ) (p_i, p_j) (pi,pj),输出是一个归一化后的得分向量 S i j S_{ij} Sij,用于控制不同权重矩阵的组合。ScoreNet 的输出计算如下:
S i j = α ( θ ( p i , p j ) ) S_{ij} = \alpha(\theta(p_i, p_j)) Sij=α(θ(pi,pj))
其中:

  • θ ( p i , p j ) \theta(p_i, p_j) θ(pi,pj) 是通过 MLP 计算的非线性函数,提取点 p i p_i pi p j p_j pj 之间的位置信息。
  • α \alpha α 是 Softmax 归一化函数,确保得分在 ( 0 , 1 ) (0, 1) (0,1) 之间。

输出的得分向量 S i j = { S i j 1 , S i j 2 , … , S i j M } S_{ij} = \{ S_{ij}^1, S_{ij}^2, \dots, S_{ij}^M \} Sij={Sij1,Sij2,,SijM},每个 S i j m S_{ij}^m Sijm 对应权重矩阵 B m B_m Bm 的组合系数。

3. 动态卷积核的生成

使用 ScoreNet 输出的得分向量 S i j S_{ij} Sij,动态组合权重库中的权重矩阵,生成最终的卷积核 K ( p i , p j ) K(p_i, p_j) K(pi,pj)
K ( p i , p j ) = ∑ m = 1 M S i j m B m K(p_i, p_j) = \sum_{m=1}^{M} S_{ij}^m B^m K(pi,pj)=m=1MSijmBm
其中:

  • K ( p i , p j ) K(p_i, p_j) K(pi,pj) 是点 p i p_i pi p j p_j pj 之间的卷积核。
  • S i j m S_{ij}^m Sijm 是 ScoreNet 生成的组合系数,代表权重矩阵 B m B_m Bm 在生成卷积核时的权重。
  • B m B^m Bm 是权重库中的第 m m m 个权重矩阵。

4. 卷积操作

生成的卷积核 K ( p i , p j ) K(p_i, p_j) K(pi,pj) 用于与输入特征 F F F 进行卷积操作。对于给定点云的输入特征 F = { f 1 , f 2 , … , f N } F = \{ f_1, f_2, \dots, f_N \} F={f1,f2,,fN},输出特征 G = { g 1 , g 2 , … , g N } G = \{ g_1, g_2, \dots, g_N \} G={g1,g2,,gN} 通过以下公式计算:
g i = Λ ( { K ( p i , p j ) f j ∣ p j ∈ N i } ) g_i = \Lambda\left(\left\{ K(p_i, p_j) f_j \mid p_j \in N_i \right\}\right) gi=Λ({K(pi,pj)fjpjNi})
其中:

  • N i N_i Ni 是中心点 p i p_i pi 的邻居点集。
  • Λ \Lambda Λ 是用于聚合邻居点信息的操作(如 MAX、SUM 或 AVG)。
  • f j f_j fj 是邻居点 p j p_j pj 的输入特征。
  • g i g_i gi 是点 p i p_i pi 的输出特征。

5. 权重正则化

为了避免权重矩阵过于相似,PAConv 引入了权重正则化,确保权重库中的矩阵保持多样性。正则化的损失函数 L c o r r L_{corr} Lcorr 通过减少权重矩阵之间的相关性来实现:
L c o r r = ∑ B i , B j ∈ B , i ≠ j ∣ B i ⋅ B j ∣ ∣ ∣ B i ∣ ∣ 2 ∣ ∣ B j ∣ ∣ 2 L_{corr} = \sum_{B_i, B_j \in B, i \neq j} \frac{| B_i \cdot B_j |}{||B_i||_2 ||B_j||_2} Lcorr=Bi,BjB,i=j∣∣Bi2∣∣Bj2BiBj
其中:

  • B i B_i Bi B j B_j Bj 是权重库中的两个不同权重矩阵。
  • ∣ ∣ B i ∣ ∣ 2 ||B_i||_2 ∣∣Bi2 ∣ ∣ B j ∣ ∣ 2 ||B_j||_2 ∣∣Bj2 是权重矩阵的 L 2 L_2 L2 范数。
  • L c o r r L_{corr} Lcorr 用于最小化不同权重矩阵之间的相似性,确保生成的卷积核具有足够的多样性。

如何使用方法改进PointNet++网络

改进位置

  • 动态卷积核替换 MLP 层:利用 PAConv 替代 MLP 层,使得 PointNet++ 更好地捕捉点云的空间关系和几何结构。

这篇关于PointNet++改进策略 :模块改进 | PAConv,位置自适应卷积提升精度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文深入详解Python的secrets模块

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

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

PyCharm如何更改缓存位置

《PyCharm如何更改缓存位置》:本文主要介绍PyCharm如何更改缓存位置的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm更改缓存位置1.打开PyCharm的安装编程目录2.将config、sjsystem、plugins和log的路径

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

Python logging模块使用示例详解

《Pythonlogging模块使用示例详解》Python的logging模块是一个灵活且强大的日志记录工具,广泛应用于应用程序的调试、运行监控和问题排查,下面给大家介绍Pythonlogging模... 目录一、为什么使用 logging 模块?二、核心组件三、日志级别四、基本使用步骤五、快速配置(bas

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

macOS Sequoia 15.5 发布: 改进邮件和屏幕使用时间功能

《macOSSequoia15.5发布:改进邮件和屏幕使用时间功能》经过常规Beta测试后,新的macOSSequoia15.5现已公开发布,但重要的新功能将被保留到WWDC和... MACOS Sequoia 15.5 正式发布!本次更新为 Mac 用户带来了一系列功能强化、错误修复和安全性提升,进一步增

全解析CSS Grid 的 auto-fill 和 auto-fit 内容自适应

《全解析CSSGrid的auto-fill和auto-fit内容自适应》:本文主要介绍了全解析CSSGrid的auto-fill和auto-fit内容自适应的相关资料,详细内容请阅读本文,希望能对你有所帮助... css  Grid 的 auto-fill 和 auto-fit/* 父元素 */.gri

Python datetime 模块概述及应用场景

《Pythondatetime模块概述及应用场景》Python的datetime模块是标准库中用于处理日期和时间的核心模块,本文给大家介绍Pythondatetime模块概述及应用场景,感兴趣的朋... 目录一、python datetime 模块概述二、datetime 模块核心类解析三、日期时间格式化与