OccuSeg: Occupancy-aware 3D Instance Segmentation
Abstract
- 定义“3D occupancy size”,即每个实例所占用的体素数。
- 在此基础上,提出了一种基于occupancy-aware的三维实例分割方案OccuSeg。
- 论文的多任务学习产生了 occupancy signal和embedding representations,在这两个representations中,对空间和特征嵌入的训练随着它们在scale-aware上的不同而不同。
- 论文的聚类方案得益于预测的occupancy size 和聚类occupancy size 之间的可靠比较,这有助于正确地对hard samples进行聚类,避免过度分割。
- 该方法在保持高效率的同时,在3个真实数据集(即ScanNetV2、S3DIS和SceneNN)上实现了最先进的性能。
(一)Introduction
- 以三维几何模型为输入,逐点预测实例级语义信息.
- 如图1所示。鉴于三维度量空间比基于2D图像的投影观察提供了更可靠的感知,特别引入了“3D occupancy signal”,表示每个实例所占用的体素的数量。
- 这样的occupancy signal代表了每个3D实例的内在和基本属性,显示了处理三维设置下尺度、位置、纹理、光照和遮挡的模糊性的强大潜力。
- 将新的occupancy signal编码到传统的三维实例分割管道中,即:学习阶段,聚类阶段。
- 在occupancy-aware方法中,学习和聚类阶段都充分利用了occupancy signal的特征,从而在公共数据集上实现了竞争性能。
具体步骤:
- 学习阶段以彩色3D场景为输入,利用空间稀疏卷积方法为每个体素提取一个混合向量。它不仅学习了经典的嵌入方法,如空间嵌入(图1(d))和特征嵌入(图1(e)),还产生了occupancy signal(图1(f)),这意味着object-level volume。
- 为了充分利用语义信息和几何信息,特征和空间嵌入被明确地以不同的目标进行监督,并进一步通过对特征和空间嵌入距离的协方差估计进行组合。
- 在聚类阶段,使用基于图的分割算法<< Efficient
graph-based image segmentation.>>,根据几何和外观约束将三维输入点云分组为超体素。 - 然后,将嵌入相似特征的超体素合并到同一实例中,利用自适应阈值评估嵌入距离与occupancy size的相似性。
- 借助预测的occupancy size和聚类occupancy size之间的可靠比较,论文的聚类方法使得hard samples 被正确地聚类,并消除了部分实例被识别为独立实例的假阳性。
贡献:
- 提出了一种基于occupancy-aware 的三维实例分割方案OccuSeg。它在三个公共数据集上实现了最先进的性能:ScanNetV2、S3DIS和SceneNN,在所有指标上都以显著的优势排名第一,同时保持高效率.
- 提出了一种新的occupancy signal,它可以预测每个实例中被占用的体素数量。将特征与空间嵌入相结合,共同学习occupancy signal,用于指导三维实例分割的聚类阶段。
(二)Related Work
~~
(三)Methods
目标:
- 将一个体素化的3D彩色场景作为输入,并为每个体素生成一个3D对象实例标签,其中属于同一对象的体素共享一个惟一的实例标签。
现有方法不足:
- 目前很少明确地利用了不同于2D图像观测的3D模型的固有特性:在没有遮挡或尺度模糊的情况下重建度量空间中的环境。
发现:
- 如图2,同一实例在三维空间中,其在二维图像上的观测结果可能会有很大差异。每个实例占用的像素/体素数(表示occupancy)在二维图像上是不可预测的,但可以从重建的三维模型中得到可靠的预测。
论文idea:
在occupancy signal的基础上,提出了一种occupancy-aware的三维实例分割方案。虽然它遵循经典的学习再聚类过程,但是学习阶段和聚类阶段都不同于现有的方法。
网络流程:
- 首先将输入的三维场景在2cm分辨率下进行体素化,
- 然后送入三维卷积神经网络(UNet)进行特征提取。
- 将学习到的特征转发给task-specific heads,学习每个输入体素的不同表示,包括语义分割,目的是分配类标签,特征和空间嵌入,以及 occupancy regression(第3.1节)。
- 最后,提出了一种graph-based occupancy-aware clustering scheme,该方案利用了预测的occupancy information和前一阶段的feature embedding(第3.2节)。
- 所有的3D卷积都是使用子流形稀疏卷积网络实现的,利用了输入3D场景的稀疏性。 该网络的详细信息在附录中提供。
3.1. Multi-task Learning
目的: 同时利用三维场景中固有的occupancy以及语义和空间信息。
提出了一个多任务学习框架来学习第 i i i个输入体素的task-specific representations ,包括:
- 语义分割 c i c_i ci,目的是分配类标签;
- s i s_i si和 d i d_i di for 联合特征和空间嵌入,以及相应的 b i b_i bi for 协方差预测,以融合特征和空间信息;
- o i o_i oi for occupancy regression。
对网络进行训练,使联合损失函数最小化:
L = L c + L e + L o − − − − − − − − − − ( 2 ) L=L_{c}+L_{e}+L_{o}----------(2) L=Lc+Le+Lo−−−−−−−−−−(2)
- L c L_{c} Lc是一种传统的用于语义分割的交叉熵损失。
- L e L_{e} Le目的是学习一种综合考虑feature and spatial embedding的嵌入向量,用于实例分割。
- L o L_{o} Lo用于回归每个体素所属实例的occupancy size。
3.1.1 Embedding Learning
与以往直接将特征和空间嵌入相结合的方法不同,论文将它们分开,并用不同的目标监督它们的学习过程。
- 虽然空间嵌入是尺度感知的,并且具有明确的物理解释,例如从当前体素到其所属实例的空间中心的偏移向量,
- 但是特征嵌入存在固有的模糊尺度,因此必须使用附加的代价函数进行正则化。
- 利用协方差估计进一步正则化了两个嵌入。
- 用于嵌入 L c L_{c} Lc的学习函数包含三个项的元素列表,即空间项 L s p L_{sp} Lsp、特征项 L s c L_{sc} Lsc和协方差项 L c o v L_{cov} Lcov:
L e = L s p + L s e + L c o v − − − − − − − − − − ( 2 ) L_{e}=L_{sp}+L_{se}+L_{cov}----------(2) Le=Lsp+Lse+Lcov−−−−−−−−−−(2)
Spatial Term.
第 i i i个体素的空间嵌入 d i d_i di是一个回归到对象中心的3维向量,使用以下空间术语对其进行监督:
L s p = 1 C ∑ c = 1 C 1 N c ∑ i = 1 N c ∥ d i + u i − 1 N c ∑ i = 1 N c u i ∥ − − − − − − − − ( 3 ) L_{sp}=\frac{1}{C}\sum_{c=1}^{C}\frac{1}{N_{c}}\sum_{i=1}^{N_{c}}\left \| d_{i}+u_{i}-\frac{1}{N_{c}}\sum_{i=1}^{N_{c}}u_{i}\right \|--------(3) Lsp=C1c=1∑CNc1i=1∑Nc∥∥∥∥∥di+ui−Nc1i=1∑Ncui∥∥∥∥∥−−−−−−−−(3)
- C C C是输入3D场景中实例的数量
- N C N_C NC是是第c个实例中的体素的数量
- u i u_i ui是第c个实例中第i个体素的3D位置。
Feature Term.
包含三个项的判别损失函数来学习特征嵌入 s i s_i si。
L s c = L v a r + L d i s t + L r e g − − − − − − − − − − ( 4 ) L_{sc}=L_{var}+L_{dist}+L_{reg}----------(4) Lsc=Lvar+Ldist+Lreg−−−−−−−−−−(4)
- L v a r . L_{var.} Lvar.将属于同一实例的特征拉到它们的平均值
- L d i s t . L_{dist.} Ldist.将实例彼此远离
- L r e g . L_{reg.} Lreg.是一个正则化的术语, pulling the means towards the origin。
- L v a r . = 1 C ∑ c = 1 C 1 N c ∑ i = 1 N c [ ∥ μ C − ϵ i ∥ − δ v ] + 2 − − − − − − − − − − − − − − − ( 5 ) L_{var.}=\frac{1}{C}\sum_{c=1}^{C}\frac{1}{N_{c}}\sum_{i=1}^{N_{c}}\left [ \left \| \mu_{C}-\epsilon _{i}\right \|-\delta _{v}\right ]_{+}^{2}---------------(5) Lvar.=C1∑c=1CNc1∑i=1Nc[∥μC−ϵi∥−δv]+2−−−−−−−−−−−−−−−(5)
- L d i s t . = 1 C ( C − 1 ) ∑ C A = 1 C ∑ C B = 1 C [ 2 δ d − ∥ μ C A − μ C B ∥ ] + 2 . . . . . . . . C A ≠ C B − − − − − − − − − − ( 6 ) L_{dist.}=\frac{1}{C(C-1)}\sum_{C_{A}=1}^{C}\sum_{C_{B}=1}^{C}\left [2\delta _{d}- \left \| \mu_{C_{A}}-\mu_{C_{B}}\right \|\right ]_{+}^{2} ........ C_{A}\neq C_{B}----------(6) Ldist.=C(C−1)1∑CA=1C∑CB=1C[2δd−∥μCA−μCB∥]+2........CA=CB−−−−−−−−−−(6)
- L r e g . = 1 C ∑ C = 1 C ∥ μ C ∥ − − − − − − − − − − − − ( 7 ) L_{reg.}=\frac{1}{C}\sum_{C=1}^{C}\left \|\mu _{C} \right \|------------(7) Lreg.=C1∑C=1C∥μC∥−−−−−−−−−−−−(7)
- U c = 1 N c ∑ i = 1 N c s i U_c=\frac{1}{N_{c}}\sum_{i=1}^{N_{c}}s_{i} Uc=Nc1∑i=1Ncsi 表示第c个实例的平均特征嵌入。
- 预定义的阈值 δ v = 0.1 δ_v=0.1 δv=0.1, δ d = 0.5 δ_d=0.5 δd=0.5,以确保实例内嵌入距离小于实例间距离。
Covariance Term.
协方差项旨在为每个实例学习最佳聚类区域。
- b i = ( σ s i , σ d i ) b_i=\left ( \sigma _{s}^{i},\sigma _{d}^{i}\right ) bi=(σsi,σdi)表示在第c个实例中第i个体素的预测特征/空间协方差。
- 过对 b i b_i bi求平均值,得到第c个实例的嵌入协方差 ( σ s c , σ d c ) \left ( \sigma _{s}^{c},\sigma _{d}^{c}\right ) (σsc,σdc)。
- 将第 i i i个体素属于第 c c c个实例的概率表示为 p i p_i pi:
p i = e x p ( − ( s i − U c σ s c ) 2 − ( u i + d i − e c σ d c ) 2 ) − − − − − − − − − − − − − − − ( 8 ) p_i=exp\left (-\left ( \frac{s_{i}-U_{c}}{\sigma _{s}^{c}}\right )^{2}- \left ( \frac{u_{i}+d_i-e_{c}}{\sigma _{d}^{c}}\right )^{2}\right )---------------(8) pi=exp(−(σscsi−Uc)2−(σdcui+di−ec)2)−−−−−−−−−−−−−−−(8)
L c o v = − 1 C ∑ c = 1 C 1 N c ∑ i = 1 N c [ y i l o g ( p i ) + ( 1 − y i ) l o g ( 1 − p i ) ] − − − − ( 9 ) L_{cov}=-\frac{1}{C}\sum_{c=1}^{C}\frac{1}{N_{c}}\sum_{i=1}^{N_{c}}\left [ y_{i}log(p_i)+ (1-y_{i})log(1-p_i)\right ]----(9) Lcov=−C1c=1∑CNc1i=1∑Nc[yilog(pi)+(1−yi)log(1−pi)]−−−−(9) - e c = 1 N c ∑ k = 0 N c ( μ k + d k ) e_{c}=\frac{1}{N_c}\sum_{k=0}^{N_{c}}\left ( \mu _{k}+d_{k}\right ) ec=Nc1∑k=0Nc(μk+dk)表示第c个实例的预测空间中心。
由于对于属于第 c c c个实例的体素,预期 p i p_i pi会大于0.5,因此协方差项由二元交叉熵损失表示:
L c o v = 1 C ∑ c = 1 C 1 N c ∑ i = 1 N c ∥ o i − l o g ( N c ) ∥ − − − − − − − − − − − − − − − − − ( 10 ) L_{cov}=\frac{1}{C}\sum_{c=1}^{C}\frac{1}{N_{c}}\sum_{i=1}^{N_{c}}\left \| o_{i}-log(N_{c})\right \|-----------------(10) Lcov=C1c=1∑CNc1i=1∑Nc∥oi−log(Nc)∥−−−−−−−−−−−−−−−−−(10)
- 其中 y i = 1 y_i = 1 yi=1表示 i i i属于 c c c,yi = 0,否。
- N N N表示输入点云中的点数。
3.1.2 Occupancy Regression
- 为了利用3D设置下的occupancy information,对于第 c c c个实例中的第 i i i个体素,预测一个positive value o i o_i oi指示当前实例占用的体素数。
- 然后, o i o_i oi的平均值将用作当前实例的预计occupancy size。为了获得更可靠的预测,将对数而不是原始值进行回归,并制定以下 occupancy term:
L o = 1 C ∑ c = 1 C 1 N c ∑ i = 1 N c ∥ o i − l o g ( N c ) ∥ − − − − − − − − − − − − − − ( 10 ) L_{o}=\frac{1}{C}\sum_{c=1}^{C}\frac{1}{N_{c}}\sum_{i=1}^{N_{c}}\left \| o_i-log(N_c)\right \|--------------(10) Lo=C1c=1∑CNc1i=1∑Nc∥oi−log(Nc)∥−−−−−−−−−−−−−−(10)
N c N_c Nc是第c个实例中的体素数。 - 为了评估occupancy预测策略的可行性,使用相对预测误差 R c R_c Rc来衡量第 c c c个实例的occupancy预测性能:
R c = ∣ N c − e x p ( 1 N c ∑ i = 1 N c o i ) ∣ N c − − − − − − − − − − − − − − − − − − − − − − − ( 11 ) R_c=\frac{\left | N_c-exp\left ( \frac{1}{N_c}\sum_{i=1}^{N_c}o_i\right )\right |}{N_c}-----------------------(11) Rc=Nc∣∣∣Nc−exp(Nc1∑i=1Ncoi)∣∣∣−−−−−−−−−−−−−−−−−−−−−−−(11)
图释:
- R c R_c Rc的累积分布函数图
- 对于ScanNetV2数据集的验证集中超过4000个实例,可以预测到超过68%的实例,相对误差小于0.3.
- 说明了occupancy regression对于接下来的聚类阶段的有效性。
3.2. Instance Clustering
引入了一种基于图的 occupancy-aware聚类方案来解决推理过程中的三维实例分割问题。
步骤:
- 采用自底向上的策略,使用高效的基于图的分割方案《Efficient graph-based image segmentation》将输入的体素分组为超体素。(超体素表示可以更好地分离不同的实例,由于具有几何连续性或局部凹凸约束,三维空间中的实例边界更容易识别。)
- Ω i \Omega _{i} Ωi表示属于超体素 v i v_i vi的所有体素的集合,定义 v i v_i vi的空间嵌入 D i D_i Di为:
D i = 1 ∣ Ω i ∣ ∑ k ∈ Ω i ( d i + μ i ) − − − − − − − − − − − − − − − − − − − ( 12 ) D_i=\frac{1}{|\Omega _{i}|}\sum_{k\in \Omega _{i}}^{}\left ( d_{i}+\mu _i\right )-------------------(12) Di=∣Ωi∣1k∈Ωi∑(di+μi)−−−−−−−−−−−−−−−−−−−(12) ∣ Ω i ∣ |\Omega _{i}| ∣Ωi∣表示 Ω i \Omega _{i} Ωi的体素数量。
feature embedding S i S_i Si, occupancy O i O_i Oi , v i v_i vi的covariance σ s i \sigma _{s}^{i} σsi, σ d i \sigma _{d}^{i} σdi都是基于similar averaging operation对所有属于 v i v_i vi的体素进行计算。 - 进一步定义occupancy ratio r i r_i ri 来指导聚类步骤,
r i = O i ∣ Ω i ∣ − − − − − − − − − − − − − − − − − − − ( 13 ) r_i=\frac{O_i}{\left | \Omega _i\right |}-------------------(13) ri=∣Ωi∣Oi−−−−−−−−−−−−−−−−−−−(13) r i > 1 r_i>1 ri>1 表示有太多的体素在 v i v_i vi用于实例分割,否则 v i v_i vi应该attract更多的体素。 - 建立无向图 G = ( V , E , W ) G=\left ( V,E,W\right ) G=(V,E,W),顶点 v i ∈ V v_i∈V vi∈V表示生成的超体素, e i , j = ( v i , v j ) ∈ E e_{i,j}=\left ( v_i,v_j\right )\in E ei,j=(vi,vj)∈E表示权重为 w i , j ∈ W w_{i,j}\in W wi,j∈W的成对顶点。
w i , j = e x p ( − ( ∥ S i − S j ∥ σ s ) 2 − ( ∥ D i − D j ∥ σ d ) 2 ) m a x ( r , 0.5 ) − − − − − − − − − − − − ( 14 ) w_{i,j}=\frac{exp(-\left ( \frac{\left \| S_i-S_j\right \|}{\sigma _{s}}\right )^{2}-\left ( \frac{\left \| D_i-D_j\right \|}{\sigma _{d}}\right )^{2})}{max\left ( r,0.5\right )}------------(14) wi,j=max(r,0.5)exp(−(σs∥Si−Sj∥)2−(σd∥Di−Dj∥)2)−−−−−−−−−−−−(14)
σ s \sigma _{s} σs, σ d \sigma _{d} σd, r r r表示合并 v i v_i vi, v j v_j vj的virtual super-voxel的特征协方差、空间协方差和occupancy ratio。
权重越大表示 v i v_i vi, v j v_j vj属于同一实例的可能性越大。在计算合并权重时,occupancy ratio有助于惩罚实例过分割,鼓励部分实例合并在一起,如图5所示。
- 对于 E E E中的所有边,选择权重 w i , j w_{i,j} wi,j最大的边 e i , j e_{i,j} ei,j,如果 w i , j > T 0 w_{i,j}> T_0 wi,j>T0合并 v i v_i vi, v j v_j vj作为一个新的顶点。合并阈值 T 0 T_0 T0设置为0.5。
- 在每次合并操作之后更新图 G G G。
- 重复此过程,直到所有权重均不大于 T 0 T_0 T0。
- 最后,如果 G G G中的其余顶点occupancy ratio r r r满足 0.3 < r < 2 0.3 < r < 2 0.3<r<2的约束,则标记为实例,以避免实例分割的 false positives。
3.3. Network Training
- 使用UNet-like structure,从带有颜色信息的输入点云中提取特征。
- 为了提高效率,采用了基于块的稀疏卷积策略。
- 使用Adam optimizer对网络进行训练,初始学习率为1e-3。
- 对于数据集,ScanNetV2、Stanford3D和SceneNN,使用相同的超参数,320个epoch。
(四)Experiments
- 硬件设备:笔记本电脑Microsoft Surface Book 2上进行的,该笔记本拥有NVIDIA GTX 1060(移动)GPU和Intel Core i7-8650U CPU。
- 利用实时三维重建方法FlashFusion进行三维几何输入,在便携式设备上演示了在线三维实例分割。
4.1. Qualitative Evaluation
图6给出了公共数据集验证集上具有代表性的三维实例分割结果.
验证方法对真实场景的鲁棒性,在实时三维重建方法FlashFusion的基础上实现了在线三维实例分割。如图7所示,网络在ScanNetV2上进行了预训练,可以在真实场景中稳健地生成三维实例分割结果。
4.2. Quantitative Evaluation
ScanNetV2.
S3DIS.
SceneNN.
4.3. Complexity Analysis
4.4. Ablation Study
- w/o_feature 代表没有 feature embedding
- w/o_spatial 代表没有 spatial feature embedding
- w/o occupancy 在学习阶段禁用occupancy prediction,在聚类阶段设置Eqn. 14中所有顶点的occupancy ratio r r r= 1
(五)Discussion and Conclusion
- OccuSeg,一种基于occupancy-aware的三维场景实例分割方法。
- 学习阶段利用特征嵌入和空间嵌入,以及一种新的三维 occupancy signal 来imply三维对象的固有属性。
- occupancy signal 进一步指导基于图的聚类阶段正确合并hard 样本,禁止过度分割聚类。
- 未来,结合针对部分重建对象的定制设计来改进方法。研究sub-object level的三维实例分割,并进一步提高效率,使高质量的三维实例分割实际应用于AR/VR、游戏和移动机器人的大量应用。