DGCNN,继Pointnet之后点云特征提取的又一代表性工作.
Pointnet是先在每个点的特征上各自进行MLP提取(没有点与点之间的特征交流),最后使用MAXpool将所有点的特征融合在一起,得到一个对总体点云的1024维的特征描述子,因此可以将Point net作为点云全局特征的提取器.
相比Pointnet,DGCNN则可以对点云的局部几何特征进行提取和利用.DGCNN采用了图神经网络对点云特征逐步进行更新和融合,即Edge conv.
DGCNN中的节点每一个点云的特征,边由在特征空间中定义的邻域所决定。这也是其与常见的图神经网络不同的地方,即dynamic,每更新一次节点的特征之后,节点之间的连接关系是根据特征的相似性矩阵来决定的(In our implementation, we compute a pairwise distance matrix in feature space and then take the closest k points for each single point.)
也就是说,图的链接关系由网络自己学习,因而edgconv 的感受野最大可以达到整体点云的直径。
第i个点的经过edgeconv的输出为:
x
i
′
=
□
j
:
(
i
,
j
)
∈
E
h
Θ
(
x
i
,
x
j
)
\mathbf{x}_{i}^{\prime}=\square_{j:(i, j) \in \mathcal{E}} h_{\Theta}\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)
xi′=□j:(i,j)∈EhΘ(xi,xj)
其中e_ij=hΘ(xi,xj)称为edge features,也就是将邻域点特征融合后的特征,其可学习参数为Θ
□代表一个逐通道的融合操作,要求必须是输入顺序无关的(因为点云的输入是无序的),如max或者sum。
因此h和□(edge function和aggregation operation)的选择就决定了edgeconv的输出
比如标准的卷积操作:
x
i
m
′
=
∑
j
:
(
i
,
j
)
∈
E
θ
m
⋅
x
j
x_{i m}^{\prime}=\sum_{j:(i, j) \in \mathcal{E}} \theta_{m} \cdot \mathbf{x}_{j}
xim′=j:(i,j)∈E∑θm⋅xj
Pointnet中采用的操作:(因此可以被视为EdgeConv的特例)
h
Θ
(
x
i
,
x
j
)
=
h
Θ
(
x
i
)
h_{\Theta}\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)=h_{\Theta}\left(\mathbf{x}_{i}\right)
hΘ(xi,xj)=hΘ(xi)
这里h函数的选择决定了卷积能否捕获局部特征:
如
h
Θ
(
x
i
,
x
j
)
=
h
Θ
(
x
j
−
x
i
)
h_{\Theta}\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)=h_{\Theta}\left(\mathbf{x}_{j}-\mathbf{x}_{i}\right)
hΘ(xi,xj)=hΘ(xj−xi)仅编码了局部信息,将形状视为小的patches的集合,并丢失了全局结构信息。
DGCNN采用了如下的函数形式:
h
Θ
(
x
i
,
x
j
)
=
h
ˉ
Θ
(
x
i
,
x
j
−
x
i
)
h_{\Theta}\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)=\bar{h}_{\Theta}\left(\mathbf{x}_{i}, \mathbf{x}_{j}-\mathbf{x}_{i}\right)
hΘ(xi,xj)=hˉΘ(xi,xj−xi)
显式地将由中心xi的坐标捕获的全局形状结构与由xj-xi捕获的局部邻域信息相结合。具体的表达形式:
e
i
j
m
′
=
ReLU
(
θ
m
⋅
(
x
j
−
x
i
)
+
ϕ
m
⋅
x
i
)
e_{i j m}^{\prime}=\operatorname{ReLU}\left(\theta_{m} \cdot\left(\mathrm{x}_{j}-\mathrm{x}_{i}\right)+\phi_{m} \cdot \mathrm{x}_{i}\right)
eijm′=ReLU(θm⋅(xj−xi)+ϕm⋅xi)
最后聚合函数选择了max()
总结一下DGCNN的表达式:
x
i
′
=
max
j
:
(
i
,
j
)
∈
E
h
Θ
(
x
i
,
x
j
)
h
Θ
(
x
i
,
x
j
)
=
h
ˉ
Θ
(
x
i
,
x
j
−
x
i
)
\mathbf{x}_{i}^{\prime}=\max _{j:(i, j) \in \mathcal{E}} h_{\Theta}\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)\\ h_{\Theta}\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)=\bar{h}_{\Theta}\left(\mathbf{x}_{i}, \mathbf{x}_{j}-\mathbf{x}_{i}\right)
xi′=j:(i,j)∈EmaxhΘ(xi,xj)hΘ(xi,xj)=hˉΘ(xi,xj−xi)
由于采用了max()聚合操作,因此edgeconv具有输入顺序不变性的特点,可以用于点云特征提取。
由于h中使用了相对距离xj-xi作为输入,因而edgeconv具有“部分”的平移不变性:
e
i
j
m
′
=
θ
m
⋅
(
x
j
+
T
−
(
x
i
+
T
)
)
+
ϕ
m
⋅
(
x
i
+
T
)
=
θ
m
⋅
(
x
j
−
x
i
)
+
ϕ
m
⋅
(
x
i
+
T
)
\begin{aligned} e_{i j m}^{\prime} &=\theta_{m} \cdot\left(\mathrm{x}_{j}+T-\left(\mathrm{x}_{i}+T\right)\right)+\phi_{m} \cdot\left(\mathrm{x}_{i}+T\right) \\ &=\theta_{m} \cdot\left(\mathrm{x}_{j}-\mathrm{x}_{i}\right)+\phi_{m} \cdot\left(\mathrm{x}_{i}+T\right) \end{aligned}
eijm′=θm⋅(xj+T−(xi+T))+ϕm⋅(xi+T)=θm⋅(xj−xi)+ϕm⋅(xi+T)
但是如果仅仅使用xj-xi,模型则退化为基于一组无序的patches来识别对象,而忽略了patches的位置和方向.因此将二者一起输入是较为合理的选择。
实验结果
模型结构:
分类精度
分别在分类、part segmentation任务上进行了评估,使用固定连接关系的DGCNN作为basiline:
超越了point net,以及pointnet++
速度
Our baseline model using the fixedk-NN graph outperforms theprevious state-of-the-art PointNet++ by1.0%accuracy, at the sametime being 7 times faster.
dynamic版本的DGCNN仍然更快:
消失实验
分别对坐标中心化操作、动态图(dynamic)、points number的影响进行了探究:
part segmentation
we take one red point from a source point cloud and compute its distance in feature space to points in other point cloudsfrom the same category. An interesting finding is that althoughpoints are from different sources, they are close to each other if they are from semantically similar parts.