DGCNN
1. 背景介绍
1.1 点云
点云(Point Cloud),顾名思义是很多2维或3维点的集合。
因为传感器获取的数据往往是点云形式,而将点云还原成图形再进行处理的方法消耗过大,所以直接利用点云进行操作的一类技术应运而生。目前点云相关的任务基本已经覆盖图像领域的大多数任务,如分类、分割等。
1.2 前期工作
1.2.1 CVPR2017 PointNet
之前针对3D点云数据处理的思路有两种:
- 将数据从高位空间投影到低维空间,在二维平面上处理
- 3D卷积
但降维方法对投影要求很高且必然会损失信息,3D卷积的方法复杂度过高,都不适合实际应用。由此,引出PonitNet
其设计思路是Share MLP + MaxPooling
通过MLP对点云中的每个点进行特征提取,在多层特征提取后使用MxPooling不同维度的特征进行聚合,得到全局特征。
对于分类任务,maxpooling后会输出分类预测分数,而对于分割任务,将全局特征与点云特征串联,用MLP输出点的分类结果。
缺点:PointNet作为一个早期的工作,只提供了点云处理的方法,直接使用感知机对所有点一起进行特征提取,没有考虑到局部特征的处理。
1.2.2 NIPS2017 PointNet++
为了解决PointNet的局限性,PointNet借鉴CNN的思路改进PointNet
借鉴CNN的思路,PointNet++提出了Sampling + Grouping + PointNet的网络结构
- Sampling
因为点云中的点数量极其庞大,对所有点进行特征提取复杂度过高。故首先使用采样算法选取部分样本点,以这些点代表全部信息。(文中使用的是FPS最远点采样算法) - Grouping
参考CNN的结构,以样本点为中心(CNN像素点),以给定半径(卷积核大小)画圆,为后续的局部卷积做铺垫,这里每个点邻域的点个数可能不相同。 - feature learning
由PointNet承担类似卷积的职能,将每个样本点及其邻域作为PonitNet的输入。
缺点:只能提取点的特征,忽视了点与点之间的关系
2 TOG 2019 Dynamic Graph CNN
2.1 创新点
- 针对之前工作只关注点特征,忽略点之间关系的问题。提出了EdgeConv,将点之间的关系融入到点云处理中
- 引入动态更新的图模型,能够有效的提升模型效果
效果:在点云分割、分类任务中取得了最优水平(2018)
2.2 EdgeConv边缘卷积
2.2.1 定义
设点云中有n个点, x = x 1 . . . x n x={x_1 ... x_n} x=x1...xn,使用KNN将 x x x构造为图 G = ( V , E ) G=(V, E) G=(V,E),其中 V = ( 1... n ) V=(1...n) V=(1...n), E ∈ V ∗ V E∈V*V E∈V∗V
设点 x i x_i xi与 x j x_j xj之间的边缘特征为 e i j e_{ij} eij, e i j = h ( x i , x j ) e_{ij}=h(x_i,x_j) eij=h(xi,xj),其中 h h h为特征提取函数
2.2.2 EdgeConv
首先,如上图左图所示,计算点 x i x_i xi与其邻接点(之一的) x j x_j xj的边缘特征 e i j e_{ij} eij, e i j e_{ij} eij一般来说是多维的。图中使用的是全连接的方法,而作者实际使用的是MLP。
然后,如上图右图所示,将于 x i x_i xi相邻的K个点,均按上述方法提取边缘特征 e i j e_{ij} eij,最后通过Pooling等聚合函数进行聚合输出,更新 x i x_i xi的值。
其中,用 x i x_i xi与其邻域内点的边缘特征对样本点进行更新的过程被称为EdgeConv
EdgeConv的关键在于特征提取函数h函数的选择,之前工作提到的函数有:
- 2D场景下的卷积函数 x ′ = ∑ θ j x j x^{'}=\sumθ_jx_j x′=∑θjxj(卷积核)
- PointNet中的全局特征 h ( x i , x j ) = h ( x i ) h(x_i,x_j)=h(x_i) h(xi,xj)=h(xi)(只与自己相关,与邻域内其他点无关)
- 仅考虑局部特征 h ( x i , x j ) = h ( x i − x j ) h(x_i,x_j)=h(x_i-x_j) h(xi,xj)=h(xi−xj)
- 结合上述2,3点的本文公式 h ( x i , x j ) = h ( x i , x j − x i ) h(x_i, x_j)=h(x_i,x_j-x_i) h(xi,xj)=h(xi,xj−xi)
通过一系列的对比,文中采用
h
(
x
i
,
x
j
)
=
h
(
x
i
,
x
j
−
x
i
)
h(x_i, x_j)=h(x_i,x_j-x_i)
h(xi,xj)=h(xi,xj−xi)作为边缘特征提取函数,其公式解释为:
e
i
j
m
=
R
E
L
U
(
θ
m
∗
(
x
j
−
x
i
)
+
δ
m
∗
x
i
)
e_{ijm}=RELU(θ_m*(x_j-x_i)+δ_m*x_i)
eijm=RELU(θm∗(xj−xi)+δm∗xi)
2.3 动态图更新
DGCNN与图卷积方法的一个显著特征在于动态图更新的方法。因为工作中点的邻域是通过计算得出的,所以像GCN一样在网络的每一层使用相同的网络结构并不合理。实验证明,在每层特征空间中重新使用近邻算法计算采样点的领域并更新图模型,能够有效的提升网络效果。
直观来讲,在每层特征空间中重新计算点之间的距离,能够更好的让信息在相似的结构之间传播,加快局部语义信息的学习,如下图:
左:原始空间中的欧氏距离
中:全局变换后的距离
右:训练网络最后一层的距离
可以看到网络学习到了局部几何信息,说明方法学习到了长期语义信息。这个方法同样可以用于对点云中的点进行分组聚类
2.4 网络总览
3. 参考资料
[1] 刘永成博士的分享讲解视频 https://www.bilibili.com/video/BV1h4411E7jD?from=search&seid=9324077021637292312
[2] 参考博客 https://blog.csdn.net/weixin_39373480/article/details/88724518
[3] DGCNN原文 https://par.nsf.gov/servlets/purl/10124348
[4] 知乎DGCNN的相关资料若干