当前位置:网站首页>【点云处理之论文狂读前沿版13】—— GAPNet: Graph Attention based Point Neural Network for Exploiting Local Feature
【点云处理之论文狂读前沿版13】—— GAPNet: Graph Attention based Point Neural Network for Exploiting Local Feature
2022-07-03 08:53:00 【LingbinBu】
GAPNet: Graph Attention based Point Neural Network for Exploiting Local Feature of Point Cloud
摘要
- 方法: 本文提出一种新的用于point cloud神经网络GAPNet,通过将graph attention mechanism嵌入到stacked Multi-Layer-Perceptron (MLP) layers中学习point cloud的局部几何表示
- 引入GAPLayer,通过强调邻域的不同权重学习每个点的attention features
- 利用multi-head mechanism,能够让GAPLayer从单独的head聚合不同的特征
- 在邻域中提出attention pooling layer得到local signature,用于提高网络的鲁棒性
- 代码:TenserFlow版本

方法
记 X = { x i ∈ R F , i = 1 , 2 , … , N } X=\left\{x_{i} \in \mathbb{R}^{F}, i=1,2, \ldots, N\right\} X={ xi∈RF,i=1,2,…,N}为输入point cloud set,本文中, F = 3 F=3 F=3,表示坐标 ( x , y , z ) (x, y, z) (x,y,z)。

GAPLayer
Local structure representation
考虑到真实应用中的point cloud数量很庞大,所以利用 k k k-nearest neighbor构造有向 graph G = ( V , E ) G=(V, E) G=(V,E),其中 V = { 1 , 2 , … , N } V=\{1,2, \ldots, N\} V={ 1,2,…,N}表示节点, E ⊆ V × N i E \subseteq V \times N_{i} E⊆V×Ni表示边, N i N_{i} Ni表示点 x i x_{i} xi的邻域集合。定义边特征为 y i j = ( x i − x i j ) y_{i j}=\left(x_{i}-x_{i j}\right) yij=(xi−xij),其中 i ∈ V , j ∈ N i i \in V, j \in N_{i} i∈V,j∈Ni, x i j x_{i j} xij表示 x i x_{i} xi的neighboring point x j x_{j} xj。
Single-head GAPLayer
Single-head GAPLayer的结构见图2(b)。
为了给每个neighbors分配注意力,分别提出了self-attention mechanism和neighboring-attention mechanism来获得每个点到其neighbors的注意力系数,如图1所示。具体而言,self-attention mechanism通过考虑每个点的self-geometric information学习self-coefficients;neighboring-attention mechanism通过考虑neighborhood关注local-coefficients。
作为初始化的步骤,对point cloud的顶点和边进行编码,映射到更高维度的特征,输出的维度为 F F F:
x i ′ = h ( x i , θ ) y i j ′ = h ( y i j , θ ) \begin{aligned} x_{i}^{\prime} &=h\left(x_{i}, \theta\right) \\ y_{i j}^{\prime} &=h\left(y_{i j}, \theta\right) \end{aligned} xi′yij′=h(xi,θ)=h(yij,θ)
其中 h ( ) h() h()是一个参数化的非线性函数,在实验中被选中作为single-layer neural network , θ \theta θ是filter的可学习参数集合。
通过融合self-coefficients h ( x i ′ , θ ) h\left(x_{i}^{\prime}, \theta\right) h(xi′,θ) 和 local-coefficients h ( y i j ′ , θ ) h\left(y_{i j}^{\prime}, \theta\right) h(yij′,θ)得到最终的attention coefficients,其中 h ( x i ′ , θ ) h\left(x_{i}^{\prime}, \theta\right) h(xi′,θ)和 h ( y i j ′ , θ ) h\left(y_{i j}^{\prime}, \theta\right) h(yij′,θ)是输出为1维的单层的神经网络, LeakyReLU() 表示激活函数:
c i j = LeakyRe L U ( h ( x i ′ , θ ) + h ( y i j ′ , θ ) ) c_{i j}=\operatorname{LeakyRe} L U\left(h\left(x_{i}^{\prime}, \theta\right)+h\left(y_{i j}^{\prime}, \theta\right)\right) cij=LeakyReLU(h(xi′,θ)+h(yij′,θ))
使用softmax对这些系数进行归一化:
α i j = exp ( c i j ) ∑ k ∈ N i exp ( c i k ) \alpha_{i j}=\frac{\exp \left(c_{i j}\right)}{\sum_{k \in N_{i}} \exp \left(c_{i k}\right)} αij=∑k∈Niexp(cik)exp(cij)
Single-head GAPLayer的目标就是计算每个点的ontextual attention feature。为此,利用计算得到的归一化系数更新顶点的特征 x ^ i ∈ R F ′ \hat{x}_{i} \in \mathbb{R}^{F^{\prime}} x^i∈RF′ :
x ^ i = f ( ∑ j ∈ N i α i j y i j ′ ) \hat{x}_{i}=f\left(\sum_{j \in N_{i}} \alpha_{i j} y_{i j}^{\prime}\right) x^i=f⎝⎛j∈Ni∑αijyij′⎠⎞
其中 f ( ) f() f()是一个非线性激活函数,实验中使用RELU函数。
Multi-head mechanism
为了获得足够的结构信息和稳定的网络,我们将 M M M 个独立的single-head GAPLayers进行拼接,生成通道数为 M × F ′ M \times F^{\prime} M×F′的multi-attention features:
x ^ i ′ = ∥ m M x ^ i ( m ) \hat{x}_{i}^{\prime}=\|_{m}^{M} \hat{x}_{i}^{(m)} x^i′=∥mMx^i(m)
如图2所示,multi-head GAPLayer 的输出是multi-attention features 和multi-graph features。 x ^ i ( m ) \hat{x}_{i}^{(m)} x^i(m)是第 m m m个head的 attention feature, M M M是heads的数量, ∥ \| ∥表示特征通道间的拼接操作。
Attention pooling layer
为了提高网络的稳定性和提升性能,在multi-graph features的相邻通道上定义attention pooling layer:
Y i = ∥ m M max j ∈ N i y i j ′ ( m ) Y_{i}=\|_{m}^{M} \max _{j \in N_{i}} y_{i j}^{\prime(m)} Yi=∥mMj∈Nimaxyij′(m)
GAPNet architecture

该结构与PointNet有3点不一样:
- 使用attention-aware spatial transform network使得Point cloud具有某种变换不变性
- 不对单个点进行处理,而是提取局部特征
- 使用attention pooling layer得到local signature,与中间层相连接,用于得到 global descriptor
实验
Classification

Ablation study


Semantic part segmentation


边栏推荐
- LeetCode 1089. Duplicate zero
- LeetCode 715. Range 模块
- 低代码前景可期,JNPF灵活易用,用智能定义新型办公模式
- 剑指 Offer II 029. 排序的循环链表
- On a un nom en commun, maître XX.
- The difference between if -n and -z in shell
- 我们有个共同的名字,XX工
- dried food! What problems will the intelligent management of retail industry encounter? It is enough to understand this article
- Binary tree sorting (C language, char type)
- How to check whether the disk is in guid format (GPT) or MBR format? Judge whether UEFI mode starts or legacy mode starts?
猜你喜欢

LeetCode 1089. 复写零

CSDN markdown editor help document

Digital management medium + low code, jnpf opens a new engine for enterprise digital transformation

Sending and receiving of request parameters

Phpstudy 80 port occupied W10 system

We have a common name, XX Gong

【点云处理之论文狂读前沿版9】—Advanced Feature Learning on Point Clouds using Multi-resolution Features and Learni

Low code momentum, this information management system development artifact, you deserve it!

On a un nom en commun, maître XX.

AcWing 788. Number of pairs in reverse order
随机推荐
状态压缩DP AcWing 91. 最短Hamilton路径
too many open files解决方案
Using variables in sed command
LeetCode 30. 串联所有单词的子串
Sword finger offer II 029 Sorted circular linked list
excel一小时不如JNPF表单3分钟,这样做报表,领导都得点赞!
我们有个共同的名字,XX工
Wonderful review | i/o extended 2022 activity dry goods sharing
Format - C language project sub file
Debug debugging - Visual Studio 2022
LeetCode 324. 摆动排序 II
AcWing 785. 快速排序(模板)
PHP mnemonic code full text 400 words to extract the first letter of each Chinese character
Introduction to the basic application and skills of QT
On the setting of global variable position in C language
Get the link behind? Parameter value after question mark
Save the drama shortage, programmers' favorite high-score American drama TOP10
使用dlv分析golang进程cpu占用高问题
推荐一个 yyds 的低代码开源项目
Introduction to the usage of getopts in shell