摘要
点云分割是理解三维环境的基础。然而,目前的三维点云分割方法对场景边界的分割效果较差,导致整体分割性能下降。本文主要研究场景边界的分割。因此,我们首先探索指标来评估分割性能的场景边界。针对边界分割性能不理想的问题,我们提出了一种新的对比边界学习(CBL)框架用于点云分割。具体地说,本文提出的CBL通过在多尺度场景背景的帮助下对比点的表征,增强了跨边界点之间的特征识别。通过在三种不同的基线方法上应用CBL,我们实验表明,CBL不断地改进不同的基线,并帮助它们在边界上取得引人注目的性能,以及整体性能,如mIoU。实验结果表明了该方法的有效性和边界对三维点云分割的重要性。代码和模型将在https://github.com/LiyaoTang/contrastBoundary上公开。
相关工作
分割中的边界
边界问题在二维图像处理中有着悠久的历史,但很少有研究认识到边界在三维点云分割中的重要意义。然而,这些工作都涉及到用于显式边界预测或局部聚合的复杂模块。这些操作在很大程度上增加了模型的复杂性,但对整体度量的性能增益有限。对于边界的分割性能,它们也只能给出定性的结果。作为比较,我们提出了一个对比学习框架,它给模型带来了很少的开销,并且可以通过简单的调整改进各种基线。此外,我们想要注意的是,我们第一次用数值度量量化边界质量,并证明边界问题确实广泛存在于当前的方法中。
对比学习
对比学习在计算机视觉任务的表征学习中表现出了良好的性能,范围从无监督设置到有监督设置。近年来,对比学习也被引入到二维分割中,无监督表示学习也被引入到点云处理中。特别是 P o i n t C o n t r a s t PointContrast PointContrast 进行逐点对比学习来克服几何变换,如刚性变换。 P 4 C o n t r a s t P4Contrast P4Contrast 提出了一种更加灵活的对比策略,促进几何信息和RGB信息的多模态融合。相反,在我们的工作中,我们采取监督设置,并与CBL证明,对比学习是非常适合提高分割质量的边界区域。此外,与上述只使用输入点云点的工作不同,我们利用下采样点云在多个尺度上检查场景上下文。
边界上的分割
由于目前的研究大多集中在改进一般指标,如平均交并比(mIoU),整体精度(OA),平均平均精度(mAP),点云分割的边界质量往往被忽视。与最近边界相关的研究[15,28]只给出边界的定性结果不同,我们是第一个量化边界分割质量的。特别地,我们引入了一系列表示指标,包括mIoU@boundary、mIoU@inner和2D实例分割任务的边界IoU (B-IoU)分数。
在
g
r
o
u
n
d
t
r
u
t
h
ground \; truth
groundtruth 的基础上,我们认为如果一个点的邻域内存在不同标注的点,则将该点视为边界点。同样,对于模型预测,如果存在具有不同预测标号的附近点,则将该点视为边界点。更正式地,我们将点云记为
X
\mathcal X
X,第
i
i
i个点记为
x
i
x_i
xi,其局部邻域为
N
i
=
N
(
x
i
)
\mathcal N_i = \mathcal N (x_i)
Ni=N(xi),对应的
g
r
o
u
n
d
t
r
u
t
h
ground \; truth
groundtruth 标签为
l
i
l_i
li,模型预测标签为
p
i
p_i
pi。我们进一步注意到 ground truth 中的边界点集
B
l
\mathcal B_l
Bl和预测分割中的边界点集
B
p
\mathcal B_p
Bp,因此我们有:
B
l
=
{
x
i
∈
X
∣
∃
x
j
∈
N
i
,
l
j
≠
l
i
}
(
1
)
\mathcal B_l=\lbrace x_i \in \mathcal X \; | \;\exists x_j \in N_i,\; l_j \not= l_i \rbrace \qquad(1)
Bl={xi∈X∣∃xj∈Ni,lj=li}(1)
B
p
=
{
x
i
∈
X
∣
∃
x
j
∈
N
i
,
p
j
≠
p
i
}
\mathcal B_p=\lbrace x_i \in \mathcal X \; | \;\exists x_j \in N_i,\; p_j \not= p_i \rbrace \qquad\quad
Bp={xi∈X∣∃xj∈Ni,pj=pi} 按照惯例,我们把
N
i
\mathcal N_i
Ni 设为半径
0.1
0.1
0.1 的邻域。
为了检验边界分割的结果,直观的方法是计算边界区域内的
m
I
o
U
mIoU
mIoU,即
m
I
o
U
@
b
o
u
n
d
a
r
y
mIoU@boundary
mIoU@boundary。为了进一步比较模型在边界区域和非边界(内部)区域的性能,我们进一步计算了内部区域的
m
I
o
U
mIoU
mIoU,即
m
I
o
U
@
i
n
n
e
r
mIoU@inner
mIoU@inner。假设mIoU是在整个点云
X
\mathcal X
X上计算的:
m
I
o
U
(
X
)
=
1
K
∑
k
=
1
K
∑
x
i
∈
X
1
[
p
i
=
k
∧
l
i
=
k
]
∑
x
i
∈
X
1
[
p
j
=
k
∨
l
j
=
k
]
(
2
)
mIoU(\mathcal X)=\frac{1}{K} \sum^K_{k=1}\frac{\sum_{x_i \in \mathcal X}1[p_i=k\wedge l_i=k]}{\sum_{x_i \in \mathcal X}1[p_j=k\vee l_j=k]} \qquad (2)
mIoU(X)=K1k=1∑K∑xi∈X1[pj=k∨lj=k]∑xi∈X1[pi=k∧li=k](2)其中
K
K
K 是总类别数;
1
[
⋅
]
1[\cdot]
1[⋅]表示一个布尔函数,如果
[
⋅
]
[\cdot]
[⋅]内的条件为真,则输出1,否则输出0;
m
I
o
U
@
b
o
u
n
d
a
r
y
mIoU@boundary
mIoU@boundary 和
m
I
o
U
@
i
n
n
e
r
mIoU@inner
mIoU@inner 定义如下:
m
I
o
U
@
b
o
u
n
d
a
r
y
=
m
I
o
U
(
B
l
)
mIoU@boundary=mIoU(\mathcal B_l) \qquad \quad
mIoU@boundary=mIoU(Bl)
m
I
o
U
@
i
n
n
e
r
=
m
I
o
U
(
X
−
B
l
)
(
3
)
mIoU@inner=mIoU(\mathcal X-\mathcal B_l) \qquad (3)
mIoU@inner=mIoU(X−Bl)(3)其中
X
−
B
l
\mathcal X-\mathcal B_l
X−Bl 是 inner 区域点的集合。
然而,
m
I
o
U
@
b
o
u
n
d
a
r
y
mIoU@boundary
mIoU@boundary 和
m
I
o
U
@
i
n
n
e
r
mIoU@inner
mIoU@inner 在模型预测分割中没有考虑错误边界。受二维实例分割的边界IoU启发,为了更好地评估,我们考虑了分割预测与地面真实数据中的边界之间的对齐。因此,B-IoU 评估定义如下:
B
−
I
o
U
=
B
l
∩
B
p
B
l
∪
B
p
(
4
)
B-IoU=\frac{\mathcal B_l \cap \mathcal B_p}{\mathcal B_l \cup \mathcal B_p} \qquad(4)
B−IoU=Bl∪BpBl∩Bp(4)
方法
在本节中,我们将介绍对比边界学习(CBL)框架,如图2所示。它采用对比学习来增强跨边界特征识别。然后,为了深度增强模型在边界上的性能,我们通过子场景边界挖掘实现了下采样点云即子场景的CBL。
对比边界学习
我们根据广泛使用的
I
n
f
o
N
C
E
l
o
s
s
InfoNCE loss
InfoNCEloss1及其泛化2 3定义边界点上的对比优化目标。特别地,对于一个边界点
x
i
∫
B
l
x_i \int \mathcal B_l
xi∫Bl,我们鼓励学习到的表征和与它来自同一类别的邻域点更相似,并且与来自不同类别的其他邻居点更有区别。例如:
L
C
B
L
=
−
1
∣
B
l
∣
∑
x
i
∈
B
l
l
o
g
∑
x
j
∈
N
i
∧
l
j
=
l
i
e
x
p
(
−
d
(
f
i
,
f
j
)
/
τ
)
∑
x
k
∈
N
i
e
x
p
(
−
d
(
f
i
,
f
k
)
/
τ
)
(
5
)
L_{CBL}=\frac{-1}{|B_l|}\sum_{x_i \in B_l}log \frac{\sum_{x_j \in \mathcal N_i \wedge l_j=l_i}exp(-d(f_i,f_j)/ \tau)}{\sum_{x_k \in \mathcal N_i}exp(-d(f_i,f_k)/ \tau)} \qquad(5)
LCBL=∣Bl∣−1xi∈Bl∑log∑xk∈Niexp(−d(fi,fk)/τ)∑xj∈Ni∧lj=liexp(−d(fi,fj)/τ)(5)其中
f
i
f_i
fi 是点
x
i
x_i
xi 的特征值,
d
(
⋅
,
⋅
)
d(\cdot,\cdot)
d(⋅,⋅) 是距离测量值,
τ
\tau
τ 是对比学习中的温度。上式的对比学习只关注边界点,也就是图中的红色虚线圆。
首先,我们考虑公式(1)中定义的
g
r
o
u
n
d
t
r
u
t
h
ground \; truth
groundtruth 的所有边界点
B
l
\mathcal B_l
Bl。然后,对于每个点
x
i
∈
B
l
x_i \in \mathcal B_l
xi∈Bl,我们限制其正、负的抽样点都在其局部邻域
N
i
\mathcal N_i
Ni内。在这种强空间约束下,我们得到 每个点
x
i
x_i
xi 都满足
{
x
j
∈
N
i
∧
l
j
=
l
i
}
\lbrace x_j \in \mathcal N_i \wedge l_j = l_i \rbrace
{xj∈Ni∧lj=li}的正点对,和邻域中剩余点组成的负点对
{
x
j
∈
N
i
∧
l
j
≠
l
i
}
\lbrace x_j \in \mathcal N_i \wedge l_j \not= l_i \rbrace
{xj∈Ni∧lj=li}。因此,对比学习增强了跨场景边界的特征识别,对于改进边界区域的分割具有重要意义。
子场景边界挖掘
为了更好地探索场景边界,我们在多个尺度上检查下采样点云的边界,这使得骨干模型的不同子采样阶段的对比边界学习成为可能。从输入点云中收集边界点可以直接使用地面真实值标签。但分采样后,很难根据公式(1)得到合适的边界点集定义。由于下采样点的标签未定义,因此,为了实现下采样点云的CBL,我们提出了子场景边界挖掘,即确定每个子采样阶段的
g
r
o
u
n
d
−
t
r
u
t
h
ground-truth
ground−truth 边界点集。
具体地说,我们用上标来表示阶段。在次采样阶段
n
n
n,我们将其子采样点云表示为
X
n
\mathcal X^n
Xn。对于输入点云,有
X
0
=
X
\mathcal X^0= \mathcal X
X0=X。当计算阶段
n
n
n 的边界点集
B
l
n
∈
X
n
\mathcal B^n_l \in \mathcal X^n
Bln∈Xn 时,需要确定子采样点集
x
i
n
∈
X
n
x^n_i \in \mathcal X^n
xin∈Xn 的标签
l
i
n
l^n_i
lin,也就是子场景注释。每个子采样点集
x
i
n
∈
X
n
x^n_i \in \mathcal X^n
xin∈Xn 都是从它的前一个点云
X
n
−
1
\mathcal X^{n-1}
Xn−1 中的一组点聚合而来的。因此,我们利用子抽样程序来迭代确定标签。我们取
l
i
0
l^0_i
li0为点
x
i
0
=
x
i
x^0_i = x_i
xi0=xi 的
g
r
o
u
n
d
t
r
u
t
h
ground \; truth
groundtruth 标签的一个热标签
l
i
l_i
li,有如下结果:
l
i
n
=
A
V
G
(
{
l
j
n
−
1
∣
x
j
n
−
1
∈
N
n
−
1
(
x
i
n
)
}
)
(
6
)
l^n_i=AVG(\lbrace l^{n-1}_j \; | \; x^{n-1}_j \in \mathcal N^{n-1}(x^n_i)\rbrace) \qquad (6)
lin=AVG({ljn−1∣xjn−1∈Nn−1(xin)})(6)其中
N
n
−
1
(
x
i
n
)
\mathcal N^{n-1}(x^n_i)
Nn−1(xin) 定义了前一阶段中点
x
i
x_i
xi 的局部邻域(图2左侧的灰色圆形区域),即从
X
n
−
1
\mathcal X^{n-1}
Xn−1 集合的一组点,经过子抽样程序后,由单个点
x
i
n
∈
X
n
x^n_i \in \mathcal X^n
xin∈Xn 表示,AVG表示平均池化。通过公式(6)和
g
r
o
u
n
d
−
t
r
u
t
h
ground-truth
ground−truth 标签,我们可以迭代得到子场景注释
l
i
l_i
li 作为一个分布,其第
k
k
k 个位置描述了第
k
k
k 个类在输入点云中对应的一组点中的比例。为了确定下采样点云
X
n
\mathcal X^n
Xn 的边界点集,我们只需取
a
r
g
m
a
x
l
i
n
arg max\; l^n_i
argmaxlin 允许对公式(1)中的边界点进行评估,并利用下采样点的特征进行公式(5)中的对比边界优化。最后,对于子场景边界挖掘,我们在各个阶段都应用了CBL,最终损失定义如下:
L
=
L
c
r
o
s
s
e
n
t
r
o
p
y
+
λ
∑
n
L
C
B
L
n
(
7
)
L=L_{cross entropy} + \lambda \sum_n L^n_{CBL} \qquad (7)
L=Lcrossentropy+λn∑LCBLn(7) 其中
L
C
B
L
n
L^n_{CBL}
LCBLn 是阶段
n
n
n 的
C
B
L
CBL
CBL损失,
λ
\lambda
λ是损失权重。
实现细节和 Baseline
由于三维ConvNet已经成为点云处理的一个流行的骨干模型,为了给出一个通用的实现,我们用一个ConvNet基线(图3)来举例说明CBL在点云处理中的应用。
我们在三维连续空间中构建卷积网络:
f
i
=
(
h
∘
g
)
(
x
i
)
=
∑
x
j
∈
N
i
g
(
x
i
−
x
j
)
h
(
x
j
)
(
8
)
f_i=(h \circ g)(x_i)=\sum_{x_j \in \mathcal N_i}g(x_i-x_j)h(x_j) \qquad (8)
fi=(h∘g)(xi)=xj∈Ni∑g(xi−xj)h(xj)(8) 其中
∘
\circ
∘ 表示卷积操作,连续核函数
g
(
⋅
)
g(\cdot)
g(⋅) 近似为单层 MLP,集合
h
(
x
j
)
=
f
j
h(x_j)=f_j
h(xj)=fj 简单地利用了点
x
j
x_j
xj 的特征。我们注意到,与其他利用局部上下文的高级局部聚合模块相比,公式(8)中的3D卷积纯粹是基于中心点与其邻居之间的空间位置。为了更好地利用多尺度CBL优化的边界特征,我们使用多尺度头进行预测,它简单地将每个下采样点云的点特征连接到最后的输出层。正如我们在消融研究中所显示的,如果没有CBL,这种跨多个尺度的串联就失败了。请注意,CBL可以与任何其他多级骨干结合。具体来说,我们还将CBL应用于其他两个流行的基线:RandLA-Net和CloserLook3D,以演示其通用性。RandLA-Net利用随机抽样和细心的局部聚集对大规模场景进行快速处理;CloserLook3D提出了一个无参数的PosPool模块,该模块极大地减少了模型参数和资源消耗,同时实现了与其他具有参数聚合模块的方法(如KPConv)相比的性能。结合ConvNet基线,我们的实验覆盖了大多数典型的点云局部聚集方法的主干,从卷积、注意运算到无参数运算。对于训练,我们遵循基线的设置,并设置权重
λ
=
0.1
\lambda = 0.1
λ=0.1。更多细节将在附录中提供。
Aaron van den Oord, Yazhe Li, and Oriol Vinyals. Representation learning with contrastive predictive coding,2018. ↩︎
Nicholas Frosst, Nicolas Papernot, and Geoffrey E. Hinton. Analyzing and improving representations with the soft nearest neighbor loss. In ICML, 2019. ↩︎
Michael Gutmann and Aapo Hyvarinen. Noise-contrastive estimation: A new estimation principle for unnormalized statistical models. Journal of Machine Learning Research-Proceedings Track, 9:297–304, 01 2010. ↩︎