本系列主要记录3D目标检测和分割系列文章的阅读笔记和心得。
先进行简要记录,到了一定的程度再进行总结梳理。若有读者看到,请谨慎参考,会存在一些翻译不当和逻辑不清的地方,请见谅!
文章标题:Dynamic Graph CNN for Learning on Point Clouds
要解决的关键问题:利用图模型,或者图模型的思想来学习点云的特征表示
关键词:边卷积 点云分类 点云分割
motivation: Pointnet虽然能够训练一个端到端的网络,即直接将点云作为输入,并且它的衍生网络能够进一步获得局部信息,但是他们仍旧忽略了点之间的几何关系,从而会限制局部特征的表示。
具体做法:为了解决这个问题,本文提出了一个新的简单的操作,称为EdgeConv,在保证排列不变性的前提下,获取局部的几何结构。不像之前的工作直接从他们的嵌入中产生点的特征,EdgeConv产生边特征用于描述点和它的邻居之间的关系。EdgeConv对于邻居的序是不变的,对于排列也是不变的。
2. Related Work
手动设计的特征
有很多的任务针对几何数据的处理和分析,包括分割,分类和匹配,他们都需要一些形状之间的局部相似性。一般来说,这个相似度是通过建立在能够获得局部集合结构的特征描述子。计算机视觉以及图形学的很多的文章,都针对点云提出了局部特征描述子,这些描述子能够是适应于不同的问题和数据结构。
广义的说,我们可以区别内部和外部描述子。外部描述子通常是来源于3D空间的形状的坐标,并且包含传统的方式,比如shape context, spin images, integral 特征, 基于距离的描述子, 点特征直方图,以及法向量直方图。内部的描述子将3D形状看成是一个流行,它的地量空间是离散化成一个mesh或者图;据定义,用度量表示的量是内在的,对等距变形是不变。
3. our approach
3.1 边卷积
考虑一个F维的含有n个点的点云,记为
X
=
{
x
1
,
x
2
,
.
.
.
,
x
n
}
⊆
R
F
X = \{ x_1, x_2, ..., x_n\}\subseteq R^F
X={x1,x2,...,xn}⊆RF. 利用一个有向图
G
=
(
V
,
E
)
G = (V, E)
G=(V,E)表示点云的局部结构,其中
V
=
{
1
,
2
,
.
.
.
,
n
}
V = \{1, 2, ..., n\}
V={1,2,...,n}和
E
⊆
V
×
V
E\subseteq V\times V
E⊆V×V是分别是节点和边。在最简单的情况下,构造
G
G
G为
R
F
R^F
RF中的k近邻图,其中的有向边的形式为
(
i
,
j
i
1
)
,
(
i
,
j
i
2
)
,
.
.
.
,
(
i
,
j
i
k
)
(i, j_{i1}),(i, j_{i2}),...,(i, j_{ik})
(i,ji1),(i,ji2),...,(i,jik),表示点
(
x
j
i
1
,
.
.
.
,
x
j
i
k
)
(x_{j_{i1}}, ..., x_{j_{ik}})
(xji1,...,xjik)是临近
x
i
x_i
xi的。我们定义边特征为
e
i
j
=
h
Θ
(
x
i
,
x
j
)
e_{ij} = h_{\Theta}(x_i, x_j)
eij=hΘ(xi,xj),其中
h
Θ
:
R
F
×
R
F
→
R
F
′
h_{\Theta}: R^{F} \times R^F\rightarrow R^{F'}
hΘ:RF×RF→RF′是由一些参数
Θ
\Theta
Θ非线性函数.
最终我们定义边卷积操作为应用一个通道级别的对称聚合操作,比如求和。这样边卷积在第i个顶点的结果为:
x
i
′
=
□
j
:
(
i
,
j
)
∈
E
h
Θ
(
x
i
,
x
j
)
x'_i = \square_{j:(i,j)\in E} h_{\Theta}(x_i, x_j)
xi′=□j:(i,j)∈EhΘ(xi,xj)
类似于图像中的传统卷积操作,我们可以认为
x
i
x_i
xi是一个中心像素,
{
x
j
:
(
i
,
j
)
∈
E
}
\{x_j: (i, j)\in E\}
{xj:(i,j)∈E}是它周围的patch。如图2中显示的那样。总的来说,给定一个有n个点的F维点云,边卷积会产生同样个数的
F
′
F'
F′维的点云。
h
h
h的选择和
□
\square
□
边函数和聚合函数对于最终的边卷积的结果有着重要的影响
在图像中,当
x
1
,
x
2
,
.
.
.
,
x
n
x_1, x_2, ..., x_n
x1,x2,...,xn表示规范放置的图像素时,图有一个局部的连通性,表示每一个像素的周围的固定大小的patch。选择
h
Θ
(
x
i
,
x
j
)
=
θ
j
x
j
h_{\Theta}(x_i, x_j)=\theta_jx_j
hΘ(xi,xj)=θjxj作为边函数,以及和作为聚合操作,就像传统的欧式卷积一样。
x
i
′
=
∑
j
:
(
i
,
j
)
∈
E
θ
j
x
j
,
x_i' = \sum_{j:(i,j)\in E}\theta_jx_j,
xi′=∑j:(i,j)∈Eθjxj,
其中,参数
Θ
=
(
θ
i
,
.
.
.
,
θ
k
)
\Theta = (\theta_i, ..., \theta_k)
Θ=(θi,...,θk)作为过滤器的参数。
第二种可能的选择是只编码全局形状信息,忽略了局部邻域结构。这种操作应用在PointNet中,可以是我们的边卷积的一种操作。
第三种是 h Θ ( x i , x j ) = h Θ ( x j − x i ) h_{\Theta}(x_i, x_j) =h_{\Theta}(x_j-x_i) hΘ(xi,xj)=hΘ(xj−xi). 这样的一个操作只编码局部信息,把形状看成是一个小碎片的集合的信息,并且损失了全局的形状结构。
最终,第四种选择,也就是本文的选择,就是一个对称的边函数
h
Θ
(
x
i
,
x
j
)
=
h
Θ
(
x
i
,
x
j
−
x
i
)
h_{\Theta}(x_i, x_j) = h_{\Theta}(x_i, x_j-x_i)
hΘ(xi,xj)=hΘ(xi,xj−xi)。这样的一个函数融合了全局形状信息(由碎片的中心
x
i
x_i
xi的坐标获得)以及局部邻域信息(由
x
j
−
x
i
x_j-x_i
xj−xi获得)。
3.2 动态图CNN
4. 跟现有方法的比较
*感觉这一部分的信息量比较大
DGCNN是和两个工作相关的,PointNets和图CNN,给出了我们的方法的具体设定
PointNet是我们的方法在k=1时的特例,即这个图的边的集合E是空集。在PointNet中应用的边函数是
h
(
x
i
,
x
j
)
=
h
(
x
i
)
h(x_i, x_j) = h(x_i)
h(xi,xj)=h(xi),只考虑全局的集合信息,而忽略了局部的。PointNet中使用的聚合函数是最大化,因为只是在单个节点上进行聚合。
PointNet++尝试把PointNet用作一个局部方法,来获得局部点云结构。在我们看来,PointNet++首先根据点之间的欧式距离构造了图,并在每一层,应用一个图粗化操作。对每一层,通过应用FPS选择一些固定个数的点。在改成之后,只保留选择的点忽略掉其他的点,这样的话,图就变的越来越小。和我们的方法不同的是PointNet++利用点的输入坐标计算两两之间的距离。PointNet++使用的边函数也是 h ( x i , x j ) = h ( x i ) h(x_i, x_j) = h(x_i) h(xi,xj)=h(xi),并且聚合操作也是最大化。
在图CNN中,MoNet, ECC, 和图注意力网络是最新的方法。这些方法共同的基础在于图上一个局部碎片的概念,其中一个类似于卷积的操作能够被定义。更具体的,GCN利用图结构来计算一个局部“伪坐标系统”
u
u
u 其中顶点的邻居被表示;卷积被定义为在这个坐标系统的M-元素的高斯混合:
x
i
′
=
∑
m
=
1
M
w
m
∑
j
:
(
i
,
j
)
∈
E
g
Θ
m
(
u
(
x
i
,
x
j
)
)
x
j
,
x'_i = \sum_{m=1}^Mw_m\sum_{j:(i,j)\in E}g_{\Theta_m}(u(x_i,x_j))x_j,
xi′=m=1∑Mwmj:(i,j)∈E∑gΘm(u(xi,xj))xj,
其中g表示的是高斯混合,
{
Θ
1
,
Θ
2
,
.
.
.
,
Θ
M
}
\{\Theta_1, \Theta_2, ..., \Theta_M\}
{Θ1,Θ2,...,ΘM}是高斯的科学系的参数,
{
w
1
,
.
.
.
,
w
M
}
\{w_1, ..., w_M\}
{w1,...,wM}是科学系的过滤器系数。我们能够简单的观察到上式是我们的更一般的边卷积操作的特例,也就是说,它是一个特殊的边函数
h
w
1
,
Θ
1
,
.
.
.
,
w
M
,
Θ
M
(
x
i
,
x
j
)
=
∑
m
=
1
M
w
m
g
h_{w_1, \Theta_1, ..., w_M,\Theta_M}(x_i, x_j) = \sum_{m=1}^Mw_mg
hw1,Θ1,...,wM,ΘM(xi,xj)=m=1∑Mwmg
并且求和就是聚合操作。
边卷积和MoNet以及其他的图CNN方法的重要的区别在于后者假设给定一个固定大小的图,并在其上应用类似于卷积的操作。但是我们的动态的更新图的每一层输出。这个方式,我们的模型不止需要学习如何获取局部的集合特征,还需要如何把点云中的点聚到一起。图4给出了不同特征空间的区别,例证了更深层含有的是长距离的语义信息。