©作者 | 范琦
单位 | 香港科技大学
研究方向 | 小样本学习/模型泛化
这是我们在 ECCV 2022 上的新工作,第一次(to my best knowledge)在小样本任务中提出了自支持匹配(self-support matching)的思想,并将其用在小样本分割(Few-shot semantic segmentation, FSS)任务中,用很新颖的想法和很简单的方法取得了很好的效果,没有额外参数,模型很小,训练和测试都很快。同时也希望可以把我们的自支持匹配想法应用到其他相关任务中。代码已经开源。
论文标题:
Self-Support Few-Shot Semantic Segmentation
https://arxiv.org/abs/2207.11549
https://github.com/fanq15/SSP
Annotation
-
-
-
:支持特征原型(support prototype)
-
-
-
:查询特征原型(query prototype),自支持原型(self-support prototype)
FSS Task
对于一个感兴趣的目标新类别,小样本分割算法通过给定的支持图片
对查询图片
中的目标新类别进行分割。其中,对每个目标新类别来说,在训练集中没有出现或者没有标注,且在测试时对应的样本数量只有少数几张图片(一般低于 10 张)。
经典的小样本分割算法是分别在支持图片
对查询图片
上提取特征,并利用 Masked Average Pooling 操作和 support GT mask 在支持图片特征
上生成支持特征原型
。最后计算支持特征原型
和查询图片特征
每个空间位置特征之间的余弦相似度(cosine similarity),并将这个 cosine similarity map 作为预测的分割结果。具体流程如图 0 左图所示。
FSS Problem
小样本分割任务存在一个非常重要的问题,就是 support 和 query 间的 appearance gap。在 support 和 query 中的同类别物体可能存在非常大的外观差异性。比如同样是猫这个类别,但是不同的猫的品种、姿态和拍照的光照条件等可能完全不一样,如图 0 右图所示。这一问题源自于小样本任务的特性,即数据稀少性和数据多样性。
其中数据稀少性是指 support 数据很少,通常每个新类别只有不到 10 个样本,而数据多样性是指 query 的数量是无穷无尽的。所以 support 中的物体根本无法涵盖所有 query 中的同类别物体。如图 0 左图所示,support 是加菲猫的猫头,query 是一整只黑猫,传统的匹配算法只能将黑猫的猫头分割出来,因为两者具有语义相似性,但是加菲猫猫头与黑猫的身体具有较大的差异性,因此无法得到令人满意的分割结果。
Other Solutions
之前的方法也注意到了这个关键问题并试图解决它。有的方法试图学习更好的支持特征原型:利用未标注图片得到更好的支持特征原型 [1,2],或者提出复杂的支持特征原型生成模块,如利用注意力机制 [3,4] 和自适应学习 [5,6,7] 等。也有些方法提出更好的训练方式 [8,9] 来提升匹配效果。但是这些方法都无法从根本上解决 support 和 query 之间的 appearance gap 问题。因为它们还都局限在利用非常少数的 support 去分割无穷的 query。
Our Idea
我们提出了一种全新的自支持小样本分割算法。其思想是利用查询特征原型
去匹配查询图片特征
。其中查询特征原型
是利用高置信度的 query prediction mask 提取对应的查询图片特征
得到的,而 query prediction mask 则是由传统 support-query 匹配算法生成的。因为这种 query 特征的自匹配性质,我们将方法命名为自支持(self-support)算法。
Our Motivation
自支持匹配想法源自于格式塔理论(Gestalt principle),即物体的整体性:相对于不同物体上的不同部分,同一个物体上的不同部分会更像。为了验证这一想法,我们统计了 Pascal VOC 数据集中的图片不同像素之间的相似度,其特征是用 ImageNet 上预训练的 ResNet-50 提取的。
如表 1 所示,对于前景像素来说,相同物体上的前景像素之间的相似度远大于不同物体上的前景像素之间的相似度。我们在背景像素上也观察到相同的现象。但是这里验证的是像素之间的关系,而我们的目的是进行特征原型 support prototype 和查询图片特征 query feature 之间的匹配。所以我们利用另一个实验进一步验证我们的自支持想法。
如表 2 所示,我们使用传统的支持特征原型
(从 support 图片中提取的 support prototype)和自支持特征原型
(从 query 图片中提取的 self-support prototype,因为我们知道 query GT mask),分别与查询图片特征
进行匹配。自支持特征原型
的匹配结果可以达到 83.0 mIoU,比支持特征原型
的匹配结果高近 25 个点。
但是在实际使用中,我们不可能知道 query GT mask,所以我们人为地设置不同大小的 query GT mask 并引入噪声来模拟预测得到的 query mask。在这种情况下,自支持特征原型
的匹配结果仍然高于74 mIoU。这两个实验很好地支持了自支持匹配的想法。
▲ 表1
Method
方法部分很简单,如图 2 所示,我们通过传统的 support prototype based matching 生成初始的 query mask,并利用 query mask 在查询图片特征
上提取自支持特征原型
。最后将自支持特征原型
和支持特征原型
融合并与查询图片特征
进行匹配。同时我们可以进行多次的自支持匹配对自支持特征原型
进行优化。
▲ 图2
Another Problem and Solution
可以注意到,我们的算法分别对 foreground 和 background 的 prototype 进行建模,但是 foreground 和 background 的性质完全不一样。对于 foreground 来说,同一个物体的不同部分之间一般是相似的,具有全局的相似性,所以可以使用 masked average pooling 将所有的 foreground 像素聚合为一个 prototype 向量来表示 foreground。
但是对于 background 来说,背景一般比较杂乱,没有全局的相似性,只有局部的相似性,所以用一个 prototype 向量来表示 background 是有问题的。因此基于 background 的局部相似性这一特点,我们提出了 adaptive self-support background prototype(ASBP),即根据当前 background 像素与其他 background 像素之间的相似度,加权地融合 background 特征。其模型框架如图 3 所示。
Experiments
我们在 Pascal VOC,MS COCO 和 FSS-1000 三个数据集上进行了实验。如表 3 和表 4 所示,在使用 ResNet-101 backbone 和 5-shot support 的设置下,我们的方法取得了最好的性能,同时在其他设置下我们的方法也很有竞争力。我们发现 HSNet 的 evaluation protocol 更容易在 MS COCO 数据集上得到更好的结果,因此我们也使用 HSNet 的 evaluation protocol 来测评我们的算法。
▲ 表3
▲ 表4
Analysis
1. 图 4 可视化了自支持匹配的工作流程和效果,可以看到 support 和 query 中的物体具有很大的 appearance gap,但是我们的自支持匹配可以很好地利用 self-support prototype 得到准确的分割结果。这里我们取 0.8 作为初始 query mask 的阈值,以展示用于生成 self-support prototype 的 query feature。
2. 表 5 的消融实验证明了我们各个模块的有效性。
3. 图 5 分别对 mask threshold 的取值进行分析和对 ASBP 的工作原理进行了可视化。
4. 表 6 验证了不同 prototype 的效果。
5. 表 7 讨论了自支持算法与自注意力方法的区别。
▲ 图4
▲ 表5
▲ 图5
▲ 表6
Advantages
第一
个优点是自支持算法会更加受益于更好的 backbone 和 support 数量,因为它们可以带来更准确的初始 query mask 预测结果,可以提取更准确的 self-support prototype,进而得到更好的分割结果。这是一种马太效应,因此我们的方法在 ResNet-101 backbone 和 5-shot support 的设置下会大大优于其他的算法。同时表 8 也展示了自支持算法在不同条件下的性能提升幅度。
第二
个优点是更高置信度的预测结果。分割算法会使用阈值将预测结果中的连续 [0,1] 值变为 0-1 值,但是初始的预测结果质量也很重要,尤其是对于困难样本。如果预测值在 0.5 附近,这个点上的预测就很容易失败。我们希望得到更加鲁棒和高置信度的预测结果。因此,我们使用 MAE 对预测结果的连续 [0,1] 值进行评估。如图9所示,我们的算法可以得到更低的 MAE,这意味着我们的预测结果具有更高的置信度。表 9 和表 10 显示我们的算法对其他形式的 support 标注也很鲁棒。
第三
个优点是自支持算法非常通用,
没有额外的参数量
,且额外的计算量也很小,模型很小,训练和测试都很快,并可以直接应用在其他的小样本分割算法上。如表 11 所示,我们将自支持算法用在 PANet 和 PPNet 上,都得到了性能的提升。
▲ 表8
Story
自支持匹配这个想法是我在 DDL 前想到的,立即着手去做,但是当时做的并没有效果,于是搁置了几天。但是我觉得这个想法一定可行,所以我又回过头来重新思考了整个方法,发现是我在利用 query mask 选取 query feature 的时候存在问题。我最开始是使用 0.5 作为阈值选取 query feature 的,但是会引入比较多的噪声。后面我就尝试提升阈值到 0.7,方法就立刻有效了。
所以
自支持的关键点就是选取尽可能多的高置信度的 query feature 去生成高质量的 self-support prototype
。整个项目从开始到结束总共花了 6 周的时间,方法很简单,但是想法很新颖,希望对 few-shot 领域有所启发。自支持匹配这个想法在 few-shot 领域是很少或者没有被探索过的。可以把自支持的想法推广到其他的 few-shot 任务中。因为 support 和 query 之间的 appearance gap 是 few-shot 中普遍存在的重要问题。
感谢三位老师的指导,感谢 Lihe Yang @LeolhYang 的很好的工作 MLC
[1]
和提供的很强的 baseline,感谢女票的支持,感谢我家小加菲猫菲菲出演 teaser 图片中 support。最后祝大家找工作都能拿到 SSP。
[1] Mining latent classes for few-shot segmentation (ICCV 2021)
[2] Part-aware prototype network for few-shot semantic segmentation (ECCV 2020)
[3] Simpropnet: Improved similarity propagation for few-shot image segmentation (IJCAI 2020)
[4] Canet: Class-agnostic segmentation networks with iterative refinement and attentive few-shot learning (CVPR 2019)
[5] Adaptive prototype learning and allocation for few-shot segmentation (CVPR 2021)
[6] Self-supervision with superpixels: Training few-shot medical image segmentation without annotation (ECCV 2020)
[7] Amp: Adaptive masked proxies for few-shot segmentation (ICCV 2019)
[8] Crnet: Cross-reference networks for few-shot segmentation (CVPR 2020)
[9] Panet: Few-shot image semantic segmentation with prototype alignment (ICCV 2019)
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧