论文阅读笔记《Few-Shot Learning with Localization in Realistic Settings》

 原文下载:https://arxiv.org/pdf/1904.08502v1.pdf
 论文来源:CVPR2019
 源码地址:https://github.com/daviswer/fewshotlocal
 部分引用格式的是我自己添加的一点认识,其他部分都是摘自深视大佬:https://blog.csdn.net/qq_36104364/article/details/106495421

核心思想

  本文仍是基于度量学习的小样本学习算法,但本文从实际情况出发,通过改进训练方式,增加目标定位信息和增强特征表达能力三个方面,改善了基于度量学习的小样本学习算法在解决实际小样本数据集时的能力。作者首先分析了现有的小样本学习算法在处理实际情况下小样本学习任务所使用的数据集存在的问题:第一,现有算法通常假设数据集都是平衡的,各个类别样本的数量都差不多,而实际上样本数量通常是极不平衡的,某些类别样本的数量甚至超过其它样本几个数量级,因此一个好的学习器应该不管样本数量的多少,都能达到一致的表现。第二,现有算法通常假设不同类别之间的相关性很小,认为类别之间都是彼此独立的,而实际上小样本学习通常要处理上千个类别,而且每个类别之间的区分度很小,因此一个好的学习器应该能够在模糊的自然图像上做出细粒度的类别区分。

其实面对现有的小样本不能推广到现有世界的长尾分布问题。
三个问题分别是:类别不均衡问题,类别远超出之前的五类,至少20类;具有真实感,比如杂乱无章,感兴趣区很小。

  针对上述问题,本文提出了三个解决方案,分别是批折叠(Batch Folding),定位(Localization)和协方差汇合(Covariance Pooling),本文选择的Baseline是Prototypical Network,所提出的改进方案并没有大量增加参数数量,且能够实现端到端的训练,并有效地改善了在真实世界小样本数据集(Meta-iNat contains)上的效果。
  批折叠:
  在Prototypical Network等小样本学习算法训练时,通常将数据集划分为参考集(支持集)与查询集,二者之间是相互分离的,不存在重叠部分。当根据参考图像学习到一个好的类别中心时,受到其它设计器的约束,查询图像会趋近于正确的类别中心而远离其他的类别。两种图像(参考图像和查询图像)的梯度对于学习而言都是必须的,但每个图像只能接收到一种梯度,所以Prototypical Network权重更新是充满噪声的。而且这种划分方式还限制了参考图像的数量,因为对于常见类别或稀有类别,Prototypical Network支持集的每个类别样本的数量都是相同的,如果想增加支持集样本的数量,要么增加批尺寸(这将收到内存的限制),要么减少查询集的数量(这将给查询图像的梯度带来更多噪声)。本文提出了一种留一交叉验证法(leave-one-out cross-validation)取代了支持集与查询集之间的硬性划分。将整个数据集都看做是支持集,当一副图像要作为查询图片时,只需要在其对应的原型(Prototype)减去这张图像的贡献就可以了。假设共有n个类别,每个类别包含p个样本,v i,j 表示第j 类中的第i个样本对应的特征向量,令 cj = ∑ i vi,j / p 为第j类的原型(Prototype)(先累加后平均),则在预测第j类中的第i 个样本的类别时,所采用的的原型为
论文阅读笔记《Few-Shot Learning with Localization in Realistic Settings》

可以看到对应的原型cj减去了样本特征向量v ~i , j~ 对原型的贡献,并通过p/ p − 1 调整数量平衡(原来计算时使用了p个样本,现在减去一个应该为p-1个样本)。采用这样的方式使得查询图像和参考图像都能接收两种图像计算的到的梯度,并且参考集和查询集的样本数量可以增加到批尺寸的上限。

原型网络是面向稀有类进行设计的,其实没有考虑普通类的性能
批折叠在表示集较小时,会降低性能。

定位:
  这一改进其实是考虑到了目标的位置信息,将目标物体作为前景,与背景分离出来,针对感兴趣区域进行类别预测,就能提高准确率。作者首先在训练集中增加了部分带有目标边界框的图片,所占比例约为10%。然后利用一个子模块对特征提取网络输出的特征图进行前景和背景的预测,并得到掩码图。处理过程如下图所示
论文阅读笔记《Few-Shot Learning with Localization in Realistic Settings》

对于带有目标边界框的样本图像1,前景与背景分割非常简单,直接利用边界框区分就可以了,边界框以内的是前景,以外的是背景,然后分别计算每张特征图前景和背景部分的平均值,得到前景和背景向量2 。对于没有目标边界框的样本图像3 ,则是逐像素计算与前景向量和背景向量2之间了负L2距离,并利用softmax函数转化成前景背景的掩码图4,将特征图与掩码图相乘,就得到了对应的前景预测图和背景预测图5 。最后分别进行平均池化得到前景背景向量,并级联在一起得到最终的级联特征向量6 ,用于下面的分类任务。
  协方差汇合
  本文提出协方差汇合,也就是双线性汇合(bilinear pooling),本质上是一种拓展特征空间,增强表征能力的方式。这一方法需要两个来自不同分支网络的特征图(本文中利用前景和背景两个分支的特征图),计算两个特征图的外积(矩阵相乘)作为两者之间的协方差,并利用有符号的平方根规范化进行处理,但不做单位化处理。最后再利用全局平均池化得到前景和背景向量。
论文阅读笔记《Few-Shot Learning with Localization in Realistic Settings》

上式展示了带有符号的平方根规范化的计算方式,这里提到的外积运算,规范化和单位化处理都是双线性汇合中的标准做法,具体可参考《Bilinear CNN Models for Fine-grained Visual Recognition》和相关的解读。这一方法并没有增加模型的容量,而是通过提高特征的表征能力来改善效果的。

实现过程

网络结构&损失函数

基本与Prototypical Network 保持一致。

训练策略

如上文批折叠部分所介绍。

创新点

提出了批折叠的训练方法,采用留一交叉验证法对原型网络进行训练,放宽了对于参考集和查询集图片数量的限制
通过对图像进行前背景进行分割,实现目标物体感兴趣区域的定位,减少了模糊背景对于分类的影响,提高了分类的准确性
引入了双线性汇合,在不增加参数数量的前提下,提高了特征的表征能力

算法评价

本文在原型网络的基础上提出了三点改进方案,且三个方案可以融合在统一的框架中,实现端到端的训练。有针对性地解决了目前基于度量学习的小样本学习算法,在处理实际数据集时能力不足的问题。三个方案均不需要对原有算法进行大量修改,且没有明显增加模型参数数量,但根据实验结果来看,在一些困难的数据集上可以带来翻倍的性能提升,因此实际应用价值较高。
————————————————
版权声明:本文为CSDN博主「深视」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36104364/article/details/106495421

上一篇:基于BERT的通用语命名实体识别论文翻译


下一篇:如何在eclipse中添加android ADT