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: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

java学习,进阶,提升

http://how2j.cn/k/hutool/hutool-brief/1930.html?p=73689

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

寻迹模块TCRT5000的应用原理和功能实现(基于STM32)

目录 概述 1 认识TCRT5000 1.1 模块介绍 1.2 电气特性 2 系统应用 2.1 系统架构 2.2 STM32Cube创建工程 3 功能实现 3.1 代码实现 3.2 源代码文件 4 功能测试 4.1 检测黑线状态 4.2 未检测黑线状态 概述 本文主要介绍TCRT5000模块的使用原理,包括该模块的硬件实现方式,电路实现原理,还使用STM32类

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

Linux Centos 迁移Mysql 数据位置

转自:http://www.tuicool.com/articles/zmqIn2 由于业务量增加导致安装在系统盘(20G)磁盘空间被占满了, 现在进行数据库的迁移. Mysql 是通过 yum 安装的. Centos6.5Mysql5.1 yum 安装的 mysql 服务 查看 mysql 的安装路径 执行查询 SQL show variables like