Learning Object Bounding Boxes for 3D Instance Segmentation on Point Clouds
- Abstract
- (一) Introduction
- (二) 3D-BoNet
- 2.1 Overview
- 2.2 Bounding Box Prediction
- 2.3 Point Mask Prediction
- 2.4 End-to-End Implementation
- (三)Experiments
- 3.1 Evaluation on ScanNet Benchmark
- 3.2 Evaluation on S3DIS Dataset
- 3.3 Ablation Study
- 3.4 Computation Analysis
- (四)Conclusion
Abstract
- 提出了一种新颖的,概念上简单且通用的框架,用于在3D点云上进行实例分割。
- 称为3D-BoNet,遵循每点多层感知器(MLP)的简单设计原理。
- 该框架为点云中的所有实例直接回归3D边界框,同时为每个实例预测点级蒙版。
- 它由一个骨干网络和两个并行网络分支组成,用于边界框回归和点掩码预测。
- 由于与现有方法不同,它不需要任何后处理步骤,例如非最大抑制,特征采样,聚类或投票,因此它的计算效率非常高。
- 大量的实验表明,论文的方法超越了ScanNet和S3DIS数据集上的现有工作,同时其计算效率提高了约10倍。全面的消融研究证明了其设计的有效性。
(一) Introduction
- 使机器能够理解3D场景是自动驾驶,增强现实和机器人技术的基本必要条件。
- 3D几何数据(例如点云)的核心问题包括语义分割,对象检测和实例分割。
- 在这些问题中,实例分割仅在文献中才开始解决。主要的障碍是点云本质上是无序的,无结构的和不均匀的。广泛使用的卷积神经网络要求对3D点云进行体素化,从而导致高昂的计算和存储成本。
在这篇论文中,为3D实例分割提供了一种高效且新颖的框架,其中使用高效的MLP检测对象,然后通过简单的点级二进制分类器精确地分割每个实例。
- 引入了新的边界框预测模块以及一系列设计的损失函数,以直接学习物体边界。
- 框架与现有的 proposal-based and proposal-free的方法有很大不同,能够高效地分割所有具有高对象性的实例,而无需依赖昂贵且密集的object proposals。代码和数据可从https://github.com/Yang7879/3D-BoNet获得。
如图1所示,它首先使用现有的骨干网络为每个点提取局部特征向量,为整个输入点云提取全局特征向量。骨干后面有两个分支:实例级边界框预测,用于实例分割的点级掩码预测。
边界框预测分支是框架的核心。 该分支旨在单个前进阶段为每个实例预测一个唯一的,未定向的矩形边界框,而无需依赖预定义的空间锚点或区域提议网络。
如图2所示,认为可以大致实现一个实例的3D边界框,因为输入点云明确包含3D几何信息,而在处理点级实例分割之前这是非常有益的,因为合理的边界框可以保证学习的部分具有很高的客观性。
然而,学习实例盒涉及关键问题:
- 实例总数是可变的,即从1到很多。
- 所有实例没有固定的顺序。这些问题为正确优化网络提出了巨大挑战,因为没有信息可以直接将预测的盒子与地面真相标签链接起来以监督网络。
但是,论文展示了如何解决这些问题:
- 该框预测分支仅将全局特征向量作为输入,并直接输出大量和固定数量的边界框以及置信度得分。这些分数用于指示该框是否包含有效实例。
- 为了监督网络,设计了一个新颖的边界框关联层,其后是一个多准则损失函数。
- 给定一组真实的实例,需要确定哪个预测框最适合它们。
- 将此关联过程公式化为现有求解器的最佳分配问题。
- 盒子被最佳地关联后,多准则损失函数不仅使配对盒子的欧几里得距离最小化,而且使预测盒子内部有效点的覆盖范围最大化。
然后将预测的框以及点和全局特征一起馈入后续的点掩码预测分支,以便为每个实例预测点级二进制掩码。
- 该分支的目的是对边界框内的每个点是属于有效实例还是属于背景进行分类。
- 假设估计的实例框相当好,则很有可能获得准确的点掩码,因为此分支只是拒绝不属于检测到的实例的点。
- 随机猜测可能会带来约50%的校正。
总体而言,论文框架在三个方面与所有现有3D实例分割方法有所不同。
- 与 the proposal-free pipeline相比,论文的方法通过显式学习3D对象边界来分割具有高对象性的实例。
- 与广泛使用的proposal-based的方法相比,论文的框架不需要昂贵且密集的proposals.。
- 框架非常有效,因为实例级掩码是通过单次转发学习的,而无需任何后处理步骤。
主要贡献:
- 提出了一个新的框架,用于在3D点云上进行实例分割。该框架是单阶段的,无需锚定并且可端到端训练,而无需任何后处理步骤。
- 设计了新颖的边界框关联层,然后设计了多准则损失函数来监督框预测分支。
- 证明了在基线之上的重大改进,并通过广泛的消融研究。
(二) 3D-BoNet
2.1 Overview
图释:
- 框架由骨干网顶部的两个分支组成。
- 给定一个总共有N个点的输入点云P,即 P ∈ R N × k 0 P∈R^{N×k_0} P∈RN×k0,其中 k 0 k_0 k0是通道数,例如每个点的位置{x,y,z}和颜色{r,g,b},骨干网络提取标记为 F l ∈ R N × k F_l∈R^{N×k } Fl∈RN×k的点局部特征,并聚合标记为 F g ∈ R 1 × k F_g∈R^{1×k } Fg∈R1×k的全局点云特征向量,其中k为特征向量的长度。
边界框预测分支仅获取全局特征向量 F g F_{g} Fg作为输入,并直接回归一组预定义和固定的边界框(表示为B)和相应的框分数(表示为 B s B_s Bs)。
使用地面真值边界框信息来监督此分支。
- 在训练期间,将预测的边界框B和地面真实框输入到框关联层中。
- 该层旨在将唯一且最相似的预测边界框自动关联到每个地面真值框。
- 关联层的输出是关联索引A的列表。
- 这些索引重新组织了预测框,以使每个地面真理框与唯一的预测框配对以进行后续损失计算。
- 在计算损失之前,也会对预测的边界框得分进行相应的重新排序。
- 然后将重新排序的预测边界框输入多准则损失函数。
损失函数的目的不仅是使每个地面真值框与关联的预测框之间的欧式距离最小,而且还要使每个预测框内的有效点的覆盖范围最大化。
边界框关联层和多准则丢失函数均仅用于网络训练。它们在测试期间被丢弃。最终,该分支能够直接为每个实例预测正确的边界框以及框分数。
为了预测每个实例的点级二进制掩码,将每个预测的框以及先前的局部和全局特征,即 F l F_l Fl和 F g F_g Fg,进一步馈送到点掩码预测分支中。该网络分支由不同类别的所有实例共享,因此非常轻巧紧凑。这种与类无关的方法本质上允许跨未被发现的类别进行常规分割。
2.2 Bounding Box Prediction
边界框编码: 在现有的对象检测网络中,边界框通常由中心位置和三个维度的长度或相应的残差以及方向表示。相反,为简单起见,仅通过两个最小-最大顶点对矩形边界框进行参数设置:
Neural Layers:
- 如图4所示,全局特征向量 F g F_g Fg通过两个完全连接的层馈入,其中Leaky ReLU作为非线性激活函数。
- 然后是另外两个平行的完全连接的层。一层输出6H维矢量,然后将其重塑为H×2×3张量。
- H是整个网络预期最大预测的预定义和固定数量的边界框。另一层输出H维矢量,后跟S型函数以表示边界框分数。
- 分数越高,预测的框包含一个实例的可能性越大,因此该框更有效。
边界框关联层:
- 给定先前预测的H边界框,即 B ∈ R H × 2 × 3 B∈R^{ H×2×3 } B∈RH×2×3,使用表示为 B ∈ R T × 2 × 3 B∈R^{ T×2×3 } B∈RT×2×3的地面真值框来监督网络,因为没有预定义的anchors可以将每个预测的框追溯到我们框架中的相应地面真相框。
- 此外,对于每个输入点云P,ground truth boxes T的数量是变化的,它通常与预定义的数量H不同,尽管可以安全地假设预定义的数量H≥T对于所有的输入点云。此外,无论是预测盒还是地面真值盒都没有盒顺序。
最佳关联公式:
- 为了将 B ˉ \bar{B} Bˉ的每个地面真值框与B的唯一预测边界框相关联,将此关联过程公式化为最优分配问题。
- 形式上,让A为一个布尔关联矩阵,其中 A i , j = 1 A_{i,j}=1 Ai,j=1,前提是将第 i t h i^{th} ith预测的框分配给第 j t h j^{th} jth真实框。
- 在本文中,A也称为关联索引。
- 令C为关联成本矩阵,其中 C i , j C_{i,j} Ci,j表示将第 i t h i^{th} ith预测的框分配给第 j t h j^{th} jth真实框。
- 基本上,cost C i , j C_{i,j} Ci,j表示两个盒子之间的相似度;cost越低,两个盒子越相似。
- 因此,边界框关联问题是找到总成本最小的最优分配矩阵A:
为了解决上述最优关联问题:
关联矩阵计算:
- 要评估第 i i i预测框和第 j j j真实框之间的相似性,一个简单直观的准则是两对最小-最大顶点之间的欧几里得距离。但是,这不是最佳的。
- 希望预测框包含尽可能多的有效点。
- 如图5所示,输入点云通常稀疏且不均匀地分布在3D空间中。
- 关于相同的地面真值框#0(蓝色),认为候选框#2(红色)比候选框#1(黑色)要好得多,因为框#2的有效点与#0重叠。
- 因此,应包括有效点的覆盖范围以计算成本矩阵C。
考虑以下三个条件:
(1)顶点之间的欧几里得距离.
形式上,第 i i i预测框 B i B_i Bi和第 j j j真实框 B ˉ j \bar{B}_j Bˉj之间的成本计算如下:
(2)Soft Intersection-over-Union on
Points.
- 给定输入点云P和第 j j j真实框 B ˉ j \bar{B}_j Bˉj,就可以直接获得硬二进制矢量 q ˉ j ∈ R N \bar{q}_j∈R^N qˉj∈RN来表示每个点是否在框内。
- 其中``1’'表示该点内部,外部为“ 0”。
- 但是,对于相同输入点云P的第 i i i个预测框,由于离散化操作,直接获得相似的硬二进制矢量将导致框架不可微。
- 因此,引入了一种可微但简单的算法1来获得相似但软二进制的向量 q i q_i qi,称为point-in-pred-box-probability,其中所有值都在(0,1)范围内。
- 框内对应点越深,值越高。
- 点离得越远,值越小。
- 从形式上定义第i个预测框与第j个地面真值框之间的Soft Intersection-over-Union (sIoU) cost为:
(3)交叉熵得分.
- 考虑 q i q_i qi和 q ˉ j \bar{q}_j qˉj之间的交叉熵得分。
- 与sIoU成本不同(后者更倾向于使用更紧密的框),该得分表示预测的边界框能够尽可能多地包含有效点的信心。
- 它倾向于使用更大,更具包容性的框,并且正式定义为:
总结: 准则(1)保证了学到的盒子的几何边界,而准则(2)(3)则使有效点的覆盖范围最大化,并克服了图5中所示的不均匀性。 第i个预测框与第j个地面真值框之间的最终关联cost定义为:
Loss Functions : 在边界框关联层之后,使用关联索引A对预测框B和得分Bs进行重新排序,以使第一个预测T框和得分与T地面真值框很好地配对。
Multi-criteria Loss for Box Prediction:
先前的关联层根据最小成本为每个地面真值框找到最相似的预测框,包括:
1)顶点欧几里得距离,
2)点上的sIoU成本,
3)交叉熵得分。
论文设计了用于边界框预测的损失函数,始终最小化这些成本。定义如下:
其中 C t , t e d C_{t,t}^{ed} Ct,ted, C t , t s I o U C_{t,t}^{sIoU} Ct,tsIoU,和 C t , t c e s C_{t,t}^{ces} Ct,tces分别是 t t h t^{th} tth配对盒的成本。注意,论文仅将 T T T 配对盒的成本降至最低;其余的 H − T H-T H−T 预测框将被忽略,因为它们没有相应的ground truth。因此,该框预测子分支与 H H H的预定义值无关。
这引起了一个问题。由于 H − T H-T H−T否定性预测不会受到惩罚,因此网络可能会为单个实例预测多个相似的框。用于 parallel box score预测的损失函数可以缓解此问题。
Loss for Box Score Prediction: 预测框分数旨在指示相应预测框的有效性。在被关联索引A重新排序后,前 T T T个得分的地面真实得分均为’1’,其余无效的 H − T H -T H−T得分均为’0’。对这个二元分类任务使用交叉熵损失:
其中 B s t B_{s}^{t} Bst是关联后第t个预测分数。此损失函数会奖励正确预测的边界框,同时隐式惩罚为单个实例回归多个相似框的情况。
2.3 Point Mask Prediction
给定预测的边界框 B B B,学习的点特征为 F l F_l Fl和全局特征 F g F_g Fg,点掩码预测分支将使用共享的神经层分别处理每个边界框。
Neural Layers:
- 如图6所示,在被连接并进一步压缩为128维混合点特征 F l ~ \widetilde{F_{l}} Fl 之前,通过全连接层将点和全局特征都压缩为256维向量。
- 对于第i个预测的边界框 B i B_i Bi,将估计的顶点和分数与特征 F l ~ \widetilde{F_{l}} Fl 通过串联,从而产生可感知box的特征 F l ^ \widehat{F_{l}} Fl 。
- 然后,这些特征将通过共享层进行馈送,从而预测点级二进制掩码(表示为 M i M_i Mi)。
- 使用sigmoid作为最后一个激活函数。
- 这种简单的盒式融合方法在计算上非常高效。
Loss Function: 根据先前的关联索引A,预测的实例蒙版M与地面真值蒙版类似地相关联。由于实例和背景点数的不平衡,使用具有默认超参数而不是标准交叉熵的focal loss以优化此分支。仅有效的T paired masks用于 l p m a s k l_{pmask} lpmask。
2.4 End-to-End Implementation
论文框架不限于任何点云网络,采用PointNet ++ 作为主干网络来学习本地和全局功能。同时,实现了另一个单独的分支,以使用标准softmax交叉熵损失函数 l s e m l_{sem} lsem学习每点语义。给定输入点云P,使用单个组合的多任务损失将上述三个分支链接起来并进行端到端训练:
(三)Experiments
3.1 Evaluation on ScanNet Benchmark
在ScanNet(v2)3D语义实例分割基准上评估。将原始输入点云划分为1m×1m块进行训练,同时使用所有点进行测试,然后使用BlockMerging算法将块组装成完整的3D场景。
在实验中,观察到基于PointNet ++的语义预测子分支的性能有限,无法提供令人满意的语义。由于框架的灵活性,因此,可以轻松地训练并行SCN网络,以便为3D-BoNet的预测实例估计更准确的每点语义标签。 IoU阈值为0.5的平均精度(AP)用作评估指标。
3.2 Evaluation on S3DIS Dataset
- 对于论文方法和PartNet基线,使用相同的BlockMerging算法合并来自不同块的实例。
- 最终分数是对全部13个类别的平均分数。
- 表2给出了mPrec / mRec得分。
- 图7显示了定性结果。
- 方法大大超过了PartNet基线,并且也优于ASIS ,但并不明显,主要是因为我们的语义预测分支(基于vanilla Point ++)不如ASIS那样,后者紧密融合了语义和实例特征以实现相互优化。特征融合可作为的未来探索。
3.3 Ablation Study
对S3DIS数据集的Area 5进行了6组消融实验。
(1)Remove Box Score Prediction Sub-branch.
盒分数可作为有效边界盒预测的指标和调节器。删除后,使用以下方法训练网络:
(2)-(4) Use Single Criterion.
最初,多准则损失函数是欧氏距离,软IoU成本和交叉熵得分的简单未加权组合。但是,这可能不是最佳的,因为输入点云的密度通常不一致,并且倾向于使用不同的标准。对消融的边界框损失函数进行以下3组实验。盒子关联和损失 l b b o x l_{bbox} lbbox仅使用一个标准。
(5) Do Not Supervise Box Prediction.
仍根据三个标准关联了预测的盒子,但是删除了盒子监督信号。该框架接受以下培训:
(6) Remove Focal Loss for Point Mask Prediction.
在点掩模预测分支中,将focal loss 替换为标准的交叉熵损失以进行比较。
分析:
表3显示了消融实验的分数。
- 框分数子分支确实有益于整体实例分割性能,因为它倾向于惩罚重复的框预测。
- 与欧几里得距离和交叉熵得分相比,由于算法1,sIoU成本倾向于更好地用于框关联和监督。由于三个独立准则更喜欢不同类型的点结构,因此简单组合三个准则并非总是在特定数据集上是最佳的。
- 如果没有对盒预测的监督,性能将大大下降,这主要是因为网络无法推断令人满意的实例3D边界,并且预测点掩码的质量也会相应降低。
- 与 focal loss相比,由于实例数和背景点数的不平衡,标准的交叉熵损失对点掩模的预测效果较差。
3.4 Computation Analysis
- 对于基于点特征聚类的方法,包括SGPN,ASIS,JSIS3D,3D-BEVIS,MASC和,后聚类算法的计算复杂性例如平均移位趋向于 0 ( T N 2 ) 0\left ( TN^{2}\right ) 0(TN2),其中T是实例数,N是输入点数。
- 对于密集 proposal-based 的方法,包括GSPN ,3D-SIS和PanopticFusion,通常需要区域提案网络和非最大抑制来生成和删减dense proposals,,这在计算上是昂贵的。
- PartNet基线和3D-BoNet都具有相似的有效计算复杂度 0 ( N ) 0\left ( N \right ) 0(N)。3D-BoNet需要大约20 ms的GPU时间来处理4k点,而上述大多数方法需要200ms以上的GPU / CPU时间来处理相同数量的点。
(四)Conclusion
可塑性工作:
- 使用自动学习权重的模块,以适应不同类型的输入点云,而不是使用三个标准的非加权组合。
- 代替训练单独的分支进行语义预测,可以引入更高级的特征融合模块以相互改善语义和实例分割。
- 框架遵循MLP设计,因此与输入点的数量和顺序无关。可以尝试在大规模输入点云上进行训练和测试,而不是在分割后的小块上进行测试。