自适应原型学习和分配的Few-Shot分割(CVPR2021)
摘要
Few-Shot分割大多使用原型学习的思想,通常通过对全局对象信息的平均来从支持特征中获得单个原型。然而,使用单个原型来表示所有的信息可能会导致歧义。本文提出了超像素引导聚类(SGC)和引导原型分配(GPA)两个模块,用于多原型的提取和分配。具体来说,SGC是一种无参数、无训练的方法,它通过聚集相似的特征向量来提取更有代表性的原型,而GPA能够选择匹配的原型,提供更准确的指导。通过整合SGC和GPA,我们提出了自适应超像素引导网络(ASGNet),这是一个轻量级的模型,可以适应物体的比例和形状变化。此外,我们的网络可以很容易地推广到K-Shot分割,并且没有额外的计算成本。
存在的问题及解决方案
目前的Few-Shot分割网络通常从查询图像和支持图像中提取特征,然后提出不同的特征匹配方法和从支持图像到查询图像的目标掩码传输方法。特征匹配和掩码传递通常采用原型特征学习技术。原型学习技术将支持图像的掩码目标对象(masked object features)压缩为一个或几个原型特征向量。然后,在查询图像中寻找相似特征的像素位置来分割目标。原型学习的一个主要优点是原型特征比像素特征对噪声更有鲁棒性。然而,原型特征不可避免地会丢失空间信息,这在支持图像和查询图像的对象外观差异较大时非常重要。此外,大多数的原型学习网络仅仅通过掩码平均池化来生成单个的原型从而丢失了信息的辨别能力。
在这项工作中,我们提出了一种新的原型学习技术,以解决现有的一些主要缺点。特别是,我们想要根据图像内容自适应地改变原型的数量和它们的空间范围,使原型具有内容自适应和空间感知能力。这种自适应的多原型策略对于处理不同图像中物体尺度和形状的巨大变化非常重要。从直觉上看,当一个物体占据图像的很大一部分时,它携带了更多的信息,因此需要更多的原型来代表所有必要的信息。相反,如果对象比较小,背景的比例比较大,那么一个或几个原型就足够了。此外,我们希望每个原型的支持区域(空间范围)能够适应支持图像中出现的对象信息。具体来说,我们的目标是根据特征相似度将支持特征划分为几个有代表性的区域。我们同时也希望能够自适应地选择更重要的原型来在查询图像中找到更相似的特征。由于在不同的图像区域和不同的查询图像中可能出现不同的对象部分,因此我们希望在查询图像中动态分配不同的原型以进行特征匹配。例如,在查询图像中对象的某些部分可能被遮挡,我们希望动态地选择与查询图像中可见部分相对应的原型。
我们利用自适应超像素引导网络(ASGNet)来实现这种自适应、多原型学习和分配,ASGNet利用超像素来适应原型的数量和支持区域。特别地,我们提出了构成ASGNet核心的两个模块:超像素引导聚类(SGC)和引导原型分配(GPA)。SGC模块对支持图像进行基于特征的超像素快速提取,得到的超像素质心作为原型特征。由于超像素形状和数量对图像内容是自适应的,因此生成的原型也变得具有适应性。 GPA模块使用一种类似注意力的机制来分配大多数相关的支持原型特征。综上所述,SGC模块从原型数量及其空间扩展两方面提供了自适应原型学习,GPA模块在处理查询特性时提供了对所学原型的自适应分配。这两个模块使ASGNet高度灵活并适应可变对象形状和大小,允许它更好地泛化看不见的对象类别。
方法
超像素引导聚类(Superpixel-guided Clustering)
超像素被定义为一组具有相似特征(颜色、纹理、类别)的像素。超像素在许多计算机视觉任务中都是有效的,并被用作图像分割任务的基本单位。超像素携带比像素更多的信息,可以为下游视觉任务提供更紧凑、更方便的图像表示。超像素的大致原理可参考知乎。
传统的SLIC超像素算法采用k-means聚类,分为像素-超像素关联和超像素质心更新两步。基于颜色相似性和接近度,像素被分配到不同的超像素质心。具体来说,输入图像 I ∈ R n × 5 I\in R^{n\times 5} I∈Rn×5是一个有n个像素的五维空间(labxy),其中lab镖师CIELAB颜色空间中的像素向量,xy表示像素位置。算法经过迭代聚类,输出关联图,将每个像素n分配给m个超像素中的一个。
我们的研究受到maskSLIC和超像素采样网络(SSN)的启发。MaskSLIC将SLIC适应于定义的感兴趣区域(RoI),主要贡献是在RoI内放置种子点。SSN通过使SLIC算法可微,提出了第一个端到端的可训练超像素算法。在这两种方法的启发下,我们提出了特征空间的掩码超像素聚类,它可以将相似的特征聚集在一起,生成超像素质心作为原型。超像素质心不是代表整个物体的信息,而是代表物体中具有相似特征的部分。 也就说我们并不是在图像空间中计算超像素质心,而是在特征空间上进行操作来聚类相似的特征向量。算法1描述了整个SGC过程:
给定一个支持特征
F
s
∈
R
c
×
h
×
w
F_s\in R^{c\times h\times w}
Fs∈Rc×h×w,支持掩码
M
s
∈
R
h
×
w
M_s\in R^{h\times w}
Ms∈Rh×w和初始化超像素种子
S
0
∈
R
c
×
N
s
p
S^0\in R^{c\times N_{sp}}
S0∈Rc×Nsp,
N
s
p
N_{sp}
Nsp表示超像素数量。我们的目标是获得最终的超像素质心,它是一个多重紧凑原型。首先,我们将每个像素的坐标与支持特征映射连接起来,引入位置信息。然后,我们定义SLIC下的距离函数D,它由特征和空间距离组成:
其中
d
f
d_f
df和
d
s
d_s
ds表示特征和坐标值的欧几里得距离,
r
r
r是一个权重系数。我们通过支持掩码来过滤背景信息并只保留掩码特征(masked feature),将特征映射从
F
s
∈
R
c
×
h
×
w
F_s\in R^{c\times h\times w}
Fs∈Rc×h×w压缩为
F
s
′
∈
R
c
×
N
m
F_{s}^{\prime}\in R^{c\times N_m}
Fs′∈Rc×Nm,
N
m
N_m
Nm指的是支持掩码的像素数量。
然后我们以迭代的方式计算基于超像素的原型。对于每一次迭代
t
t
t,我们首先根据距离函数
D
D
D计算每个像素
p
p
p和所有超像素之间的关联映射
Q
t
Q^t
Qt:
然后,新的超像素质心更新为掩码特征的加权和:
其中
Z
i
t
=
∑
p
Q
p
i
t
Z_{i}^{t}=\sum\nolimits_p^{}{Q_{pi}^{t}}
Zit=∑pQpit表示一个归一化常数。可视化过程如下所示:
对于图像分割而言,因为我们为支持图像提供了前景掩码,我们只需要初始化前景区域内的种子。为了在掩码区域统一初始化种子,我们引用MaskSLIC迭代地放置每个初始种子,过程如图5所示。这种种子初始化的结果使超像素引导的聚类的收敛速度更快,只需要几次迭代:
引导原型分配(Guided Prototype Allocation)
在提取原型之后,以前的方法大多遵循CANet]的设计,将单个原型扩展到相同大小的查询特性,并将它们连接在一起。然而这种操作导致对于支持图像的每个位置都是相同的引导。为了使原型匹配更适应查询图像内容,我们提出了引导原型分配(GPA),如图4所示。我们首先计算余弦距离来度量每个原型与每个查询特征元素之间的相似性:
其中
S
i
∈
R
c
×
1
S_i\in R^{c\times 1}
Si∈Rc×1指的是第
i
i
i个超像素质心(原型),
F
q
x
y
∈
R
c
×
1
F_q^{xy}\in R^{c\times 1}
Fqxy∈Rc×1指的是查询特征在
(
x
,
y
)
(x,y)
(x,y)上的特征向量。我们使用这个相似信息输入到一个双分支结构。第一个分支计算每个像素位置和哪个原型最相似,如下:
得到的
G
x
,
y
G^{x,y}
Gx,y表示特定原型的单个索引值。把所有的索引值整合到一起,我们得到一个引导图
G
∈
R
h
×
w
G\in R^{h \times w}
G∈Rh×w。然后,将相应的原型放置在引导图的各个位置,得到引导特征
F
G
∈
R
c
×
h
×
w
F_G\in R^{c\times h\times w}
FG∈Rc×h×w来实现像素级引导。而在另一个分支中,将所有超像素上的相似信息
C
C
C相加,得到概率图
P
P
P。
最后,我们将概率图和引导特征与原始查询特征
F
Q
F_Q
FQ连接起来提供引导信息,从而获得细化的查询特征
F
Q
′
F^\prime_Q
FQ′:
其中
f
f
f表示
1
×
1
1 \times 1
1×1卷积操作。
自适应性(Adaptability)
如前所述,我们认为该网络的关键属性之一是其对Few-Shot语义分割的自适应能力。在图6中,我们提供了一些例子来说明SGC和GPA的适应能力。在SGC中,为了使其适应于目标尺度,我们定义了一个标准来调节超像素质心的数量:
其中
N
m
N_m
Nm指的是支持掩码的像素数量,
S
s
p
S_{sp}
Ssp指的是分配给每个初始超像素点的平均区域,通常设为100。当前景对象很小的时候,
N
s
p
N_{sp}
Nsp等于0或1,该方法退化为一般的掩码平均池化,如图6(a)所示。此外,为了减少计算量,我们设置了一个超参数
N
m
a
x
N_max
Nmax来限制原型的最大数量。在GPA中,我们可以观察到它对物体形状的适应性。换句话说,它对遮挡有弹性。当查询图像存在严重遮挡时,如图6(b), GPA可以为每个查询特征位置选择最匹配的原型。
K-shot设置(K-shot Setting)
在之前的工作中,
k
k
k-shot的设置通常是通过特征平均或基于注意力的融合处理的。然而,这种策略的改进很小,而且需要大量的计算。相比之下,基于所提出的SGC和GPA,我们的ASGNet可以轻松地采用有效的
k
k
k-shot策略,而不破坏支持特征。具体来说,在每个支持图像和掩码对中,我们都实现了SGC来获取超像素质心。通过收集所有的超像素质心,我们从
k
k
k shot中得到整体的超像素质心
S
S
S:
超像素质心的数量是
N
s
p
=
∑
i
=
1
k
N
s
p
i
N_{sp}=\sum\nolimits_{i=1}^k{N_{sp}^{i}}
Nsp=∑i=1kNspi,通过这样做,GPA可以从多个镜头中接收更大范围的选择,从而产生更准确的指导来分割查询图像中的目标。
实验结果
结论
本文提出了一种用于小镜头图像分割的ASGNet算法。针对现有基于单一原型模型的局限性,引入了超像素引导聚类(Superpixel-guided Clustering, SGC)和引导原型分配(Guided prototype Allocation, GPA)两个新模块,用于自适应原型学习和分配。具体来说,SGC是通过基于特征的超像素聚类来聚集相似的特征向量,而GPA是通过余弦距离度量相似性来将最相关的原型分配给每个查询特征元素。