中文标题:在线三维语义分割的超体素卷积算法 作者:SHI-SHENG HUANG(黄石生)等 期刊:ACM Transactions on Graphics 代码开源地址:https://github.com/shishenghuang/SVNet_jittor 翻译支持来自百度翻译,若有错误还请见谅与指正 Fig.1 我们提出了一种有效的超体素卷积运算(简称
S
V
C
o
n
v
SVConv
SVConv),并将其应用于语义映射的2D-3D联合学习,实现了在线密集语义分割和场景重建。与现有的在线三维语义分割技术相比,我们的方法在效率和分割精度之间取得了明显更好的平衡。
1 介绍
??在线3D语义分割和动态3D重建对于服务机器人和自动驾驶等涉及即时场景理解的应用变得迫切和关键。直接分割渐进融合的3D几何形状通常是耗时的。常见的解决方案是以2D到3D语义映射的方式执行三维分割,即将2D语义从多个视图映射到渐进重建的3D表面。然而,这些传统的解决方案通常以天真贝叶斯的方式融合2D语义,这将三维分割结果限制在低精度水平。
??最近,深度神经网络在各种3D形状分析和理解任务中取得了有希望的结果,例如3D对象分类,3D语义分割,实例分割,场景补全和物体定位。然而,假设输入已经是完整的3D场景或对象,大多数这些尝试都是以离线方式执行的。在线场景理解,尤其是语义映射,并没有从深度学习技术的进步中受益太多。
??直接应用基于体积的卷积,基于点的卷积,或者是利用稀疏卷积,通过简单地将密集重建的场景转换成体积网格或一组点来进行在线3D语义分割都是低效的,因为要处理大量的数据(例如,一个5m×5m×3m的房间将在5mm的体素尺寸下产生6亿个体素)。通过融合来自多视图框架的3D几何特征和2D特征的联合学习,由于缺乏有效的三维数据关联组织结构,在线3D语义分割可能更加困难,尽管它在提高语义分割精度方面更有潜力。最近,张等人提出了可能是第一个用于在线3D分割的深度学习方法。然而,它们只能预测相对少量的3D点的语义(通常为512个),每个视图的中等处理速率为10fps。通过深度神经网络进行在线3D语义分割的关键挑战仍然有待解决,即如何在结构化表示中重新组织固有的非结构化三维数据,并在这种结构化表示上设计有效的深度神经网络来平衡在线三维分割的效率和精度。
??我们的主要观察是,并不是所有的体素都有意义来表示渐进重建的3D几何图形,只有几何图形表面上的体素才有意义。基于这一认识,我们仅跟踪表面体素,并通过渐进超体素聚类将它们聚类成保边界超体素(具有几乎相等的超体素大小),而不是像[Zhang等人2020]那样在每个视图中随机采样点。超体素是三维几何的紧凑表示,单位数量少得多(与体素数量相比少100倍)。此外,超体素聚类步骤带来了超体素之间非常有效的表面连接结构,并且这种结构实现了非常有效的卷积运算,由此可以用于在线3D语义分割的深度卷积神经网络。
??然而,由于卷积核函数和卷积所需的邻域没有被很好地定义,如何在超体素上执行卷积还没有被尽我们所知地探索过。本文提出了一种可行的超体素卷积运算,命名为
S
V
C
o
n
v
SVConv
SVConv,并通过精心设计的2D-3D联合学习使这种超体素卷积有效。在
S
V
C
o
n
v
SVConv
SVConv的帮助下,我们提出了一种深度卷积神经网络Supervoxel-CNN,利用它为在线3D语义分割任务建立了一种先聚类后预测的语义映射方法。我们的工作是第一个为在线3D语义分割任务引入如此有效的基于超体素的深度卷积神经网络(Fig.1)。
??与最先进的在线和离线3D语义分割技术相比,我们在公共3D室内基准(即ScanNet v2 [Dai等2017a]和Scenen[Hua等2016]数据集)上广泛评估了我们的方法的效率和准确性。我们的系统显著提高了分割精度(参见第5节)。与传统贝叶斯风格的2D-3D语义映射系统(如SemanticFusion [McCormac等2017a]和ProgressiveFusion[Pham等2019]相比,mIoU准确率提升超过10%)。尽管我们的方法仅以略高的分割精度优于最近的基于深度学习的方法[张等2020],但我们以大约20fps的速度执行在线3D分割,这比他们的系统快2倍,证明了我们提出的Supervoxel-CNN的效率。
??我们将我们的技术贡献总结为:1)我们首次直接在超体素上贡献了一个可行的卷积运算,即
S
V
C
o
n
v
SVConv
SVConv,使得在线语义分割任务的高效2D-3D联合学习成为可能。2)提出了一种Supervoxel-CNN网络和聚类-预测语义映射方法,有效地分割了一个渐进重建的三维表面,实现了最先进的在线语义分割精度。
2 相关工作
??近年来,我们在计算机视觉、计算机图形学和机器人学中看到了实时三维场景重建的巨大进步。在语义场景理解方面,无论是在2D还是在3D方面,都付出了巨大的努力。对这些主题的全面回顾超出了本工作的范围。下面我们讨论与我们最相关的作品。
??RGB三维深度融合(RGB-D Depth Fusion),自从KinectFusion的开创性工作[Newcombe等2011]以来,人们为实现实时三维场景重建付出了大量努力。为了实现大规模三维重建,许多有效的数据结构,如体素哈希( Voxel-Hashing)[Nie?ner等2013]和可伸缩体素哈希(Scalable-VoxelHashing )[Chen等2013],已被提出用于基于截断符号距离函数的深度融合(TSDF)[Curless和Levoy1996]。除此之外,还有RGB-D SLAM[Whelan等2015],In-finiTam[K?hler等2015],ElasticFusion[Nie?ner等2013],BundleFusion[Dai等2017b]等相关工作,通过使用束调整和可变形环闭合,实现了更精确的RGB-D深度融合。王等[2017]通过跟踪所有帧的3D点的RGB特征,提出了一种鲁棒的基于特征的实时3D重建方法。最近,曹等人[2018]提出了一种精确的深度融合方法,使用噪声感知束调整来降低深度噪声的影响。然而,目前的深度融合系统大多集中于三维几何重建,很少有支持三维语义分割和动态深度融合。
??语义信息已被证明对物体[Hu等2018]或3D场景重建有用[McCormac等2018;杨等2019;郑等2019]。以往的一些方法通过联合结构和语义分析[张等2015]、对象识别[徐等2016]、对象聚类[南等2012]或深度神经网络[金等2020]等将语义信息引入三维重建。与这些工作不同,我们的作品基于最先进的深度融合技术,与体素哈希( Voxel-Hashing)[Nie?ner等2013]相似,旨在提高语义映射的准确性,而不是几何质量。
??语义分割(Semantic Segmentation),由于深度神经网络的快速发展,场景理解,尤其是在2D场景标注、场景分割、对象分类等任务中,取得了显著的进步。针对2D分割,已经提出了很多技术(例如,DeconvNet[Noh等2015]、FCN[Shelhamer等2017]、Mask-RCNN [He等2017]、SSMA [Valada等2020])。尽管它们为单个图像产生了令人印象深刻的2D分割,但是它们经常不能在连续的RGB帧之间提供一致的分割。将它们直接集成到2D-3D语义映射框架中会导致不确定的关联。
??基于深度3D几何学习的3D场景理解近年来也取得了快速进展[肖等2020]。例如,PointNet[Qi等2017a]及其变体[Qi等2018,2017b]提供了一种强大的深度学习方法来学习无组织点云的旋转和平移不变的深度特征。PointConv[Wu等2019]介绍了一种点卷积运算,对任意点集都具有平移不变和排列不变的卷积学习。SparseConvNet[Graham等2018]和MinkowskiNet[Choy等2019]将卷积运算扩展到具有稀疏卷积的高维数据。3DMV[Dai和Nie?ner2018]和3D-SIS [Hou等人2019]通过基于体积的卷积将特征投影到3D体素,引入了2D-3D联合特征学习。FPConv[Lin等2020]引入了一种局部展平方法,使常规2D卷积能够有效地进行特征学习。为了进一步提高三维语义分割的空间一致性,陆等[2019]引入了融合多视角特征的基于CRF的三维语义分割。Huet等[2020]提出了动态区域增长和数据驱动的上下文分析,并采用多尺度处理进行补丁划分和分类。
??虽然这些3D学习方法获得了很好的分割结果,但它们的输入是一组完整的3D点或完全重建的场景。我们的实验将表明,尽管像MinkowskiNet[Choy等2019]这样的一些方法可能比我们的方法获得更高的分割精度,但它们对于在线3D分割不够有效。最近的工作[韩等2020]提出了一种用于3D实例分割的占用感知学习然后聚类的方法。除了不同的目标之外,我们的方法通过超体素聚类为高效的2D-3D联合在线语义分割学习贡献了一个可行的三维表示,而不是像OccuSeg那样对具有嵌入深度特征的曲面片进行聚类。
??在线语义分割(Online Semantic Segmentation),语义分割与动态三维重建相结合,同时实现了三维场景的几何重建和语义理解,被认为更适合于机器人和虚拟现实领域的在线应用,因此近年来备受关注。SemanticFusion[McCormac等2017a]为在线3D语义分割提供了一个先锋解决方案,该解决方案具有基于surfels的贝叶斯风格的2D到3D映射。为了重建水密表面,后续的工作,如语义重建[Jeon等2018]和全景光学融合[Narita等2019年],将2D到3D的映射框架扩展到TSDF体素。为了获得更好的效率,ProgressiveFusion[2019]采用将体素过度分割成超体素,然后基于超体素执行2D到3D的语义映射。这些2D到3D语义映射方法的一个基本问题是,它们依赖于2D学习,但缺乏3D学习,从而限制了进一步的精度提高。与这些方法相比,我们的方法执行基于超体素的2D-3D联合学习以获得更好的分割结果。
??最近,张等人[2020]提出了一种适用于时变几何数据的令人印象深刻的点卷积,他们的方法实现了在线3D语义分割的最新精度。然而,这种基于点的分割方法仍然效率不高,因为其邻域管理的性能会随着三维点数量的增加而迅速下降。在线语义分割任务中仍然迫切需要一种高效的数据结构来组织三维体素。与他们的方法相比,我们基于超体素的解决方案有两个优点。首先,超体素数量主要受正在重建的底层几何表面本身的影响,而不是摄像机视图的数量。因此,需要处理的超体素的数量明显少于来自多视图的点的数量,如张等[2020]所述。其次,超体素邻域可以通过超体素聚类轻松管理,不需要额外耗时的邻域管理。
??也有相关的工作[Valentin等2015],针对交互式在线3D语义分割。相比之下,我们的方法在没有任何用户干预的情况下自动执行3D分割[Thanh Nguyen等2018;杨等2017]。
3 超体素卷积
Fig.2 为了实现高效的深度卷积网络在线3D语义分割,我们首先引入了具有边界保持特性的渐进超体素聚类,然后提出了一种新的超体素卷积运算。
3.1渐进超体素聚类
超体素聚类是一种将体素过度分割成连通超体素图的技术,其中可以有效提取体素到超体素的索引和超体素到超体素的邻域信息[Papon等2013]。此外,超体素的数量明显少于原始体素的数量。
??表面超体素聚类(On-surface Supervoxel Clustering),虽然像VoxelHashing[Nie?ner 等2013],BundleFusion[Dai等2017b]等这样的深度融合系统往往需要分配大量的体素,我们只跟踪表面上的体素,表示为
V
=
{
v
i
=
(
p
i
,
n
i
,
c
i
)
}
V=\{v_i=(p_i,n_i,c_i)\}
V={vi?=(pi?,ni?,ci?)},对体素
v
i
v_i
vi?的位置、法线和颜色进行编码,并将它们聚集成一组超体素
S
=
{
s
k
,
s
k
∈
V
}
S=\{s_k,s_k \in V\}
S={sk?,sk?∈V},如Fig.2所示。因为跨越边界的体素通常属于不同的对象,因此具有不同的语义标签,所以我们沿着对象边界对体素进行聚类,使得超体素内的所有体素可以被分配相同的标签。为此,我们遵循Lin等人[2018]提出的最新技术来执行保持边界的超体素聚类。然而,直接将林等人[2018]的方法应用于我们的在线3D语义标注任务是不合适的,因为原始的聚类实现太耗时且收敛缓慢。
??为了解决这个问题,我们做了两个修改。首先,我们使用一个大得多的初始化参数
λ
\lambda
λ(8倍大)放宽他们基于融合的最小化函数。其次,一旦要交换的体素数量低于某个阈值(在我们所有的实验中为2000个),我们就终止基于交换的最小化。更多技术细节请参考林等[2018]。这样,聚类可以更快地收敛,以跟上3D深度融合的步伐。此外,我们约束每个聚类超体素中的体素数量,使得聚类超体素具有几乎相等的体素数量。这种约束对于第3.2节中超体素卷积的推导具有重要意义。
??渐进聚类(Progressive Clustering),由于在增量三维重建过程中,先前重建的表面不会影响当前重建,因此我们可以以渐进的方式执行超体素聚类,以进一步提高整个系统的效率。具体来说,我们跟踪最新的表面体素,并将它们分成两个子集:那些与先前聚集的区域重叠的区域,
U
U
U,剩余的
U
′
U^{'}
U′。我们进一步识别体素
S
?
U
S \subset U
S?U,满足同一超体素中的至少一个兄弟1)由于来自最新帧的深度融合而被更新,或者2)是相邻的
U
′
U^{'}
U′。最后,我们只对
S
?
U
S \subset U
S?U的体素进行聚类,其余体素保持不变。由于在
S
S
S中的体素已经在前一轮中被聚类,我们采用将先前的聚类中心转移到这些体素,并且仅对新添加的体素
U
′
U^{'}
U′执行超体素聚类。在大多数情况下,由于在3D重建期间,连续帧之间的体素数量
U
′
U^{'}
U′远小于
S
S
S,因此我们的渐进聚类可以非常有效地执行。这样,在在线处理期间,我们用超体素有效地组织所有被跟踪的表面体素。有时,
U
′
U^{'}
U′的体素数量不足以形成一个期望的超体素。由于这种情况很少发生,我们将这些体素聚集成一个新的超体素,并将其发送到后续的预测中。
??超体素的性质(Properties of Supervoxels),在动态深度融合过程中,我们的渐进式超体素聚类方法将所有三维体素组织为一组超体素,从而保留了以下属性。1)所得到的超体素位于重建的几何表面上,因为相关的三维体素都在表面上。2)那些超体素具有几乎相等数量的体素,有利于超体素卷积的定义。3)保持超体素之间的相邻关系,使得在给定少量超体素的情况下,可以在O(1)时间内获取超体素的相邻体素,而不需要像在[Zhang等人2020]中所做的那样使用额外耗时的基于树的数据结构。此外,还保留了超体素内的体素到超体素的索引信息,有利于3.2节中的超体素卷积的特征聚合。4)超体素是边界保持的,使得与每个超体素相关联的体素可以用与超体素相同的标签来预测。这些属性使得可以直接在超体素上定义卷积运算,以便在3D上进行有效学习。
3.2 超体素卷积
Fig.3 超体素卷积图解。对于一组超体素
(
a
)
(a)
(a),超体素
s
0
s_0
s0?及其邻点
{
s
k
}
,
k
=
{
1
,
…
,
K
}
\{s_k\},k=\{1,\dots,K\}
{sk?},k={1,…,K}(b),是通过估计在超体素质心位移
s
c
0
?
s
c
K
sc_0-sc_K
sc0??scK??上定义的超体素权重函数
W
(
.
)
W(.)
W(.)来执行。这是在体素位置位移
p
i
?
p
j
p_i-p_j
pi??pj?在PointConv卷积?上定义的卷积权函数
W
(
.
)
W(.)
W(.)的近似。
卷积运算已被证明在3D几何学习中非常有效,例如基于网格的卷积[Hanocka等2019],基于体积的卷积[Dai和Nie?ner2018;侯等2019],和基于点的卷积[吴等2019]。虽然在我们的例子中,一个体素可以看作一个点,但是超体素上的卷积运算是未定义的。面临的核心问题是:1)如何定义超体素的位置表示,利用该位置表示可以估计卷积权函数,以及2)如何定义超体素的特征表示。在这一小节中,我们提出了
S
V
C
o
n
v
SVConv
SVConv,它将点的卷积[Wu等2019]扩展到超体素,作为直接在超体素上的可行卷积运算。
??从PointConv到SVConv,PointConv[吴等2019]引入了一种新颖的3D点卷积运算,如下所示:
F
o
u
t
(
p
,
W
,
F
i
n
)
=
∑
p
j
∈
Ω
W
(
p
?
p
j
)
F
i
n
(
p
j
)
F_{out}(p,W,F_{in})=\sum_{p_j \in \Omega}W(p-p_j)F_{in}(p_j)
Fout?(p,W,Fin?)=pj?∈Ω∑?W(p?pj?)Fin?(pj?) 其中
Ω
\Omega
Ω是
p
p
p的一组相邻点,
W
(
.
)
W(.)
W(.)是局部卷积权重函数,
F
i
n
(
.
)
F_{in}(.)
Fin?(.)和
F
o
u
t
(
.
)
F_{out}(.)
Fout?(.)是每个点的输入 和输出特征。在PointConv之后,我们考虑一个超体素
s
0
s_0
s0?及其邻点
{
s
k
}
,
k
=
{
1
,
2
,
…
,
K
}
\{s_k\},k=\{1,2,\dots,K\}
{sk?},k={1,2,…,K}(例如Fig.3(b)所示,
K
=
7
K=7
K=7),并且通过在体素的位置位移上定义的权重函数
W
(
.
)
W(.)
W(.)卷积
s
0
s_0
s0?中每个体素的输入特征
F
i
n
F_{in}
Fin?。具体地,对于两个体素
v
i
v_i
vi?和
v
j
v_j
vj?,它们的位置位移被定义为
p
i
?
p
j
p_i-p_j
pi??pj?。然后,我们将体素
v
i
∈
s
0
v_i \in s_0
vi?∈s0?的PointConv表示为:
F
o
u
t
(
v
i
)
=
∑
k
=
0
K
∑
v
j
∈
s
k
W
(
p
i
?
p
j
)
F
i
n
(
v
j
)
(1)
F_{out}(v_i)=\sum_{k=0}^K \sum_{v_j \in s_k}W(p_i-p_j)F_{in}(v_j) \tag{1}
Fout?(vi?)=k=0∑K?vj?∈sk?∑?W(pi??pj?)Fin?(vj?)(1) 由于每个超体素中几乎相同数量的体素,超体素的大小几乎是固定的,因此我们可以使用泰勒展开将位置位移
p
i
?
p
j
(
v
i
∈
s
o
,
v
j
∈
s
k
)
p_i-p_j(v_i \in s_o,v_j \in s_k)
pi??pj?(vi?∈so?,vj?∈sk?)近似为它们对应的超体素质心
s
c
k
=
∑
p
j
∈
s
k
p
j
/
∣
s
k
∣
sc_k=\sum_{p_j \in s_k}p_j/|s_k|
sck?=∑pj?∈sk??pj?/∣sk?∣的位移
p
i
?
p
j
≈
s
c
0
?
s
c
k
+
o
(
s
c
0
?
s
c
k
)
p_i-p_j \approx sc_0-sc_k+o(sc_0-sc_k)
pi??pj?≈sc0??sck?+o(sc0??sck?),其中
o
(
.
)
o(.)
o(.)是Peano余数。遵循泰勒定理,我们近似权函数
W
(
p
i
?
p
j
)
≈
W
(
s
c
o
?
s
c
k
+
o
(
s
c
0
?
s
c
k
)
)
≈
W
(
s
c
0
?
s
c
k
)
+
o
(
s
c
0
+
s
c
k
)
T
?
W
?
(
s
c
0
?
s
c
k
)
W(p_i-p_j) \approx W(sc_o-sc_k+o(sc_0-sc_k)) \approx W(sc_0-sc_k)+o(sc_0+sc_k)^T \frac{\partial W}{\partial(sc_0-sc_k)}
W(pi??pj?)≈W(sco??sck?+o(sc0??sck?))≈W(sc0??sck?)+o(sc0?+sck?)T?(sc0??sck?)?W?。将新的卷积权函数定义为
W
s
v
(
s
c
0
?
s
c
k
)
=
∣
s
k
∣
(
W
(
s
c
0
?
s
c
k
)
+
o
(
s
c
0
?
s
c
k
)
T
?
W
?
(
s
c
0
?
s
c
k
)
W_{sv}(sc_0-sc_k)=|s_k|(W(sc_0-sc_k)+o(sc_0-sc_k)^T\frac{\partial W}{\partial(sc_0-sc_k)}
Wsv?(sc0??sck?)=∣sk?∣(W(sc0??sck?)+o(sc0??sck?)T?(sc0??sck?)?W?,我们可以将等式(1)改写为:
F
o
u
t
(
v
i
)
≈
∑
k
=
0
K
W
s
v
(
s
c
0
?
s
c
k
)
{
1
∣
s
k
∣
∑
v
j
∈
s
k
F
i
n
(
v
j
)
}
(2)
F_{out}(vi) \approx \sum_{k=0}^K W_{sv}(sc_0-sc_k)\{\frac{1}{|s_k|} \sum_{v_j \in s_k}F_{in}(v_j)\} \tag{2}
Fout?(vi)≈k=0∑K?Wsv?(sc0??sck?){∣sk?∣1?vj?∈sk?∑?Fin?(vj?)}(2) ??通过平均超体素
s
0
s_0
s0?中所有体素
v
i
v_i
vi?的输出特征,并考虑到所有超体素的大小几乎相等
∣
s
0
∣
≈
∣
s
k
∣
,
k
=
{
1
,
2
,
…
,
K
}
|s_0| \approx |s_k|,k=\{1,2,\dots,K\}
∣s0?∣≈∣sk?∣,k={1,2,…,K}(3.1节),我们可以得到:
1
∣
s
0
∣
∑
v
i
∈
s
0
F
o
u
t
(
v
i
)
≈
∑
k
=
0
K
W
s
v
(
s
c
0
?
s
c
k
)
{
1
∣
s
k
∣
∑
v
j
∈
s
k
F
i
n
(
v
j
)
}
(3)
\frac{1}{|s_0|} \sum_{v_i \in s_0} F_{out}(vi) \approx \sum_{k=0}^K W_{sv}(sc_0-sc_k)\{\frac{1}{|s_k|} \sum_{v_j \in s_k} F_in(v_j)\} \tag{3}
∣s0?∣1?vi?∈s0?∑?Fout?(vi)≈k=0∑K?Wsv?(sc0??sck?){∣sk?∣1?vj?∈sk?∑?Fi?n(vj?)}(3)
??等式(3)表明,我们可以直接在超体素上定义新的卷积运算。对于每个超体素
s
k
s_k
sk?,如果我们利用质心
s
c
k
=
∑
p
j
∈
s
k
p
j
/
∣
s
k
∣
sc_k=\sum_{p_j \in s_k}p_j/|s_k|
sck?=∑pj?∈sk??pj?/∣sk?∣作为它的位置表示,输入特征
S
V
i
n
(
s
k
)
SV_{in}(s_k)
SVin?(sk?)作为作为其相关体素的输入特征
S
V
i
n
(
s
k
)
=
1
∣
s
k
∣
∑
v
j
∈
s
k
F
i
n
(
v
j
)
SV_{in}(s_k)=\frac{1}{|s_k|}\sum_{v_j \in s_k}F_{in}(v_j)
SVin?(sk?)=∣sk?∣1?∑vj?∈sk??Fin?(vj?)的平均值,输出特征
S
V
o
u
t
(
s
k
)
SV_{out}(s_k)
SVout?(sk?)作为其相关体素的输出特征
S
V
o
u
t
(
s
k
)
=
1
∣
s
k
∣
∑
v
j
∈
s
k
F
o
u
t
(
v
j
)
SV_{out}(s_k)= \frac{1}{|s_k|} \sum_{v_j \in s_k F_{out}(v_j)}
SVout?(sk?)=∣sk?∣1?∑vj?∈sk?Fout?(vj?)?,我们可以为每个超体素
s
0
s_0
s0?及其邻点{s_k}定义一个基于超体素的卷积运算(SVConv ),如下所示:
S
V
o
u
t
(
s
0
)
=
∑
k
=
0
K
W
s
v
(
s
c
0
?
s
c
k
)
S
V
i
n
(
s
k
)
(4)
SV_{out}(s_0)=\sum_{k=0}^K W_{sv}(sc_0-sc_k)SV_{in}(s_k) \tag{4}
SVout?(s0?)=k=0∑K?Wsv?(sc0??sck?)SVin?(sk?)(4)
这样,我们的SVConv可以看作是超体素层次上的PointConv的近似,对于3D分类也是有效的。
??位置表示(Position Representation),根据SVConv的定义,我们计算超体素的质心作为它的位置,然后估计它的局部邻域中的卷积权重函数
W
s
v
(
.
)
W_{sv}(.)
Wsv?(.)。类似于PointConv[Wu等2019],我们使用一组多层感知器(MLPs)来近似这个权重函数。
??2D-3D联合学习的特征表示(Feature Representation for 2D-3D Joint Learning)。由于超体素的特征表示是其体素特征的平均值,因此体素需要描述性特征。3DMV[Graham等2018]、3D-SIS[Hou等2019]和张等[2020]的工作表明,将3D特征与来自多视角的深层特征融合,对于3D语义预测是有效的。然而,这种2D-3D融合操作不适合我们的密集设置。首先,每个三维体素的多视图2D-3D管理太耗时,无法与三维重建系统共存。更重要的是,在密集重建期间存储每个体素的2D深度特征将导致内存爆炸。
??为了解决这个问题,我们选择融合相对固化的2D语义概率分布,而不是原来的2D深层特征。此外,为了避免为每个体素存储M维概率分布(M是标签的数量),我们只存储单个标签及其置信度,并在密集重建期间以最大池化的方式更新标签和置信度。更具体地,如Fig.2所示,对于带有标签
L
(
v
)
L(v)
L(v)和置信度
W
(
v
)
W(v)
W(v)的体素
v
v
v,如果新检测到的标签
L
i
Li
Li等于
L
(
v
)
L(v)
L(v),则我们保持
v
v
v的标签不变,并将其置信度权重增加1:
W
(
v
)
←
W
(
v
)
+
1
W(v) \gets W(v)+1
W(v)←W(v)+1。否则,我们将它的权重减少1,在权重为负的情况下,我们将其标签替换为
L
i
L_i
Li?,并重置其权重:
W
(
v
)
←
0
W(v) \gets 0
W(v)←0。然然后对于超体素
s
s
s,我们通过对
l
i
l_i
li?所有相关体素求平均值来计算超体素预测概率分布
P
(
s
)
=
(
p
s
(
l
1
)
,
…
,
p
s
(
l
M
)
)
P(s)=(p^s(l_1),\dots,p^s(l_M))
P(s)=(ps(l1?),…,ps(lM?)),由它们相关的置信度权重加权:
p
s
(
l
i
)
=
1
∑
v
j
∈
s
W
(
v
j
)
∑
v
j
∈
s
W
(
v
j
)
?
I
(
l
(
v
j
)
=
l
i
)
p^s(l_i)=\frac{1}{\sum_vj \in s W(v_j)} \sum_{v_j \in s}W(v_j) \cdot I(l(v_j)=l_i)
ps(li?)=∑v?j∈sW(vj?)1?∑vj?∈s?W(vj?)?I(l(vj?)=li?),
I
(
.
)
I(.)
I(.)为指示函数。对于超体素的三维特征,我们采用体素的9维三维几何特征,并利用
f
s
=
1
∣
s
∣
∑
v
i
∈
s
v
i
f^s=\frac{1}{|s|} \sum_{v_i \in s}v_i
fs=∣s∣1?∑vi?∈s?vi?求得三维特征平均。
??最后,我们将超体素的3D几何特征和2D预测概率分布连接在一起,产生融合的2D-3D特征
S
V
(
s
)
=
(
f
s
,
P
(
s
)
)
∈
R
9
+
M
SV(s)=(f^s,P(s)) \in R^{9+M}
SV(s)=(fs,P(s))∈R9+M。如5.节所示。我们针对超体素的融合2D-3D特征对于超体素卷积是有效的,作为在线密集三维重建期间致力于语义预测的2D-3D联合学习,平衡了时间复杂度和存储器使用。
??SVConv的性质,虽然SVConv是从PointConv派生而来的,但它与PointConv不同,至少对在线语义分割任务有三个主要好处:(1)特征聚合。超体素的紧凑表示存储体素到超体素的索引信息,因此可以计算2D-3D特征聚合的超体素预测概率分布(参见上面的特征表示)。我们证明,如果没有这样的特征聚合,在均匀采样的体素上的 na?ve PointConv对于实现语义分割的高精度不是很有效(参见5.3节中的等式)。(2)超体素尺寸约束。我们的SVConv只有在超体素具有几乎相等的尺寸(根据体素数量)时才可行(见等式3)。如果没有这个约束,语义分割的准确性将会降低,如5.4节(“Supervox-CNN w/o BP”)所示。(3)表面领域。基于超体素聚类,我们的SVConv可以有效地对表面邻域进行卷积运算。相比之下,PointConv不能固定表面领域,因此丢失了表面领域的益处。
4 在线三维语义分割的超体素神经网络
Fig.4 基于Supervoxel-CNN的在线三维语义分割系统概述。它将RGB-D流作为输入(a),并在循环中使用从2D CNN语义预测投射到关键帧上的语义标签执行基于深度融合的场景重建(b)。执行体素跟踪模块?以收集最新准备好的三维体素。我们运行超体素聚类来逐步将最新准备好的三维体素聚类成超体素,并有效地管理它们的邻域(d)。这些聚集的超体素然后被馈送到具有超体素卷积的Super-CNN,用于语义预测的2D-3D联合学习(e),指向具有密集语义分割的重建的3D场景。
基于渐进聚类的超体素和定义的SVConv,我们构建了一个具有所有卷积层的深度神经网络,称为Supervoxel-CNN。利用Supervoxel-CNN,我们展示了一种先聚类后预测的在线三维语义分割方法,具有最先进的效率和准确性。
4.1 方法
Supervoxel-CNN支持的在线三维语义分割的流水线如Fig.4所示。它包含一个带有VoxelHashing的在线重建模块[Nie?ner 等2013年],用于相机姿态估计和密集三维几何重建。在在线重建的同时,我们通过在关键帧上使用2D CNN(即SSMA[Valada等2020]在我们的实现中)提取2D语义标签信息。在语义重建的同时,我们实现了一个体素跟踪模块来跟踪在场景重建过程中几何或语义标签发生变化的表面体素。被跟踪的体素被排列在缓冲器中,然后被发送到超体素聚类。我们以渐进的方式执行边界保持超体素聚类,以将表面上的三维体素组织为超体素,其体素到超体素的索引和超体素到超体素的领域也被有效地维护。然后,最新的超体素和它们的领域被馈送到Supervoxel-CNN,以预测重建的3D场景的最终语义标签。此后,每个体素
v
∈
s
v \in s
v∈s被自动分配与
s
s
s相同的标签,并被更新回重建过程。Fig.1展示了帧400、800、1900处的在线分割结果,以及来自ScanNet v2验证集的场景0435_01的最终结果。我们提出的超体素-CNN以大约20fps的处理速率实现了高精度的分割结果。
4.2 Supervoxel-CNN
Fig.5 Supervoxel-CNN架构的主干网络
前面提到的超体素卷积使得我们可以构建一个深度卷积神经网络来直接学习超体素的语义标签。我们用于三维语义分割的Supervoxel-CNN的主干如Fig.5所示。它将一组超体素
S
=
{
s
i
,
i
=
1
,
…
,
n
}
S=\{s_i,i=1,\dots,n\}
S={si?,i=1,…,n},每个超体素
s
i
s_i
si?与其K个邻域(K × 3的向量)和它们对应的融合2D-3D特征(K × (9 + M)的向量)之间的质心位移相关联。输入质心位移向量被馈送到一组具有共享权重、批量归一化和ReLU激活的MLP,然后与输入融合的2D-3D特征进行卷积(矩阵乘法),接着是
C
o
n
v
2
D
Conv2D
Conv2D、重组和MLP。最后,应用softmax层来生成超体素的最终语义概率预测。此外,为了进一步平滑语义预测结果,我们还在主干的输出上应用了CRFasRNN[Zheng等2015]层。
4.3 训练细节
??准备训练数据,我们在ScanNet v2数据集[Dai等2017a]上训练supervoxel-CNN,该数据集总共包含1513个带有注释的3D场景的真实世界RGB-D序列、1201个用于训练的序列和312个用于验证的序列。由于ScanNet中的标注数据是基于体素而不是超体素的,因此我们需要根据自己的目的调整它们的数据。为了创建基于超体素的训练数据,我们实现了一个没有Supervoxel-CNN部分的语义重建系统,简称为SV-SemanticFusion。我们使用SV-SemanticFusion来收集超体素进行训练。具体来说,第i个序列数据的SV-SemanticFusion的输出是一组超体素,每个超体素有K个邻点,表示为
S
i
=
{
s
j
,
j
=
1
,
…
,
k
i
}
S_i=\{s_j,j=1,\dots,k_i\}
Si?={sj?,j=1,…,ki?}与相应的位置表示集
F
i
=
{
f
s
∣
s
∈
S
i
}
F_i=\{f^s|s \in S_i\}
Fi?={fs∣s∈Si?}和特征表示集
P
i
=
{
P
(
s
)
∣
s
∈
S
i
}
P_i=\{P(s)|s \in S_i\}
Pi?={P(s)∣s∈Si?}按照3.2节中所述进行计算。对于每个计算出的超体素
s
j
∈
S
i
s_j \in S_i
sj?∈Si?,我们从相应的三维标注网格中寻找一个地面真值语义标签
l
^
j
∈
L
\hat{l}_j \in L
l^j?∈L,并将
S
i
S_i
Si?的地面真值标签集表示为
L
^
i
=
{
y
^
j
,
j
=
1
,
…
,
k
j
}
\hat{L}_i=\{\hat{y}_j,j=1,\dots,k_j\}
L^i?={y^?j?,j=1,…,kj?}。通过收集所有1201个训练序列,我们获得的训练数据为
T
=
{
U
i
F
i
,
U
i
P
i
,
U
i
L
i
}
T=\{U_iF_i,U_iP_i,U_iL_i\}
T={Ui?Fi?,Ui?Pi?,Ui?Li?}。在SV-SemanticFusion系统中,我们还采用了SSMA[Valada等2020]来计算标签。
??训练参数。在训练我们的Supervoxel-CNN时,我们随机选择约90%的训练数据作为训练数据集,其余的用于交叉验证。我们使用Adam优化器,初始学习速率设置为
l
r
=
1
0
?
3
l_r=10^{-3}
lr?=10?3。批次大小设置为16,世代数量设置为10。我们使用分类铰链损失,并将剪辑值设置为0.5,以避免梯度爆炸。我们在采用NVIDIA Titan RTX (24G)配置的平台上训练网络。在验证集上训练网络达到93%的准确率大约需要几个小时。
|