前言
这是一篇发表在 ECCV 2022 上的论文,对后续的许多 few-shot 方法都有着一定的启发作用。原论文作者在知乎上也给出了自己的解读:ECCV 2022 | SSP: 自支持匹配的小样本任务新思想
原论文链接:Self-support Few-Shot Semantic Segmentation
1. Abstract
现有的 few-shot 分割方法严重受限于所提供的少数几张照片支持对类内变化的覆盖范围。
为此,本文提出了一种新颖的自支持匹配策略来缓解这一问题,该策略使用查询原型来匹配查询特征,其中查询原型是从高置信度查询预测中收集的。这种策略能有效捕捉查询对象一致的基本特征,从而恰当地匹配查询特征。本文还提出了自适应自支持背景原型生成模块和自支持损失,以进一步促进自支持匹配过程。
2. Introduction
2.1. Motivation
2.1.1. Few-shot Segmentation (FSS) Task
对于一个感兴趣的目标新类别,小样本分割算法通过给定的支持图片
I
s
I_s
Is 对查询图片
I
q
I_q
Iq 中的目标新类别进行分割。其中,对每个目标新类别来说,在训练集中没有出现或者没有标注,且在测试时对应的样本数量只有少数几张图片(一般低于 10 张)。经典的小样本分割算法是分别在支持图片
I
s
I_s
Is 对查询图片
I
q
I_q
Iq 上提取特征,并利用 Masked Average Pooling 操作和 support GT mask 在支持图片特征
F
s
F_s
Fs 上生成支持特征原型
P
s
P_s
Ps。最后计算支持特征原型
P
s
P_s
Ps 和查询图片特征
F
q
F_q
Fq 每个空间位置特征之间的余弦相似度(cosine similarity),并将这个 cosine similarity map 作为预测的分割结果。
2.1.2. Few-shot Segmentation (FSS) Problem
小样本分割任务存在一个非常重要的问题,就是 support 和 query 间的 appearance gap。在 support 和 query 中的同类别物体可能存在非常大的外观差异性。
这一问题源自于小样本任务的特性,即数据稀少性和数据多样性。其中数据稀少性是指 support 数据很少,通常每个新类别只有不到10个样本,而数据多样性是指 query 的数量是无穷无尽的。所以 support 中的物体根本无法涵盖所有 query 中的同类别物体。
2.2. Contribution
本文提出了一种全新的自支持小样本分割算法。其思想是利用查询特征原型 P q P_q Pq 去匹配查询图片特征 F q F_q Fq。其中查询特征原型 P q P_q Pq 是利用高置信度的 query prediction mask 提取对应的查询图片特征 F q F_q Fq 得到的,而 query prediction mask 则是由传统 support-query 匹配算法生成的。因为这种 query 特征的自匹配性质,我们将方法命名为自支持(self-support)算法。
3. Methods
3.1. Motivation
自支持匹配想法源自于格式塔理论(Gestalt principle),即物体的整体性:相对于不同物体上的不同部分,同一个物体上的不同部分会更像。
为了验证这一想法,本文统计了 Pascal VOC 数据集中的图片不同像素之间的相似度,其特征是用 ImageNet 上预训练的 ResNet-50 提取的。
如 Table 1. 所示,对于前景像素来说,相同物体上的前景像素之间的相似度远大于不同物体上的前景像素之间的相似度,在背景像素上也观察到相同的现象。
为了进一步验证本文的自支持想法,如 Table 2. 所示,本文使用传统的支持特征原型 P s P_s Ps(从 support 图片中提取的 support prototype)和自支持特征原型 P q P_q Pq(从 query 图片中提取的 self-support prototype,因为知道 query GT mask),分别与查询图片特征 F q F_q Fq 进行匹配。自支持特征原型 P q P_q Pq 的匹配结果可以达到 83.0 mIoU,比支持特征原型 P s P_s Ps 的匹配结果高近 25 个点。但是在实际使用中不可能知道 query GT mask,所以本文人为地设置不同大小的 query GT mask 并引入噪声来模拟预测得到的 query mask。在这种情况下,自支持特征原型 P q P_q Pq 的匹配结果仍然高于 74 mIoU。这两个实验很好地支持了自支持匹配的想法。
3.2. Overview of the architecture
本文通过传统的 support prototype based matching 生成初始的 query mask,并利用 query mask 在查询图片特征
F
q
F_q
Fq 上提取自支持特征原型
P
q
P_q
Pq。最后将自支持特征原型
P
q
P_q
Pq 和支持特征原型
P
s
P_s
Ps 融合并与查询图片特征
F
q
F_q
Fq 进行匹配。同时本文认为可以进行多次的自支持匹配对自支持特征原型
P
q
P_q
Pq 进行优化。
4.3. Self-support Prototype
常规的支持原型生成程序是:
MAP
用于生成与查询特征
F
q
F_q
Fq 匹配的预测,同时可以得到 estimated query mask
M
1
M_1
M1:
然后,可以用同样的方法生成查询原型 P q P_q Pq,只是在推理过程中查询图像 M q M_q Mq 的 GT mask 不可用。因此,需要使用预测的 query mask M ~ q \tilde{M}_q M~q 来聚合查询特征。查询原型生成过程可表述为:
其中, M ~ q = 1 ~ ( M 1 > τ ) \tilde{M}_q = \tilde{1}(M_1 > \tau) M~q=1~(M1>τ)
-
1
~
\tilde{1}
1~ 代表
indicator function
,通常用于将 1 分配不给一组元素中属于集合的元素,将 0 分配给不属于集合的元素 - τ \tau τ 用于控制查询特征采样范围,前景和背景查询掩码的阈值分别设置为 { τ f g = 0.7 , τ b g = 0.6 } \{ \tau_{fg} =0.7, \tau_{bg} =0.6 \} {τfg=0.7,τbg=0.6}
估计的自支持原型 P q = { P q , f , P q , b } P_q = \{ P_{q,f}, P_{q,b}\} Pq={Pq,f,Pq,b} 将用于匹配查询特征
本文发现,估计的查询掩码只需要涵盖一些有代表性的对象片段,就足以检索到同一对象的其他区域。为了验证部分对象或对象片段是否能够支持整个对象,我们使用部分原型对模型进行了训练和评估,这些原型是根据地面实况掩码标签随机选择的特征聚合而成的
如 Table 2. 所示,在减少用于生成原型的聚合对象区域的同时,本文提出的自支持原型始终保持着较高的分割性能
本文在部分原型中引入了噪声特征(噪声比为 20%),以便在推理过程中模拟真实的自支持生成,方法是从非目标区域随机选择图像特征,并将这些特征汇总到上述部分原型中。如 Table 2. 所示,在这种噪声情况下,我们的自支持原型仍然比传统的支持原型好用得多
需要注意的是,每幅图像可能包含多个对象,所以本文提出的自支持原型也能很好地处理多对象场景
4.4. Adaptive Self-support Background Prototype
本文的算法分别对 foreground 和 background 的 prototype 进行建模,但是 foreground 和 background 的性质完全不一样:
- 对于 foreground 来说,同一个物体的不同部分之间一般是相似的,具有全局的相似性,所以可以使用
MAP
将所有的 foreground 像素聚合为一个 prototype 向量来表示 foreground
-
但是对于 background 来说,背景一般比较杂乱,没有全局的相似性,只有局部的相似性,所以用一个 prototype 向量来表示 background 是有问题的。因此基于 background 的局部相似性这一特点,本文提出了 adaptive self-support background prototype (ASBP),即根据当前 background 像素与其他 background 像素之间的相似度,加权地融合 background 特征。具体来说:
-
首先通过对查询特征 F q F_q Fq 与背景掩码 M ~ q , b \tilde{M}_{q,b} M~q,b 的掩码乘法,收集背景查询特征 F q , b F_{q,b} Fq,b
-
然后,可以通过矩阵乘法运算
MatMul
生成重塑的背景查询特征 F q , b F_{q,b} Fq,b 的像素与完整查询特征 F q F_q Fq 之间的亲和矩阵 A A A -
最后,亲和矩阵通过
softmax
运算沿第一维进行归一化,用于对每个查询像素的背景查询特征进行加权汇总,生成自适应自支持背景原型 P q , b ∗ P^*_{q,b} Pq,b∗
-
用自适应自支持背景原型更新自支持原型: P q = { P q , f , P q , b ∗ } P_q = \{ P_{q,f}, P^*_{q,b} \} Pq={Pq,f,Pq,b∗}
4.5. Self-support Matching
本文对支持原型 Ps 和自支持原型 Pq 进行了加权组合:
计算增强支持原型 P s ∗ P^*_s Ps∗ 与查询特征 F q F_q Fq 之间的余弦距离,生成最终的匹配预测结果:
然后,在生成的距离图上应用训练监督:
为了进一步简化自支持匹配过程,本文提出了一种新的查询自支持损失:
通过在支持特征上使用相同的步骤,可以引入支持自匹配损失 L s \mathcal{L}_s Ls
最后,通过联合优化上述所有损失,以端到端的方式训练模型:
总结
算法优点:
- 第一个优点是自支持算法会更加受益于更好的 backbone 和 support 数量,因为它们可以带来更准确的初始 query mask 预测结果,可以提取更准确的 self-support prototype,进而得到更好的分割结果
- 第二个优点是更高置信度的预测结果。分割算法会使用阈值将预测结果中的连续
[
0
,
1
]
[0,1]
[0,1] 值变为 0-1 值,但是初始的预测结果质量也很重要,尤其是对于困难样本。如果预测值在 0.5 附近,这个点上的预测就很容易失败。本文希望得到更加鲁棒和高置信度的预测结果。因此,本文使用
MAE
对预测结果的连续 [ 0 , 1 ] [0,1] [0,1] 值进行评估 - 第三个优点是自支持算法非常通用,没有额外的参数量,且额外的计算量也很小,模型很小,训练和测试都很快,并可以直接应用在其他的小样本分割算法上