查看原文
其他

【源头活水】原型学习在Few-Shot语义分割中的使用

“问渠那得清如许,为有源头活水来”,通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟“源头活水”专栏,帮助你广泛而深入的阅读科研文献,敬请关注。

来源:知乎—Jy的炼丹炉
地址:https://zhuanlan.zhihu.com/p/390660939
本篇论文是基于原型学习+度量学习实现的,发表于BMVC2018,模型相对来说还是比较复杂的,我花了好久的时间才搞懂,也有些不太清楚的地方还需继续摸索。
论文地址:
http://bmvc2018.org/contents/papers/0255.pdf

01

预备知识1:全局平均池化(GAP)
定义:将特征图所有像素值相加求平均,得到一个数值,即用该数值表示对应特征图。
目的:替代全连接层
效果:减少参数数量,减少计算量,减少过拟合
思路:如下图右所示。假设最终分成4类,则最后卷积层应该包含4个特征图,然后按照全局池化平均定义,分别对每个特征图,累加所有像素值并求平均,最后得到4个数值,将这4个数值输入到softmax层中,得到10个概率值,即这张图片属于每个类别的概率值。从而代替左边的全连接层。
意义:对整个网络从结构上做正则化防止过拟合,剔除了全连接层黑箱子操作的特征,直接赋予了每个channel实际的类别意义。
Distance metric:通过以往工作和本文实验得出,使用欧几里得距离来作为距离度量会明显的优于使用余弦距离作为距离度量。

02

预备知识2:原型网络(Prototypical Networks)

在few-shot分类任务中, 为一组小规模的N个支持数据集。x是D维的原始数据的向量化表示,y为其对应的类别,Sk代表类别为k的数据集合,S为全体支持数据集。
模型:原形网络要为每个类别计算出一个原形表示    ,通过一个embedding函数

将维度D的样例数据映射到M维的空间上。类别的原形表示Ck是对支持集中的所有的向量化样例数据取均值

在测试时,原形网络使用softmax作用在query向量点到Ck的距离。

训练过程是通过随机梯度下降法最小化目标函数:

其中k为训练样本的真实标签。训练的episode为随机从训练集中选择的一个类子集,从这些类子集中选择一些样例数据作为支持(support set)集,其剩余的作为查询(query set)集。完整的loss计算过程我们参考伪码:


03

步入正题
接下来就是本篇论文的具体内容
模型介绍
如图为网络完整模型,针对2-way 1-shot任务的模型体系结构和数据流进行说明。
(a)是原型学习分支。原型分类器给定支持集对查询集进行分类,并学习原型。(b)是分割部分。分类器获取查询图像和从(a)学习到的原型来输出预测分割掩码。(c)演示如何计算融合概率图中使用的权重W。每个概率映射都与查询图像连接,与查询集相同,然后输入原型分类器以生成一个特征向量。通过相似度度量函数d()计算特征向量和原型相似度分数。
基础架构(A part):
假定表示一个含有参数的特征图提取器,  将输入映射到一个含M个通道的特征图。然后使用全局平均池化(GAP)来从特征图中过滤出空间信息,其输出为一个M维的特征向量。
假定    是支持集S的一个只包含语义类别c的子集,我们定义类c的原型为该类的均值特征向量:

其中    ,表示C类含有k个样本; 表示分割分支中参数为  的另一个特征提取器。我们使用上采样层来将原型恢复到和特征图  相同大小。然后通过element-wise addition将  和N个恢复的原型相融合。特别地,为了将背景(BG)与原型区分开,我们从  中减去所有原型的均值特征向量。假设m 代表语义类(包括背景)的特征映射,我们有:

m被1×1卷积层(conv)压缩成单通道特征图。连接的N +1通道特征映射在每个通道中具有不同的重要程度,因此对每个通道进行L2范数归一化。我们使用1×1卷积和双线性插值来产生最终对数。通过使用1×1卷积,融合不同通道之间的信息。让α表示对数的第α的通道,softmax和nβ表示归一化后的特征图的β通道,我们有:

度量学习(B part):
首先通过  提取query set融合掩码概率图得到的特征图,之后通过全局最大池化输出一个特征向量。计算特征向量与前面得到的原型    的距离,最后使用softmax加权最近邻分类器对语义类进行分类,得到像素点属于第c类的概率。

其中d dd表示相似度量函数,设  为原型学习者分支的辅助损耗,并与来自分割分支的  进行交替优化:

其中    是一个二值指示函数。
排列训练(Permutation Training):
对于一个N-way的学习任务,其中有N+1个类。在训练中,单通道特征映射的连接有一个顺序(哪个类先来,哪个类最后来),这取决于原型的输入顺序。也就是说一共有(N+1)!种排列方式。对于一个episode,有S和    ,我们使用不同的原型顺序来训练模型。在实践中,当N很大时,我们随机选择整个排列的子集。这种技术背后的核心思想是使网络能够区分不同的原型,而不是记忆所有的语义信息。

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“源头活水”历史文章


更多源头活水专栏文章,

请点击文章底部“阅读原文”查看



分享、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存