题目:A Convolutional Neural Network for Point Cloud Instance Segmentation in Cluttered Scene Trained by Synthetic Data Without Color
Abstract
本文提出了一种训练卷积神经网络的方法,以利用合成数据预测实例分割结果。
所提出的方法基于SGPN框架。
我们用学习如何提取局部几何特征的“动态图卷积神经网络DGCNN”取代了原来的特征提取器,并提出了一个简单有效的损失函数,使网络更加专注于hard examples(硬例子)。
I. INTRODUCTION
- 我们专注于料框抓取场景,其中大量相同的零件堆放在一个等待对齐的盒子中。
- 受SGPN [7]的启发,SGPN使用单个网络在点云上执行实例分割。
- 与目前许多基于2D图像[18]或3D点云[19]、[20]的实例分割方法不同,RGB图像或颜色信息起着重要作用,所提出的方法只需要点云而没有颜色。
- 因此,所提方法可以通过合成获得训练数据。请注意,尽管训练数据集是合成的,但测试结果是在真实数据上执行的。
我们在SGPN [7]的框架下进行了一些重大改进,SGPN [5]使用PointNet/PointNet++ [6],[6]作为特征提取器,并根据相似矩阵,置信图和语义预测的回归来预测实例分割。由于PointNet在提取本地信息方面没有显示出足够的性能[8];
- 因此我们将其替换为动态图CNN(DGCNN)的分段模型的网络结构。
- 此外,我们提出了一个focal double-hinge loss function(焦点双铰链损失函数),使网络更专注于疑难情况的分割。
我们的主要贡献如下:
-
由于特征提取器的改进,所提方法的实例分割性能优于斯坦福大学大规模7D室内空间数据集(S3DIS)[3]和我们的数据集上的SGPN [21]。
-
所提出的方法只需要点云。因此,训练数据集可以从模拟中生成,并轻松应用于其他对象。
-
与SGPN的损失函数相比,提出并应用了一种新的损失函数,使训练损失更容易收敛。
-
所提出的由合成数据训练的Graph CNN在真实数据上具有优异的性能。
-
实验结果表明,所提方法对堆积物体的姿态估计精度较高。
第二节介绍以前的一些进展和SGPN的结构。
第三节提出了点云实例分割的方法。
第四节用S3DIS数据集和我们的杂乱场景数据集证明了所提方法的有效性。
II. Related Work
先驱者在体素化形状上使用3D卷积神经网络[25]。这种简单的3D网络状结构用于3D点云,需要很高的内存要求和计算成本,限制了实际应用。
- 2D 上的分割:FCN、SegNet、Faster-R-CNN、Mask R-CNN
- 点云上的分割:
- 需要点云和RGB图——费资源又耗时。
- 点云无序性——点云转换为3D体素网格——计算成本
- 置换不变性——PointNet——使用对称函数来解决点云的排列不变性——网络单独处理每个点,MLP学习每个点的特征,局部信息提取不佳——有人改进:搜索嵌入空间中最近或相似的点来探索点云的局部信息
因此,基于PointNet,SGPN [7]提出了一种新的点云实例分割方法。由于其优异的性能和灵活性,我们提出了一种基于它的点云实例分割新方法。
图1.所提方法生成的实例分割结果。
我们首先使用与 [1] 相同的方法来获取边界点,并为每个边界点输出实例标签。
(a) 场景的有组织的点云。(b) 场景云中的边界点。(c) 边界点云上的实例分割。
SGPN的结构
SGPN [7] 将实例分段表述为clustering problem(集群问题)。SGPN使用PointNet 提取点云的特征+训练网络来预测语义结果、相似性矩阵和逐点置信度+生成实例分割结果。
- 图二所示,SGPN 使用特征提取器提取特征F的大小Np×Nf.
- Np :点云的大小 Nf :特征的维度。
- F 馈送到三个子网和三个特征矩阵FSIM ,FCF ,FSEM 以相同的形状生成Np×Nf .
- 三个子网分别负责生成similarity matrix(相似性矩阵,SIM)、point-wise confidence map(CF,逐点置信图)、semantic segmentation map(SEM,语义分割图)。
- SGPN 的loss是三个子网的组合。L=LSIM+LCF+LSEM
简而言之,SGPN使属于同一实例的点在嵌入式空间中更接近,将分割问题转变为聚类问题。
图2.改进的SGPN的网络架构。我们将边界点云馈送到网络中,并输出每个点的实例结果。
DGCNN提取每个点的特征,然后分别发送到三个子网。Np 是点云的大小,我们设置Np=4096 .Nc 是对象类别的数量【也就是说,你的箱子里放了几种物品】,在 S3DIS 中Nc=13 ,在我们的数据集中Nc=1
1)特征提取器
SGPN使用PointNet的分段网络来提取点云的特征。每个点对应一个 128 维特征,然后将这些特征发送到三个子网中进行进一步处理。
2) Similarity Matrix 相似矩阵
- 在,特征矩阵的i 行是一个Nf 维张量,表示点位置在嵌入式空间中的位置。
- 相似性矩阵的子网使用获取的特征来生成相似性矩阵S。
- S的大小是Np×Np .S中的元素是嵌入空间中每个点对的特征距离,隐式的表示 和 是否属于同一实例。
- SGPN使<相似的点对>在嵌入空间中具有接近的特征距离,尽管它们在物理空间中很远。
- 每对点 和 的关系定义为三类:
- 和属于同一实例;
- 和属于同一类别,但属于不同的实例;
- 和不属于同一类别。
损失函数如下。
- 为在嵌入空间的特征。 代表i和j的相似性。
- α , K1 , K2 是常数。α>1 是增加语义分割损失的权重。因为嵌入空间中不同类别的点对的特征距离应大于同一类别的特征距离,所以K1<K2。
\begin{align*} L_{SIM}=&\sum _{i}^{N_{p}} \sum _{j}^{N_{p}} l(i,j) \\ l(i,j)=&\begin{cases} \Vert F_{SIM_{i}} - F_{SIM_{j}}\Vert _{2} & C_{ij}=1 \\ \alpha \,\mathrm {max}(0, K_{1} - \Vert F_{SIM_{i}} - F_{SIM_{j}}\Vert _{2}) & C_{ij}=2 \\ \mathrm {max}(0, K_{2} - \Vert F_{SIM_{i}} - F_{SIM_{j}}\Vert _{2}) & C_{ij}=3 \end{cases}\tag{1}\end{align*}
3) Confidence Map 置信图
- 置信度图是一个Np×1 的矩阵,它表明模型认为point分组的正确程度。
- SGPN的回归置信度图G 根据ground Truth G,也是Np×Np 的相似性矩阵。
- similarity matrix(相似性矩阵)的每一行都是一个聚类:同一实例小于某个阈值。
- 对于此组改进,SGPN将此预测的结果与ground truth进行比较,并计算intersection over union (IoU)。IoU 越大,预测结果越接近真实聚类,分组候选项的可信度就越高。
- 损失 预测group和ground truth group之间的 L2 损失。
4)Semantic Segmentation Map 语义分割图
- 语义分割图是一个点分类器。类别数量为Nc 。
- SGPN发送到子网中并输出Np×Nc 大小的矩阵。
- 表示点属于每个类别的可能性。
- 的语义分割图是通过交叉熵函数计算的。
III. Method
我们提出了一种在没有颜色的点云上进行例如分割的新方法。受SGPN方法的启发,该方法将实例分割视为聚类问题,我们直接对边界点云数据集执行实例分割。
真实场景的边界点通过[1]中提出的方法捕获。
通过对RGB图像执行Canny Edge算法并将相应的像素映射到场景中的点云来提取边界点。我们使用合成数据训练网络,并用真实数据评估我们提出的网络。
- 我们使用DGCNN [8]而不是PointNet作为SGPN的特征提取器。DGCNN是一个语义分割网络,其结构与PointNet相似。不同之处在于DGCNN引入了一种名为EdgeConv [8]的新算法,该算法利用局部几何结构并学习全局特征。当合成数据缺少颜色信息时,这些功能至关重要。
- 此外,对于我们的场景,我们对损失函数进行了一些调整,并在预测阶段添加了distance mask(距离遮罩)。
- 我们的方法经实验证明在我们的数据集和 S3DIS 上具有更好的性能。
A. Replace Feature Extractor 替换特征提取器
- 我们合成的点云信息只包含坐标,因此局部特征变得尤为重要。SGPN中用作特征提取器的PointNet单独处理点,因此网络无法学习本地特征。该问题是由缺少颜色信息引起的,因为仅通过空间坐标很难确定点的类别。
- 为了解决这个问题,我们首先用DGCNN替换特征提取器PointNet,并在S3DIS上评估此修改。
- 这种替换的效果在我们不包含颜色信息的数据集上起着更重要的作用。
B. Focal Double-Hinge Loss 局灶性双铰链缺失
- SGPN [7] 划分点对的关系{Pi,Pj} 分为三类。
- 受RetinaNet [32]的启发,我们使网络更加关注一些点对——位于两个不同实例的边界上。
- 当点对的特征距离小于某个阈值时,可以将其视为同一实例。
- 因此,如果 2 个点已经足够接近,则不需要它们对损失函数做出贡献。
- 为了实现这一点,我们重新定义损失函数如下。
其中:
- α ,β ,M1 ,M2 和M3 是常量,使得β>α>1 ,M3>M2>M1>0 。
- 与原始损失函数相比,所提出的损失函数倾向于使同一实例中两点之间的特征距离小于阈值M1 但不需要接近零。
- 因此,易于区分的点对的贡献被降低了权重。通过改进,我们可以发现预测结果有了很大的提高。
\begin{align*} L_{SIM}^{*}=&\sum _{i}^{N_{p}} \sum _{j}^{N_{p}} l^{*}(i,j) \\ l^{*}(i,j)=&\begin{cases} \beta \mathrm {max}(0, \Vert F_{SIM_{i}} - F_{SIM_{j}}\Vert _{2} - M_{1}) & C_{ij}=1 \\ \alpha \mathrm {max}(0, M_{2} - \Vert F_{SIM_{i}} - F_{SIM_{j}}\Vert _{2}) & C_{ij}=2 \\ \mathrm {max}(0, M_{3} - \Vert F_{SIM_{i}} - F_{SIM_{j}}\Vert _{2}) & C_{ij}=3 \end{cases}\tag{2}\end{align*}
C. Distance-Mask 距离掩码
Inspired by Hinterstoisser et al. [12], if the distance dij between two points is greater than the longest distance dmax in the model, then these two points cannot belong to the same instance as shown in Figure 3. So, we add a distance judgment during the process of clustering points. If their euclidean distance exceeds the maximum size, even if they are very close in embedding space, they will not be regarded as the same instance. We show the improvement effect in Table 2.
- 灵感来自Hinterstoisser等人。 [12],如果在模型中两点之间距离 大于最长距离,这两个点不能属于同一个实例,如图 3 所示。
- 因此,我们在聚类点的过程中增加了距离判断。如果它们的欧几里得距离超过最大值,即使它们在嵌入空间中非常接近,也不会被视为同一实例。我们在表2中显示了改善效果。
图三.蓝色圆圈对应于Distance-Mask的pi ,在模型中圆的半径为最长距离。
即使Pi和Pj在嵌入空间中具有很高的相似性,它们不会被分组到一个对象中。
添加距离掩码后,可以减少聚类错误。
IV. Experiment
- 我们将我们提出的网络的分割精度与S3DIS上的SGPN进行了比较。
- SGPN的结果由作者在GitHub上发布的代码实现[33]。
- 采用扫描网评估[34]来评估测试结果。
- 仅当每个预测组和ground truth group之间的 IoU 大于 0.5 时,预测实例才被视为<真>。
- 进一步利用我们的数据集进行了姿态估计实验,以证明分割的有效性。我们的方法是在Tensorflow框架中实现的,硬件设备是Nvidia GTX1080,Intel Core i7 8700K CPU和32G RAM。
- 我们使用初始学习率为 0.0001、批量大小为 2、动量为 0.9的 ADAM [9] 优化器。
- epoch =200,每个部分大约需要 10 个小时。
- 在培训阶段,α= 最初设置为 2,每 2 个epoch增加 5,最多 10。
- 我们设置β=2 以平衡loss损失,以及M1=5、M2=10、M3=80 .M1,M2 和M3 根据经验和需要设置,以满足0<M1<M2<M3 .不同的值对实验结果没有明显影响。
-
S3DIS:数据集涉及3个区域的6D扫描,覆盖272个房间。每个点都有 13 个语义类别的实例和语义标签。网络由S3DIS训练,区域5除外,网络由S5DIS区域3进行评估。请注意,区域 5 未出现在该区域的其余部分。
-
我们的数据集:我们使用三个工业部分来评估所提出的方法。合成场景的生成方法与 [1] 相同,涉及 1000 个训练样本。测试样本为真实场景,真实实例标签为手动制作。一个场景中随机堆积了 20 到 30 个相同类型的零件。每个场景包含大约 60,000 个边界点。场景中的每个点都有实例注释。这些部件没有纹理,没有可辨别的颜色。合成场景的模型和示例如图 4 所示。请注意,训练样本和测试样本都只包含零件的边界点。
图4.(a)、(b)和(c)是模型。(d)、(e)和(f)是合成边界点云场景。
我们将训练集可视化,并在同一场景中用不同的颜色表示不同的对象。
图6.(a) 是真实场景。(b)是场景的有组织的点云。(c) col 是场景的边界点云。
(d) 是 SGPN 的实例结果。(e) 是我们的实例结果。
C. Pose Estimation 姿势估计
V. Conclusions
该文提出一种简单而有弹性的实例级点云分割方法。我们只需要点云的坐标信息,因此所提出的方法更加高效便捷,并且克服了深度学习的最大缺陷:数据集。我们使用 S3DIS 来确认修改是否有效,新的损失函数提高了模型的性能。实验表明,与原来的实例分割方法SGPN相比,我们的算法能够更精确地分割点云,并且在杂乱点云中具有优异的分割性能。此外,我们利用所提方法进行了姿态估计实验,表明该方法可以应用于精确的姿态估计过程。