Abstract

我们引入了一种3D实例表示,称为实例内核,其中实例由一维向量表示,这些向量对3D实例的语义、位置和形状信息进行编码。我们表明,实例内核通过简单地扫描整个内核来实现简单的mask推断场景,避免严重依赖标准3D实例分割管道中的proposals或启发式聚类算法。实例内核的想法受到最近在2D/3D实例分割中动态卷积的成功的启发。然而,由于点云数据的无序和非结构化性质,我们发现表示3D实例并非易事,例如,较差的实例定位会显着降低实例表示。为了解决这个问题,我们构建了一种新颖的3D实例编码范式。首先,潜在的实例质心被定位为候选。然后,设计了一种候选合并方案,以同时聚合重复的候选并收集合并质心周围的上下文以形成实例内核。一旦实例内核可用,就可以通过动态卷积重建实例mask,其权重取决于实例内核。整个管道使用动态内核网络(DKNet)进行实例化。结果表明,DKNet在ScanNetV2和S3DIS数据集上都优于现有技术,具有更好的实例定位。代码可用:https://github.com/W1zheng/DKNet。

关键字:实例内核、点云、实例分割。

1 Introduction

3D实例分割旨在预测点级实例标签[8,12]。标准方法严重依赖proposal[28,4,17]或启发式聚类算法[12,2]。在这项工作中,我们展示了可以通过使用实例内核扫描场景来重建实例maks,实例内核是3D实例的表示,它同时编码3D实例的位置、语义和形状信息。

3D实例表示解决了两个基本问题:i)如何精确定位实例,以及ii)如何有效地聚合特征来描述实例。与可以通过网格采样[26] 或动态内核分配[31]直接编码的2D实例不同,在3D域中,点云数据的无序和非结构化性质给精确的实例定位和可靠的表示带来了困难;和表现最好的方法[2,16,12]隐式定位具有质心偏移的实例[22],它只提供实例表示的粗略信息,如图1所示。我们的实例内核也从DyCo3D[9]中汲取灵感,它首先将动态卷积应用于3D实例分割。然而,DyCo3D是建立在现有的自下而上分割管道[12]之上的,没有解决实例编码的基本问题。为了缓解上述困难,我们设计了一种新颖的实例编码范式,可以有效地定位不同的实例,并将实例的语义、位置和形状信息编码到实例内核中以生成mask。

图 1. 推断质心簇和实例mask的比较。与HAIS[2]相比,我们的DKNet生成更集中的质心簇,可以指导精确定位,从而可以区分小实例和近距离实例,并且大实例具有一致的预测。通过放大和彩色查看效果最佳。

我们进一步将内核编码范式合并到用于3D实例分割的动态内核网络 (DKNet) 中。为了定位实例,如图所示。DKNet预测实例的质心图,并通过具有局部归一化的自定义非极大值抑制 (NMS) 算子提取质心。观察到可以为单个实例(尤其是大型实例)预测重复的候选者,我们设计了一种迭代聚合机制来合并由预测的合并分数图引导的重复候选者。分数图指示是否应合并每个配对候选者的概率。之后,通过自适应地融合局部实例质心周围的点特征,将合并后的实例编码到实例内核中。最后,实例掩码可以用几个卷积层重建,其权重取决于生成的实例内核。

我们在两个流行的3D实例分割数据集上评估DKNet,包括ScanNetV2[3]和S3DIS[1]。结果表明,DKNet优于以前最先进的方法,在ScanNetV2在线排行榜上的已发布方法中排名第一。由于实例内核和专门设计的实例定位管道,DKNet可以更好地区分密集区域的实例比目前表现最好的方法,如图1所示。一系列消融研究还表明,所提出的实例定位和聚合管道可以大大增强实例表示。

我们的贡献有两方面:

  • 我们将动态卷积的思想扩展到实例内核,这是点云中3D实例的综合表示;

  • 我们提出了一种用于3D实例分割的动态内核网络,具有新颖的实例内核编码范式;

2 Related Work

在这里,我们简要回顾一下3D实例分割方法和基于内核的实例分割。

Proposal-Based 3D Instance Segmentation. 基于proposal的方法[29]为实例分配proposal,并根据proposal生成实例mask。D-BoNet[28]直接预测边界框,生成实例掩码。D-MPA[4]从预测的质心采样proposal;然后将proposal mask聚类以形成实例maks。GICN[17]同时预测实例的质心和大小以获得边界框proposal。基于proposal的方法的预测表现出良好的目标性,但存在两个主要缺点:1)多阶段训练和proposal生成过程引入了大量的计算开销; 2)结果高度依赖proposal。

Propoal-Free 3D Instance Segmentation. Proposal-free方法以自下而上的方式将点聚类到实例中。 SSTNet[16]通过构建超点树对整个场景进行建模,并使用自上而下的遍历来聚合节点并形成实例mask。PointGroup[12]使用语义标签和质心偏移作为线索对点进行聚类。 PE[30]将点编码到嵌入空间中,其中来自相同实例的点很接近。然后在这个嵌入空间中进行聚类。考虑到一次性将点聚类成各种大小的实例是困难的,HAIS[2]提出了一种新颖的层次聚类管道来逐步细化聚合结果。然而,即使有目标信号的隐式引导,预测的目标性仍然很低,如图1所示。因此,在现有的proposal-free方法上直接添加基于核的动态卷积模块不能带来基于核的实例分割范例的最佳效果。

Kernel-Based Instance Segmentation. 基于内核的实例分割使用实例感知内核来扫描整个场景以重建实例mask,其关键是表示实例或将实例与不同的内核相关联。获得内核后,常见的解决方案是通过点积或动态卷积扫描场景[11,19]。CondInst[24]通过目标检测预测实例proposal,并将proposal特征编码到内核中。KNet[31]将固定数量的内核与某些区域中的实例相关联并动态更新它们。SOLOv2[26]将特征图划分为网格,并为每个网格生成一个内核。然而,由于点云数据的无序和非结构化性质,将实例表示为3D域中的内核并非易事。DyCo3D[9]首先在3D实例分割中引入了基于内核的范式,它建立在现有的自底向上方法[12]的基础上。但是,他们专注于动态卷积的具体实现,并绕过了基于内核的核心范式:如何将实例编码为内核?在这项工作中,我们进一步探索了实例的判别表示与有效的基于内核的分割之间的潜在关系,从而产生了一种新颖的局部到整体实例内核编码范式。

图 2. 动态内核网络的管道。

3 Dynamic Kernel Network for 3D Instance Segmentation

3.1 Overview

如图2所示,我们的动态内核网络 (DKNet) 的核心是将实例编码为判别实例内核。编码过程包括三个关键阶段:1)处理具有类似UNet的主干的原始点云并预测点特征、质心偏移和语义mask; 2) 为具有候选挖掘分支的实例定位质心; 3)合并重复的候选并围绕实例质心收集上下文以形成实例内核。一旦获取了实例内核,就可以通过使用几个卷积层处理点云特征来获得实例mask,其权重取决于实例内核。

3.2 Point-wise Feature Extraction

遵循最近的proposal-free方法 [12,2,16],我们采用PointGroup[12]的主干进行特征提取。给定具有NNN个点的原始点云P∈RN×6P \in \mathbb{R}^{N \times 6}P∈RN×6,具有稀疏卷积[5]的3D UNet类[23]主干输出点特征Fp∈RN×DF_p \in \mathbb{R}^{N \times D}Fp​∈RN×D。然后将FpF_pFp​馈送到一个语义分支,该分支预测语义mask S∈RN×CS \in \mathbb{R}^{N \times C}S∈RN×C,此外,一个质心偏移分支将每个点的偏移量O∈RN×3O \in \mathbb{R}^{N \times 3}O∈RN×3推断到相应的实例质心。语义分支是多层感知器 (MLP),在输出层具有softmax激活。交叉熵损失和多类dice loss[20]用于监督该分支的训练。与语义分支类似,质心偏移分支将FpF_pFp​映射到偏移 OOO。对于每个点PiP_iPi​,Oi∈R3O_i \in \mathbb{R}^3Oi​∈R3是指向覆盖该点的实例质心的向量。骨干的更多细节可以参考补充。

3.3 Finding Instances

要为每个实例生成内核,我们应该首先找到所有实例。然而,性能最佳的proposal-free方法将质心偏移预测为隐式目标信号,这对于精确定位实例来说相当粗糙,如图1所示。因此,从基于proposal的方法中学习,我们提出了一个候选挖掘分支来生成质心图(centroid maps),然后是一个搜索算法来定位候选实例。

如图3所示,点特征Fp∈RN×DF_p \in \mathbb{R}^{N \times D}Fp​∈RN×D和质心偏移O∈RN×3O \in \mathbb{R}^{N \times 3}O∈RN×3共同连接形成质心挖掘分支的输入Fc∈RN×(D+3)F_c \in \mathbb{R}^{N \times(D+3)}Fc​∈RN×(D+3)。然后FcF_cFc​在输出层被输入到具有softmax激活的MLP中,以获得清晰的质心热图H∈RNH \in \mathbb{R}^NH∈RN。每个元素HiH_iHi​表示第iii个点是实例质心的概率。

在训练期间,我们在每个实例质心上放置一个3D高斯核,以形成pseudo ground truth热图,如H^i=exp⁡(−α⋅di2/ri2)\hat{H}_i=\exp \left(-\alpha \cdot d_i^2 / r_i^2\right)H^i​=exp(−α⋅di2​/ri2​),其中did_idi​表示点iii到覆盖它的实例质心之间的距离。 rir_iri​控制高斯核的方差,等于相应实例的轴对齐边界框的最大边长。因此,高斯核对不同实例的大小是有几何适应性的。α\alphaα被设定为25,以保持H^\hat{H}H^的平均值在0.1左右。为了监督训练,candidate mining分支的损失函数Lcenter \mathcal{L}_{\text {center }}Lcenter ​被定义为:
Lcenter =1∑i=1NI(Pi)∑i=1N∣Hi−H^i∣⋅I(Pi),(1)\mathcal{L}_{\text {center }}=\frac{1}{\sum_{i=1}^N \mathbb{I}\left(P_i\right)} \sum_{i=1}^N\left|H_i-\hat{H}_i\right| \cdot \mathbb{I}\left(P_i\right), \quad\quad\quad\quad(1) Lcenter ​=∑i=1N​I(Pi​)1​i=1∑N​∣∣∣​Hi​−H^i​∣∣∣​⋅I(Pi​),(1)
其中I(Pi)\mathbb{I}\left(P_i\right)I(Pi​)是一个指示函数,当第iii个点属于一个实例时输出1,否则输出0。

使用预测的热图HHH,我们使用定制的局部归一化NMS (LN-NMS) 策略迭代地搜索局部最大值作为候选实例。在每次迭代过程中,算法定位前景点中质心得分最高的点;然后通过除以该RRR半径邻居中的最大值来归一化半径为RRR的邻居中其他点的质心分数。如果归一化质心分数大于阈值TθT_\thetaTθ​,则该点将被视为候选点,并且其RRR半径邻居内的所有其他点在下一次迭代中被抑制并排除,无论该点是否被选为候选点。我们根据ScanNet[3]中实例的平均大小设置Tθ=0.5T_\theta=0.5Tθ​=0.5和半径R=0.3mR=0.3 \mathrm{~m}R=0.3 m。当没有剩余点或已找到NθN_\thetaNθ​个候选点时,迭代结束。 NθN_\thetaNθ​根据经验设置为200。最后,可以收集候选集Q∈RN′Q \in \mathbb{R}^{N^{\prime}}Q∈RN′,其中N′N^{\prime}N′表示候选的数量。有关详细信息,请参阅补充。

图 3.Centroid mining分支。 (a)candidate mining分支的输入; (b) 具有局部归一化的定制非最大抑制。

3.4 Representing Instances as Kernels

在定位实例质心后,我们将这些候选目标表示为实例内核。我们期望为一个实例提取一个内核,并且内核应该是可区分的。因此,我们设计了一种重复的候选聚合策略,该策略同时消除了额外的候选并自适应地融合候选周围的特征以进行实例表示。

Aggregating Duplicate Candidates. 我们根据每个候选者的上下文判断是否应该聚合两个候选者。对于每个原始候选者,我们使用来自其“前景点”、“背景点”的特征来描述上下文。 “前景点”表示每个候选者的RRR半径邻居内具有相同语义标签的点,而“背景点”表示每个候选者的2R2 R2R半径邻居内具有不同语义标签的所有点。为了聚合来自前景和背景点的特征,我们首先使用MLP处理点特征FpF_pFp​以进行降维。然后,对MLP输出的 "前景点 "和 "背景点 "的特征进行平均,分别形成每个候选的描述性特征Fn∈RN′×D′F_n \in \mathbb{R}^{N^{\prime} \times D^{\prime}}Fn​∈RN′×D′和背景特征Fb∈RN′×D′F_b \in \mathbb{R}^{N^{\prime} \times D^{\prime}}Fb​∈RN′×D′。由于上述两个特征只编码语义和形状信息,我们将它们与每个候选者的移位坐标(将原始坐标与质心偏移向量相加)作为位置信息连接起来,形成聚合特征Fa∈RN′×(2D′+3)F_a \in \mathbb{R}^{N^{\prime} \times\left(2 D^{\prime}+3\right)}Fa​∈RN′×(2D′+3)对于重复的候选聚合。

如图4所示,对于每个候选者,其聚合特征Fa,iF_{a, i}Fa,i​从所有其他候选者的聚合特征中减去。通过对每个实例重复此过程,将生成反映每对候选者的相似程度的候选者差异矩阵。将差分矩阵的绝对值作为输入,带有sigmoid函数的MLP输出合并分数图A∈RN′×N′A \in \mathbb{R}^{N^{\prime} \times N^{\prime}}A∈RN′×N′,其中AijA_{i j}Aij​表示第iii和第jjj个候选者因属于同一类而应合并的概率实例。

图 4. 候选聚合模块。 (a) 预测合并分数图的过程; (b) 生成实例内核的过程。

一旦获得合并分数图AAA,将使用简单的贪心算法迭代合并候选。我们首先初始化一个实例质心图Mins∈RNM_{i n s} \in \mathbb{R}^NMins​∈RN,其中Mins,i=iM_{i n s, i}=iMins,i​=i。MinsM_{i n s}Mins​记录了每个候选者所属的实例质心的索引,我们定义候选者与实例组具有相同的索引。在聚合之前,候选者的实例质心就是自己,每个候选者就是一个实例组。在每次迭代中,如果AijA_{i j}Aij​是AAA中不包括对角元素的最大值,则将合并第iii个和第jjj个实例组中的所有候选。这些候选者的实例质心指数也将统一为其中质心分数最高的候选者的指数。由于同一实例组内的候选者无法再合并,因此我们将它们之间的所有合并分数更新为0。当所有合并分数低于预定义阈值(设置为 0.5)时,迭代结束。具有相同索引的候选被视为预测实例。聚合后,假设产生了III个实例组,新实例的质心坐标Cins∈RI×3C_{i n s} \in \mathbb{R}^{I \times 3}Cins​∈RI×3被设置为中心候选的坐标,而新实例的特征Fins ∈RI×D′F_{\text {ins }} \in \mathbb{R}^{I \times D^{\prime}}Fins ​∈RI×D′通过对分组候选的描述特征与其邻居大小进行加权平均来获得。平均值有助于动态聚合不同大小的实例的特征。如图4所示,如果在一个大实例上预测多个候选者,则来自所有候选者的信息将传播到实例质心以描述实例。

在训练过程中,很容易找出哪些候选对是重复的,因此可以生成一个ground truth merging map A^\hat{A}A^。采用标准二元交叉熵损失(BCELoss)作为候选聚合的损失函数Laggre \mathcal{L}_{\text {aggre }}Laggre ​,定义为:

Laggre =BCELoss⁡(A,A^),quad(2)\mathcal{L}_{\text {aggre }}=B C E \operatorname{Loss}(A, \hat{A}), quad\quad\quad\quad(2) Laggre ​=BCELoss(A,A^),quad(2)
如果候选qiq_iqi​和qjq_jqj​属于同一个ground truth实例,则A^i,j=1\hat{A}_{i, j}=1A^i,j​=1,否则为0。

除了聚合重复的候选点外,通过引导网络区分两个候选点是否需要合并,也可以增强点特征FpF_pFp​的表示能力,因为聚合的学习鼓励来自同一实例的点在特征空间中接近,反之亦然,类似于对比学习的思想[7]。

Encoding Instance Kernels. 在候选聚合之后,场景中的所有实例都分配有质心,用 CinsC_{i n s}Cins​表示,以及相应的特征,用 Fins F_{\text {ins }}Fins ​表示。 Fins F_{\text {ins }}Fins ​被输入 MLP 以生成实例内核W∈RI×L\mathcal{W} \in \mathbb{R}^{I \times L}W∈RI×L,其中LLL 是实例内核的长度。类似于CondInst [24]和DyCo3D [9],实例内核在实例解码阶段被转换为几个卷积层的权重。因此,LLL 取决于卷积层的具体配置,可以通过公式4计算。

3.5 Generating Masks with Instance Kernels

用W\mathcal{W}W表示的实例内核已经对实例的位置、语义和形状特征进行了编码。为了解码实例,实例内核被转换为具有几个卷积层的权重,这些卷积层应用于增强的点云特征以重建实例mask。

为了增强点云特征,MLP进一步从点特征FpF_pFp​中提取掩码特征Fm∈RN×D′F_m \in \mathbb{R}^{N \times D^{\prime}}Fm​∈RN×D′。为了将实例感知位置信息注入FmF_mFm​,受 DyCo3d[9]的启发,在卷积之前将每个点到实例质心之间的偏移量添加到FmF_mFm​。例如,对于每个点PiP_iPi​,我们计算它到第kkk个实例的质心的偏移量为Zk,i=Cins,k−XiZ_{k, i}=C_{i n s, k}-X_iZk,i​=Cins,k​−Xi​。那么,第kkk个实例的点解码特征Fd∈RN×(D′+3)F_d \in \mathbb{R}^{N \times\left(D^{\prime}+3\right)}Fd​∈RN×(D′+3)为通过沿通道维度连接FmF_mFm​和ZkZ_kZk​生成。虽然DyCo3D也通过实例特定的内核生成实例mask,但这些内核仅应用于同一语义类别中的点。相比之下,我们方法中的实例内核扫描整个场景,避免了对语义预测的依赖。因此,解码过程可以纠正语义预测中的一些错误。自下而上的方法[12,2]无法纠正此类错误。解码过程通过以下方式输出实例mask M∈RI×NM \in \mathbb{R}^{I \times N}M∈RI×N

Mi=Conv⁡(Fd,Wi),i∈[1,I]quad(3)M_i=\operatorname{Conv}\left(F_d, \mathcal{W}_i\right), \quad i \in[1, I] quad\quad\quad\quad(3) Mi​=Conv(Fd​,Wi​),i∈[1,I]quad(3)

其中Wi∈RL\mathcal{W}_i \in \mathbb{R}^LWi​∈RL通过两个1×11×11×1卷积层转换为权重和偏差。第一层有16个带有ReLU激活函数的输出通道,第二层有1个带有sigmoid的输出通道,用于mask解码。为了拟合卷积层的参数数量,实例内核LLL的长度可以通过下式计算
L=(16+3)×16(weight )+16(bias )+16×1(weight )+1(bias )=337.quad(4)L=(16+3) \times 16(\text { weight })+16(\text { bias })+16 \times 1(\text { weight })+1(\text { bias })=337 . quad\quad\quad\quad(4) L=(16+3)×16( weight )+16( bias )+16×1( weight )+1( bias )=337.quad(4)
动态卷积的使用与[9,24]相同。实施细节在补充中描述。

为了监督实例mask的生成,我们首先根据cost矩阵使用Hungarian 算法[13]将预测实例与实际实例进行匹配。然后,我们应用BCELoss和dice loss[20]进行监督。假设生成了具有III个实例mask的M^∈RG×N\hat{M} \in \mathbb{R}^{G \times N}M^∈RG×N,并提供了具有GGG个ground-truth实例掩码的M^∈RG×N\hat{M} \in \mathbb{R}^{G \times N}M^∈RG×N,则cost矩阵C∈RI×G\mathcal{C} \in \mathbb{R}^{I \times G}C∈RI×G Hungarian算法的由下式获得:

Ci,j=∥Cins ,i−Cgt,j∥2+I(Sins ,i==Sgt,j),quad(5)\mathcal{C}_{i, j}=\left\|C_{\text {ins }, i}-C_{g t, j}\right\|_2+\mathbb{I}\left(S_{\text {ins }, i}==S_{g t, j}\right), quad\quad\quad\quad(5) Ci,j​=∥Cins ,i​−Cgt,j​∥2​+I(Sins ,i​==Sgt,j​),quad(5)
其中CinsC_{i n s}Cins​ 和CgtC_{g t}Cgt​分别是预测的真实实例的质心坐标,SinsS_{i n s}Sins​ 和SgtS_{g t}Sgt​是对应的语义标签。我们通过在预测实例中投票来确定实例语义标签SinsS_{i n s}Sins​。使用cost矩阵,一个预测的实例mask有望与具有壁橱质心和相同语义标签的实例匹配。

在匹配过程之后,预测的实例mask M被分配了ground truth实例mask M^∈RG×N\hat{M} \in \mathbb{R}^{G \times N}M^∈RG×N。然后,BCELoss Lbce\mathcal{L}_{b c e}Lbce​和dice loss Ldice \mathcal{L}_{\text {dice }}Ldice ​由下式计算:

Lmask =1I′∑k=1I(BCE(Mk,M^k)+(1−2Mk⋅M^k∣Mk∣+∣M^k∣))⋅I(iou k>0.25)(6)\mathcal{L}_{\text {mask }}=\frac{1}{I^{\prime}} \sum_{k=1}^I\left(B C E\left(M_k, \hat{M}_k\right)+\left(1-2 \frac{M_k \cdot \hat{M}_k}{\left|M_k\right|+\left|\hat{M}_k\right|}\right)\right) \cdot \mathbb{I}\left(\text { iou }_k>0.25\right) \quad\quad\quad\quad(6) Lmask ​=I′1​k=1∑I​⎝⎛​BCE(Mk​,M^k​)+⎝⎛​1−2∣Mk​∣+∣∣∣​M^k​∣∣∣​Mk​⋅M^k​​⎠⎞​⎠⎞​⋅I( iou k​>0.25)(6)

其中M^k\hat{M}_kM^k​表示第kkk个实例的ground truth实例mask,MkM_kMk​表示预测的实例mask。iiouki^{i o u_k}iiouk​表示 MkM_kMk​ 和M^k\hat{M}_kM^k​之间的Intersection-over-Union (IoU),I\mathbb{I}I是指示函数。我们添加了约束,这样只有在实例正确匹配并且I′I^{\prime}I′由I′=∑k=1II(I^{\prime}=\sum_{k=1}^I \mathbb{I}\left(\right.I′=∑k=1I​I( iou k>0.25)\left._k>0.25\right)k​>0.25)定义时才会计算损失。

Inference Post-processing. 在推理过程中,为了将软实例掩码 Mk 转换为硬实例标签并过滤掉潜在的错误预测,提出了一种简单而有效的两阶段细化管道。首先,去除一些小的重复片段或噪音。在第二阶段,应用超点 [15] 来细化生成的实例mask的形状。与proposal-free方法[12,9,2]不同,我们的方法在后处理中不需要NMS或ScoreNet,这是有效的。

在第一阶段,给定预测的软实例mask M∈RI×NM \in \mathbb{R}^{I \times N}M∈RI×N,我们首先通过选择MMM中得分最高的实例的标签来生成原始实例标签。然后,我们通过以下方式定义覆盖分数Sc∈RIS_c \in \mathbb{R}^ISc​∈RI:

Sc,k=Ninter ,k/Nintra ,k(7)S_{c, k}=N_{\text {inter }, k} / N_{\text {intra }, k} \quad\quad\quad\quad(7) Sc,k​=Ninter ,k​/Nintra ,k​(7)

其中Ninter ,kN_{\text {inter }, k}Ninter ,k​和Nintra,k N_{\text {intra,k }}Nintra,k ​分别表示第kkk个实例的“inter-point”和“intra-point”的数量。 “inter-point”表示分配给原始实例标签中第kkk个实例的点数,而“intra-point”表示第kkk个实例的软实例掩码中高于阈值 Tm,kT_{m, k}Tm,k​的点数。 Tm,kT_{m, k}Tm,k​由适应不同实例的Otsu算法[21]确定。覆盖分数表示每个实例预测的完整性和独立性。然后,我们将覆盖分数ScS_cSc​与MMM相乘以生成细化的软实例mask。通过取精化mask中得分最高的实例,可以获得最终的硬实例标签。有关计算TmT_mTm​的更多详细信息,请参阅补充。

在第二阶段,我们首先将原始点云聚合成超点[15]。某个超点内的点应该属于同一个实例。因此,我们将每个超点中的实例标签统一为大多数点所属的标签。除了实例标签RRR,我们需要为每个预测实例分配一个置信度分数,以指示评估的预测质量。该分数是通过将“intra-point”的实例分数和语义分数的平均值相乘而获得的。

表 1. ScanNetV2 测试集的定量结果。请参阅所有 20 个类别的补充完整结果。

4 Experiments

在本节中,我们首先在两个3D实例分割基准:ScanNetV2[3]和S3DIS[1]上将提议的动态内核网络 (DKNet) 与其他最先进的方法进行比较。然后,我们通过受控消融研究验证DKNet中不同组件的有效性。

4.1 Implementation Details

Training Details. 对于数据准备,坐标和颜色连接在一起形成每个点的 6D 矢量。该网络在单个 RTX 3090 GPU 上进行训练,批量大小为 4,共 400 个 epoch。我们使用 AdamW [18] 优化器,初始学习率为 0.001,在训练期间由余弦调度器 [27] 调整。权重衰减设置为 1e-5。按照之前的方法 [12],我们对 ScanNetV2 大小为 0.02m,S3DIS 大小为 0.05m 的点云进行体素化。

表 2. ScanNetV2 验证集上的目标检测结果。我们报告每类 mAP 的 IoU 分别为 25% 和 50%。 IoU 是在边界框上计算的。我们使用提供的模型评估 HAIS 的性能。 “Ours-”表示没有候选聚合部分的模型。

表 3. S3DIS 数据集的定量结果。我们报告 mCov、mWCov、mPre 和 mRec。在 Area-5 的场景中评估带有 ‡ 标记的方法。其他的通过 6 折交叉验证进行评估。

整体训练损失综合了语义预测、偏移预测、候选挖掘、候选聚合分支和mask生成过程的损失,可以定义为:
L=Lsem +Loff +Lcenter +Laggre +Lmask ,(8)\mathcal{L}=\mathcal{L}_{\text {sem }}+\mathcal{L}_{\text {off }}+\mathcal{L}_{\text {center }}+\mathcal{L}_{\text {aggre }}+\mathcal{L}_{\text {mask }}, \quad\quad\quad\quad(8) L=Lsem ​+Loff ​+Lcenter ​+Laggre ​+Lmask ​,(8)
其中 Lsem 和 Lof f 分别是语义分割和质心偏移预测的损失。

Datasets. 我们使用 ScanNetV2 和 S3DIS 进行训练和评估。 ScanNetV2 包括 1, 613 个场景,具有 20 个不同的语义类别。分别选择1、201、312和100个场景作为训练集、验证集和测试集。请注意,为了公平比较,测试集的标签是隐藏的。按照官方评估协议,我们使用不同 IoU 阈值下的平均精度 (mAP) 作为评估指标。 AP @25 和 AP @50 表示 IoU 阈值设置为 25% 和 50% 的平均精度分数。 mAP 表示所有 AP 的平均值,IoU 阈值范围从 50% 到 95%,步长为 5%。 S3DIS 数据集由 271 个场景组成,这些场景来自 6 个不同的区域,具有 13 个不同的对象类别。按照之前的方法 [12,9,2,16],我们以两种方式训练和评估我们的方法:1)区域 5 的场景用于测试,而其他区域的场景用于训练; 2) 6 折交叉验证,其中每个区域依次用于测试。在 S3DIS 上,阈值 IoU 设置为 0.5,我们报告覆盖率 (mCov)、加权覆盖率 (mWCov)、平均精度 (mPrec) 和平均召回率 (mRec) 作为评估指标。

图 5. 我们的方法在 ScanNetV2 验证集上的定性结果。我们用红色标记突出显示关键细节。通过放大和彩色查看效果最佳。

4.2 Comparison with the state of the arts.

ScanNetV2. 与 ScanNetV2 测试集上的最新技术的比较如表 1 所示。我们的方法实现了 53.2% 的 mAP,优于以前的最新方法。所提出的 DKNet 在椅子或图片等小型实例上获得了显着改进,在床或桌子等大型实例上取得了竞争性结果。我们还注意到,与最近精心设计的自下而上方法 SoftGroup [25] 相比,DKNet 显示出较差的 AP @50。合理的原因有两个。首先,我们发现 DKNet 在严格的 IoU 阈值(>0.6)下保留了相对较高的 AP,这表明预测的掩码可以很好地保留实例形状。然而,在较低的 IoU 阈值(<0.6)下,DKNet 变得不那么有利。其次,我们纯数据驱动的候选合并过程在一些困难的场景中会出现错误,例如边界模糊的书架,这可以通过精心设计的自下而上聚类来更好地解决。这些结果表明,可以通过精心设计来改进 DKNet,以进一步提高所提出的基于内核的范式的潜力。

为了评估 3D 实例分割方法的实例定位性能,我们在表 2 中的 ScanNetV2 验证集的对象检测指标下比较了不同的 3D 实例方法。预测掩码在 DyCo3D [9] 之后转换为轴对齐的边界框。我们的方法在 67.4% 的 AP @25 和 59.0% 的 AP @50 中实现了最佳性能,这表明内核是从可靠的实例定位结果中提取的。

表 4. ScanNetV2 验证集上不同候选挖掘算法的比较。

表 5. ScanNetV2 验证集上不同实例聚合策略的比较。

S3DIS. 如表 3 所示,DKNet 在区域 5 的场景中具有可比性,而在 6 折交叉验证的 4 个指标中有 3 个优于其他方法。由于 S3DIS 中的大多数类别都是大型类别,例如天花板、墙壁和书柜,因此结果可以反映所提出的实例编码范式在大型实例上的鲁棒性。

4.3 Qualitative Evaluation

我们将图 5 中的预测掩码可视化。如第 2 列所示,排除候选聚合(基线)会导致严重的过度分割,因为将为一个实例生成多个内核。候选聚合可以有效地缓解过度分割,这将同时指导实例感知特征的生成。与 GICN [17] 中的普通 NMS 相比,提出的 LN-NMS 可以更好地定位不同大小的实例,而普通 NMS 省略了一些小实例(第 2 行的垃圾箱和第 3 行的椅子)。

4.4 Ablation Study

在这里,我们首先比较不同的候选挖掘和聚合策略。然后,我们分析如何更好地将实例表示为内核。

Candidate Mining. 在这里,我们验证了所提出的 LN-NMS 算法在候选挖掘中的有效性。如表 4 所示,比较了三种不同的方式。

随机(第 1 行)表示随机选择(最多 200 个)阈值以上的点作为候选实例。 NMS 表示与 GICN [17] 中使用的常见 NMS 的搜索算法。提出的 LN-NMS 算法显示在 Sec。 3.3.第 1 行的结果表明:1)较差的实例定位会显着降低实例分割性能; 2) 即使在热图中随机选择点作为候选,也可以产生有竞争力的结果,这证明了后续候选聚合模块的鲁棒性。比较第 2 行和第 3 行的结果,LN-NMS 将 AP@50 提高了 2.1%。

Instance Candidates Aggregations. 不同候选聚合策略的比较如表 5 所示。“W/o”表示未执行候选聚合。 “训练中”意味着只在训练期间优化聚合损失,而原始候选者不会被聚合以进行推理。 “所有阶段”表示我们的完整方法。当只为监督添加聚合损失时(第 2 行),AP@50 增加 1.9%;在聚合损失的推动下,特征空间中相同的实例存在实例聚类趋势,这类似于对比学习 [7]。通过聚合重复的候选者,完整方法将 AP 、AP @50 和 AP @25 与基线相比提升了 3.1%、4.1% 和 2.0%,这证明了候选聚合的有效性。

表 6. ScanNetV2 验证集上不同候选聚合方法的比较。

Generating Instance Kernels. 使用原始实例候选和合并图 Mins 标记应聚合哪些候选,自然有两种不同的方式来表示每个实例:1)仅使用具有最高质心分数的候选的特征; 2) 从所有合并的候选者中聚合特征。如表 6 所示,后一种方式(默认)获得了更好的结果,这表明聚合来自不同候选者的特征有利于表示。此外,我们在第 3 行测试了一个理想表示,其中从每个实例中的所有点收集特征。可以观察到,我们的实例表示方法的性能与这种理想表示相当。这表明在我们的内核生成过程中获得了具有代表性和判别性的实例上下文。

5 Conclusion

我们引入了一种3D实例表示,称为实例内核,它将实例的位置、语义和形状信息编码为1D向量。我们发现表示3D实例的困难在于精确定位实例和收集判别特征。因此,我们设计了一种新颖的实例编码范例,该范例首先挖掘质心候选者进行定位。然后,聚合过程同时消除重复的候选并收集每个实例周围的特征以进行表示。我们将实例内核合并到动态内核网络 (DKNet) 中,该网络在公共基准测试中优于以前的最先进方法。

原文链接:https://arxiv.org/abs/2207.07372

Appendix

A1 Backbone and Loss Function

如 3.2 节所述,采用类似3D UNet的主干[23]来提取点特征Fp∈RN×DF_p \in \mathbb{R}^{N \times D}Fp​∈RN×D。并且使用两个多层感知器 (MLP) 来预测语义掩码和质心偏移。我们在图A1中指定了这三个组件的详细架构。这三个组件是从 PointGroup[12]中采用的,这在最近表现最好的方法 [2,16] 中很常见。

语义分支的损失。语义预测分支输出Fp∈RN×DF_p \in \mathbb{R}^{N \times D}Fp​∈RN×D,其中CCC是类别数。对于点Pi,SiP_i, S_iPi​,Si​表示该点属于不同语义类别的概率。给定one-hot ground truth语义标签S^i\hat{S}_iS^i​,语义损失Lsem \mathcal{L}_{\text {sem }}Lsem ​可以计算为:
Lsem=1N∑i=1NCE(Si,S^i)+1−2∑i=1NSiTS^i∑i=1NSiTSi+∑i=1NS^iTS^i,(A9)\mathcal{L}_{s e m}=\frac{1}{N} \sum_{i=1}^N C E\left(S_i, \hat{S}_i\right)+1-\frac{2 \sum_{i=1}^N S_i^T \hat{S}_i}{\sum_{i=1}^N S_i^T S_i+\sum_{i=1}^N \hat{S}_i^T \hat{S}_i}, \quad\quad\quad\quad(A9) Lsem​=N1​i=1∑N​CE(Si​,S^i​)+1−∑i=1N​SiT​Si​+∑i=1N​S^iT​S^i​2∑i=1N​SiT​S^i​​,(A9)
其中CE(x,y)C E(x, y)CE(x,y)表示交叉熵损失。等式中的第二项。 A9是多类dice loss损失[20],可以帮助解决不同语义类别之间的不平衡。

Loss for Offset Branch. 偏移分支估计所有点的质心偏移,即O∈RN×3O \in \mathbb{R}^{N \times 3}O∈RN×3。给定一个点PiP_iPi​,我们将覆盖该点的实例的质心定义为Cp,iC_{p, i}Cp,i​。欧几里得范数和方向都被认为是衡量估计的质心偏移向量OiO_iOi​与ground truth偏移Cp,i−XiC_{p, i}-X_iCp,i​−Xi​之间的差异,其中XiX_iXi​表示点PiP_iPi​的3D坐标。然后,偏移损失Loff\mathcal{L}_{o f f}Loff​计算为:

Loff=1N′∑i=1N(∥Oi−(Cp,i−Xi)∥+Oi⋅(Cp,i−Xi)∥Oi∥⋅∥Cp,i−Xi∥)⋅I(Pi),(A10)\mathcal{L}_{o f f}=\frac{1}{N^{\prime}} \sum_{i=1}^N\left(\left\|O_i-\left(C_{p, i}-X_i\right)\right\|+\frac{O_i \cdot\left(C_{p, i}-X_i\right)}{\left\|O_i\right\| \cdot\left\|C_{p, i}-X_i\right\|}\right) \cdot \mathbb{I}\left(P_i\right), \quad\quad\quad\quad(A10) Loff​=N′1​i=1∑N​(∥Oi​−(Cp,i​−Xi​)∥+∥Oi​∥⋅∥Cp,i​−Xi​∥Oi​⋅(Cp,i​−Xi​)​)⋅I(Pi​),(A10)

其中I(Pi)\mathbb{I}\left(P_i\right)I(Pi​)是一个指示函数,当点PiP_iPi​属于一个实例时输出1,否则输出0。N′N^{\prime}N′表示点的数量(不包括背景点),可以通过N′=∑i=1NI(Pi)N^{\prime}=\sum_{i=1}^N \mathbb{I}\left(P_i\right)N′=∑i=1N​I(Pi​)获得。

A2 Algorithms

Candidate Mining Algorithm 如第二节所述。在第 3.3 行(第 219 行),我们设计了一种定制的具有局部归一化(LNNMS)的非极大值抑制算法,以从预测的热图中定位实例质心。详细的候选挖掘过程在算法1中描述。语义标签B∈RNB \in \mathbb{R}^NB∈RN 表示从软语义掩码S∈RN×CS \in \mathbb{R}^{N \times C}S∈RN×C导出的硬语义标签。BiB_iBi​等于SiS_iSi​中得分最高的类别标签。注意,除了定位实例质心之外,候选挖掘算法获取每个候选的“前景点”和“背景点”,以描述用于进一步处理的候选,如3.4节所述(第244行)。

Candidate Merging Algorithm 如3.4节所述,为了用预测的合并得分图A聚集重复的候选,我们设计了一个候选合并算法。算法2详细说明了这个合并过程。

图 A1. 详细的网络架构。 (a) 骨干架构。 (b) 语义分支和偏移分支的架构。 VVV表示体素的数量。接近线性层的数字表示输出通道的数量。

A3 Instance kernels

为了获得有区别的实例内核,我们对语义、位置和形状信息进行编码以表示实例。位置和语义信息来自候选坐标和点特征。因此,形状信息通过拆分“前景点”和“背景点”进行编码。如图 A3 所示,“前景点”描绘了实例(椅子)的基本形状。在表A1中,我们展示了当位置(坐标)或形状(混合前景和背景点以进行特征池化)时的性能。可以观察到这两种信息对于实例内核都是至关重要的。

表 A1. 成分分析。

表 A2. 内核形状分析。

A4 Dynamic Convolution

为了生成实例掩码,点特征被输入到由几个动态卷积层组成的不同实例解码器中。动态卷积的参数取决于相应的实例内核。如图A2所示,我们用两个卷积层实例化实例解码器,它们有16个和1个输出通道(其内核形状为 [16, 1])。一个实例内核中的元素依次插入到这两个卷积层的权重向量和偏差中。因此,实例内核L的长度取决于实例解码器的具体配置。对于图A2中的实例解码器,L可以通过以下方式计算:

KaTeX parse error: Expected '}', got '#' at position 87: …6=304 \text {, #̲bias }=16 \time…
Conv2 #weight =16×1×1×1=16,#bias =1×1=1, \text { Conv2 \#weight }=16 \times 1 \times 1 \times 1=16, \text { \#bias }=1 \times 1=1 \text {, }  Conv2 #weight =16×1×1×1=16, #bias =1×1=1, 
L=304+16+16+1=337,L=304+16+16+1=337, L=304+16+16+1=337,

图 A2. 实例解码器的详细信息。实例解码器由两个卷积层组成。实例内核中的元素按顺序插入到卷积层的权重和偏差中。

为了评估核大小的影响,我们设计了一系列消融实验。如表A2所示,DKNet在不同的实例核大小和动态卷积层形状下是稳定的。

图A3. 形状建模。

图A4. ScanNetV2验证集的可视化。

A5 Thresholds for Soft Instance Mask

如3.5节所述,在后处理中,我们使用Otsu算法[21]对预测的软实例掩码进行二进制化。Otsu算法将灰度图像中的像素分为前景和背景两类,其基本思想是最大化类间方差。我们重新利用这一思想对软实例掩码M ∈ RI×N进行二进制化。由于原始算法对具有离散灰度级的像素起作用,类似地,我们将软实例掩码的值([0,1])离散为K个置信水平。因此,量化的实例掩码M’可以通过下式获得:
Mk′=⌊Mk∗K⌋, M_k^{\prime}=\left\lfloor M_k * K\right\rfloor \text {, } Mk′​=⌊Mk​∗K⌋, 
其中 Mk 表示第 k 个实例掩码。 Otsu 算法以量化的掩码为输入,将 M’k 中的每个点作为图像中的一个像素处理,并为每个实例输出 Tm,k。 Otsu算法不是使用固定阈值,而是自适应地生成阈值,可以更好地保留响应较弱的实例的形状。

图 A5. 对语义预测错误的鲁棒性。尽管语义预测中出现错误(左侧部分),但实例解码器仍然可以恢复正确的实例掩码(右侧部分)。

A6 More Visualizations

实例分割结果和中间质心图的更多可视化如图 A4 所示。 Base 表示没有候选聚合的基线方法,而 Full 表示我们的完整方法。我们还观察到,通过从实例内核重构实例掩码,可以纠正语义预测中的一些错误。我们在图 A5 中展示了一些示例。

A7 Efficiency

在这里,我们指定了提议的 DKNet 的训练和推理时间。在默认设置的 ScanNetV2 [3] 上训练 DKNet 在单个 RTX 3090 上消耗大约 72 个 GPU 小时。在推理方面,DKNet 相对高效; Titan XP 上 DKNet 的平均推理时间(每个场景)为 521 毫秒,与同一设备上最近的自下而上方法 PointGroup [12](452 毫秒)和 HAIS [2](339 毫秒)相当,仅引入有限的延迟(100-200 ms)。请注意,DKNet 比最近的自顶向下方法(如 GICN [17](8615 ms))效率更高。

表 A3. RTX 3090 上 DKNet 中不同阶段的推理时间。

表 A4. 在 ScanNetV2 测试集上 AP@50 的完整量化结果。最佳性能以粗体显示。


DKNet中不同步骤的详细推理时间如表A3所示。核心操作:编码实例内核消耗的时间第二多(36.19%)。为了进一步提高效率,我们为 DKNet 中的核心操作构建了一个 CUDA 库,例如 3.4 节和 3.5 节中提到的 LN-NMS 和 Otsu 阈值。与朴素的 python 实现相比,CUDA 版本的 LN-NMS 将其推理时间从 187 ms 减少到 79 ms。请注意,这些操作与幼稚的实现是并行的,有很大的优化空间。因此,推理时间可能会进一步减少。

A8 Full Evaluation Results

表 A4 和表 A5 报告了 AP @50 和 ScanNetV2 基准上的 mAP 指标下的结果。

表 A5. 在 ScanNetV2 测试集上 mAP 的完整定量结果。最佳性能以粗体显示。

3D Instances as 1D Kernels相关推荐

  1. ECCV2022论文列表(中英对照)

    Paper ID Paper Title 论文标题 8 Learning Uncoupled-Modulation CVAE for 3D Action-Conditioned Human Motio ...

  2. 1D/2D/3D卷积详解

    目录 概述 1D卷积 2D卷积 3D卷积 概述 1D/2D/3D卷积计算方式都是一样的,其中2D卷积应用范围最广.与全连接层相比,卷积层的主要优点是参数共享和稀疏连接,这使得卷积操作所需要学习的参数数 ...

  3. 阿波罗数据集怎么下载_从2D images 到3D估计:现有最大规模数据集 ApolloCar3D

    任务:给定2D图像,给出检测车辆的3D属性(距离,旋转,外形) 贡献分为3方面: 1)20× larger than PASCAL3D+ and KITTI,5, 277 images, 60K in ...

  4. 用深度学习完成3D渲染任务的蹿红

    大纲 用深度学习完成3D渲染任务的蹿红 研究背景和研究意义 基于传统多视图几何的三维重建算法 相机标定以及坐标转换 主动式--结构光法 主动式--TOF激光飞行时间&三角测距法 被动式--SF ...

  5. DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【2】)

    目录 3.Assimp的导入标志 4.网格(Mesh) 5.骨骼动画基础 3.Assimp的导入标志   一般的模型文件中,大多数情况下在建模时默认都保存成了OpenGL的右手坐标系,即z轴坐标垂直屏 ...

  6. OLED 中激子动力学的 3D 主方程

    我们描述了一种新的激子有机发光二极管 (OLED) 模拟方法,该方法将连续一维 (1D) 漂移扩散 (DD) 模型与三维 (3D) 主方程 (ME) 模型相结合.这种方法描述了多层 OLED 堆栈中的 ...

  7. 3D LUT图像处理

    1. 介绍 在我们开始之前,先对必要的背景知识做一些简单的铺垫.LUT 是 Lookup Table 的缩写,在图像处理方面,LUT 可以用来完成类似滤镜的效果,其原理本质上就是一个映射关系,输入颜色 ...

  8. UNREAL ENGINE 4.13 正式发布!

    这次的版本带来了数百个虚幻引擎 4 的更新,包括来自 GitHub 的社区成员们提交的 145 个改进!感谢所有为虚幻引擎 4 添砖加瓦贡献的人们: alk3ovation, Allegorithmi ...

  9. Hi-C data analysis tools and papers

    Hi-C data analysis tools and papers 全文链接如下: https://github.com/mdozmorov/HiC_tools Tools are sorted ...

最新文章

  1. 排序与查找实验报告java,查找排序实验报告 - 范文大全 - 作文仓库-www.zuowencangku.com...
  2. F5 Priority Group Activation
  3. subprocess.Popen 运行windows命令出现“句柄无效”报错的解决方法
  4. Java面试题:IO流中read()方法为什么返回值是int
  5. java实验10流_实验9 Java输入输出流
  6. About Exception Handling
  7. css权重机制,CSS权重及其计算
  8. JAVA案例之使用接口实现手机功能
  9. 系列学习 Gateway 之第 1 篇 —— SpringCloud Gateway 简介,Gateway 入门实例
  10. 如何快速进行十进制二进制转换
  11. win7计算机的ip地址设置,如何将win7ip地址设置成自动获取
  12. python项目简历内容-python编程工程师简历模板范文
  13. 如何用 Python 爬取需要登录的网站?
  14. 基于Linux实现的聊天室小程序
  15. 《炬丰科技-半导体工艺》 高频磷化铟芯片晶圆级背面加工
  16. iphone计算机的声音,苹果电脑如何自定义声音怎么设置
  17. 百度百家号作者昵称、ID、粉丝数量获取
  18. 【百度网盘】二维码不显示,账号密码无法登录,显示百度认证无法访问此页
  19. 软件编程语言视频教学下载
  20. JDBC数据库操作工具类——JdbcUtils

热门文章

  1. 华为机试HJ63:DNA序列
  2. 育碧蒙特利尔:荣耀战魂
  3. python杂志订阅系统详细设计_从发布-订阅模式谈谈 Flask 的 Signals
  4. 2020云智中国西安站-百度智能云推动产业智能化再升级论坛成功召开
  5. 网页和网站之间的区别
  6. 如何在网页中插网页的代码?
  7. 四字节与浮点数之间的转换(c语言实现)
  8. python图片自动校正流量_利用python西电流量自动查询脚本
  9. ffmpeg相关命令
  10. 设计类笔记本计算机,适合设计师用的笔记本