点云深度学习系列四: SGPN:Similarity Group Proposal Network for 3D Point Cloud Instance

1. 背景引入

分割概念

语义分割:对图像中每个像素或点云的每个点都划分出对应的类别

实例分割:实例分割是物体检测+语义分割的综合体。相对物体检测的边界框,实例分割可精确到物体的边缘;相对语义分割,实例分割可以标注出图上同一物体的不同个体(羊1,羊2,羊3...)

siamese network

 两张图片做分类的话,同一类在 feature space 里面很相近,不同类就是在 feature space 里面相差比较远,它们的两张图片 feed 到 CNN,利用共享的权重投影到同一个 feature space 上,训练的时候用的是 Hinge Loss(即图右公式)

点云深度学习系列四: SGPN:Similarity Group Proposal Network for 3D Point Cloud Instance_第1张图片

2.整体框架

首先使用PointNet/PointNet++来获取Np个点云的全局和局部特征,然后在特征的基础上计算三个属性矩阵相似矩阵(Similarity Matrix)、置信度矩阵(Confidence Map)和语义分割矩阵(Semantic Prediction),最后将所有结果整合即可得到实例分割结果。

点云深度学习系列四: SGPN:Similarity Group Proposal Network for 3D Point Cloud Instance_第2张图片

Similarity Matrix

similarity matrix 是通过 pointnet 生成的特征(Fsim),计算每个点的特征距离。Sij 就是点 i 和 点 j 在特征空间的距离,如果它距离越远,说明它们两个就不在同一个类别,如果距离越近,就说明在同一个类别。如果两个点都是椅子 1 的话,它们距离比较近;如果是椅子 1 和椅子 2 ,距离比较远;如果是椅子和桌子,它们在 feature space 里面的距离也要非常远。

点云深度学习系列四: SGPN:Similarity Group Proposal Network for 3D Point Cloud Instance_第3张图片

假设点的个数为Np,similarity matrix的大小为Np*Np,每一行是一个 group proposal,设一个 threshold,如果小于这个 threshold,对于每一个小于这个 threshold,表示这些点在一个 group 里面,也就是说我们现在有 Np 个 group proposal。

训练方式

借助siamese network的思想:两个图片如果是一类的话,就让它们在 feature specs 里面的距离很小。如果它们不是一类的话,就让它们距离比较大。

如果两个点属于不同类的话,让它们的距离很大。如果它们是相同类的话,就让它们在 feature specs 里面的距离比较小,我们同样得使用的是 Hingle loss,两个点都是椅子 1 的话,我们就 minimize 这个 term(下图右下公式),在这里介绍一个 double hinge loss,也就是说两个点,一个椅子 1、一个椅子 2 的话,我们让它们的 margin 比 K1 大。如果两个点是一个桌子、一个椅子的话,我们就让它们的距离比 K2 大,在训练的时候 K1 要比 K2 小一点,在实验中我们发现用这种 double hinge loss 的方式,会让结果更好一点,比 K1=K2 的时候结果好一点,这样我们就训练出了 similarity matrix。

点云深度学习系列四: SGPN:Similarity Group Proposal Network for 3D Point Cloud Instance_第4张图片

点云深度学习系列四: SGPN:Similarity Group Proposal Network for 3D Point Cloud Instance_第5张图片

 

SGPN中的相似矩阵的一个可视化结果,表示了一个指定点到其余点的距离。红色箭头处表示的是指定点的位置,点云的颜色表示相似度,黑色表示你距离较近。

 

Confidence Map

对于 similarity matrix 的每一个行,我们是一个 group proposal,对于这一个 group proposal,我们有一个 ground truth,然后我们把这个通过 similarity matrix 预测出来的 prediction 的结果和 ground truth 进行比较,我们计算 IoU,IoU 就是 inter section over union,也就是说,如果 IoU 越大的话,表示这一行,也就是这个 similarity propose 出来的结果更可信。如果 IoU 更小的话,是更不可信的,这样我们就 regress 出来 confident map,然后在这里,我们也 visualize 这些 confidence,颜色越深表示 confidence 越高,颜色越浅表示 confidence 越低,我们可以看到着一些 connection part,连接处的 confidence 比较低,通过这些方式去排除掉一些噪声,相当于在 similarity matrix 的预测削减掉一些 similarity matrix confidence 比较低的 group proposal。

置信度矩阵的主要目的是反映每一个聚类是一个正确分割实例的可信度。在训练阶段,置信度矩阵来自于相似矩阵;但是在使用阶段,置信度矩阵和相似矩阵都是则同时计算。 

点云深度学习系列四: SGPN:Similarity Group Proposal Network for 3D Point Cloud Instance_第6张图片

置信度矩阵的可视化,颜色越深表示可信度越高,而实例相交处的颜色则较浅.

 

Semantic Prediction

语义分割矩阵是一个基于点的分割器。经过PointNet求取特征后,每一个点得到一个类别概率,比如Np×Nc的矩阵,代表Np个点和Nc个类别

点云深度学习系列四: SGPN:Similarity Group Proposal Network for 3D Point Cloud Instance_第7张图片

 

图(右)黄色区域代表桌子,蓝色区域代表椅子

 

Group Proposal Merging

直接通过相似矩阵生成的聚类结果会存在较多的噪声和重叠。本文通过去除一些置信度较低的聚类结果,并进一步使用极大值抑制等方法最终得到一个噪声较低和没有重叠的聚类结果。 

当聚类完成后,每一个点都会属于某一个实例。但是在两个实例的相邻区域,点则可能属于两个实例;本文的方案就是将该点随机设置为某一个实例。

 

原作者公开课:http://www.mooc.ai/open/course/501

原作者公开课稿件:https://baijiahao.baidu.com/sid=1605235762733551923&wfr=spider&for=pc

泡泡机器人翻译:https://blog.csdn.net/u012348774/article/details/80792160

 

(感觉文章好多,后面可能会看的越来越粗略)

你可能感兴趣的:(点云深度学习)