当前位置:网站首页>【点云处理之论文狂读前沿版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


边栏推荐
- Pic16f648a-e/ss PIC16 8-bit microcontroller, 7KB (4kx14)
- LeetCode 535. TinyURL 的加密与解密
- What is the difference between sudo apt install and sudo apt -get install?
- LeetCode 1089. 复写零
- How to check whether the disk is in guid format (GPT) or MBR format? Judge whether UEFI mode starts or legacy mode starts?
- Tree DP acwing 285 A dance without a boss
- We have a common name, XX Gong
- Digital management medium + low code, jnpf opens a new engine for enterprise digital transformation
- 樹形DP AcWing 285. 沒有上司的舞會
- Common penetration test range
猜你喜欢
随机推荐
Character pyramid
状态压缩DP AcWing 91. 最短Hamilton路径
In the digital transformation, what problems will occur in enterprise equipment management? Jnpf may be the "optimal solution"
LeetCode 532. K-diff number pairs in array
Parameters of convolutional neural network
LeetCode 515. 在每个树行中找最大值
State compression DP acwing 291 Mondrian's dream
cres
LeetCode 535. Encryption and decryption of tinyurl
Summary of methods for counting the number of file lines in shell scripts
Baidu editor ueeditor changes style
On the difference and connection between find and select in TP5 framework
LeetCode 75. Color classification
使用dlv分析golang进程cpu占用高问题
传统企业数字化转型需要经过哪几个阶段?
LeetCode 532. 数组中的 k-diff 数对
Recommend a low code open source project of yyds
【点云处理之论文狂读经典版10】—— PointCNN: Convolution On X-Transformed Points
Wonderful review | i/o extended 2022 activity dry goods sharing
AcWing 785. Quick sort (template)








