2020ECCV:Part-aware Prototype Network for Few-shot Semantic Segmentation
文章链接:https://arxiv.org/pdf/2007.06309.pdf
代码地址:https://github.com/Xiangyi1996/PPNet-PyTorch
1. 主要思想
以往方法的缺点:
- 基于匹配的FSS模型都是one-way-few shot的设定, 需要消耗大量的计算资源, 且难以泛化到muti way。
- 使用原型的模型对每个语义类别使用一整个原型来表示, 这不足以来应付图片多变的外观。
- 以上的这些方法将support set限制在一个小范围 oneshot,不能很好的捕获丰富的,粗粒度的特征。
本文的方法和改进:
- 方法基于原型网络。
- 主要思想是将单个类原型分解多个部分的原型来提升结果。除此以外, 还利用未标注的图片来提升我部分原型表示能力,来提升模型性能。
- 提出了一种新颖的图结构的神经网络模型来生成和提高基于标注和未标注图片相结合的模型。
2. 模型
本文核心观点就是通过一种新的原型表示方法,捕捉类间的多变性和细粒度特征。
2.1 特征网络
使用ResNet来提取特征。
2.2 原型生成网络
目的:
为每个类产生一系列(相对于传统的原型网络)独特的原型。
步骤:
- 首先直接提取标注数据的部分感知原型,
- 利用未标注的标签来提纯这些原型。
具体如下:
-
利用已标注数据来产生部分感知原型:
首先利用k-means将特征聚簇为N个部分, 然后利用averge pooling得到初步结果
再利用类的全局上下文, 即前面得到的不同的簇来增强这些原型:
-
利用未标注数据提纯,目的是通过额外的数据的原型来捕捉类内的多变性, 然而未标注的数据是有非常大的噪声的, 本文采用以下三个步骤来达到目的(分组, 剪枝):
-
step1:通过超像素生成SILC去得到一组特征块, 再利用avergepooling得到一系列原型, 然后提出其中与先前提取类型不相关的特征:
-
step2: 通过图卷积网络来增强上述特征与全局的联系。
-
step3:部分感知原型的提纯:
最终得到一系列经过提纯的部分感知原型(后面的公式就是一系列加权了)。
2.3 部分感知mask生成
- 为每个原型在每个像素点计算一个socre map
2.通过最大池化融合每个类的原型, 最后concat
损失函数:
对上述过程不可微解决办法:固定聚类和候选区域选择的结果。
3.实验
在这里插入图片描述
5. 评价
思路还是有意思的,但效果不大。