CVPR2019的few-shot的文章

元学习论文总结||小样本学习论文总结

2017-2019年计算机视觉顶会文章收录 AAAI2017-2019 CVPR2017-2019 ECCV2018 ICCV2017-2019 ICLR2017-2019 NIPS2017-2019

作者:sisiyou
链接:https://zhuanlan.zhihu.com/p/67402889
来源:知乎
 

本文主要总结了CVPR2019的few-shot的文章,主要从motivation,具体方法上进行总结。

基于度量的方法 (在原型网络,图卷积的基础上改进)

  • Revisiting Local Descriptor based Image-to-Class Measure for Few-shot Learning

motivation:局部度量对于few-shot任务很重要

方法:对于query的feature map为每个空间特征计算一个相似性

  1. 利用CNN对support set和query set提取特征
  2. 对于一个query feature map,对每个空间特征,找到support feature map中最相近的K(K=1)个特征,计算相似性,这个query的相似性为所有位置相似性的和
  3. 利用最近邻loss优化网络

问题:利用局部相似性是对few-shot有效的

  1. 对于不同类,也找到最相似的特征,拉近不同类特征的距离
  2. 相同背景区域,造成高的相似性,产生误差
  3. 对于非目标物体的局部特征相似性会干扰最终的相似性

 

  • Finding Task-Relevant Features for Few-Shot Learning by Category Traversal

motivation:每个task对support set的图像分别提取特征,忽略了support set的图像间的语义关系。模型可以通过整合support set所有图像的信息,从而找到最具有判别性的特征。

方法:根据support set得到一个channel attention,对所有的图像应用channel attention

  1. 对于support set图像提取特征,得到(K*N, c, h, w),经过一个卷积层求得原型(K, c1, h1, w1),将所有类连接得到一个特征(K*c1, h1, w1),经过卷积得到一个channel attention(c1, h1, w1)(在channel通道上做attention)
  2. 将support特征和query特征经过一个卷积层,映射到(c1, h1, w1),与上述得到的attention相乘,得到更具有判别性的特征
  3. 对于更新后的特征做度量学习(matching net,protocol net,relation net)

问题:channel attention对度量有用

  1. 为什么对一个task所有的图像都经过一个相同的channel attention map,直观上不同的图像(或者不同类的图像)的channel attention map应该不相同。

 

  • Edge-Labeling Graph Neural Network for Few-shot Learning (CVPR19)

motivation:graph结构非常适合few-shot的问题,对support set和query图像建立图模型,将support set的图像信息传递给query图像。现有的方法都是对图的节点进行分类,本文提出了对图的边进行分类。(图的边的权重天然的表示两个连接的图像是否为同一类)

方法:对边进行分类,产生loss,更新网络。

  1. 利用编码器提取特征,初始化节点特征,和边特征。边特征有两维,第一维表示同一类的概率,第二维表示不同类的概率。
  2. 更新节点特征,用边的两个维度分别更新节点,产生两个特征:第一个特征为类内特征,第二个特征为类间特征,经过一个MLP得到更新后的特征。
  3. 更新边的特征,用一个卷积网络预测边的值,与前一层边的值融合,得到更新后的边的值
  4. 对边进行0,1分类(二值交叉熵loss),更新整个网络。

问题:方法与FEW-SHOT LEARNING WITH GRAPH NEURAL NETWORK’十分相近,最大的区别是对边进行分类。

  1. 对于few-shot来说,support set同时具有类间和类内的分布,如何可以更好的利用这两个信息?

 

基于生成分类器的方法(可以归纳到基于度量,分类器的权重可以看做更好的原型特征)

  • Meta-Learning with Differentiable Convex Optimization (oral)

motivation:最近邻分类的判别性较弱,对于少样本的分类任务可以利用机器学习学习一个线性分类器(岭回归算法;SVM算法)

方法:将最近邻分类器换成SVM,得到分类器的权重

问题:对于一个新的task,特征并不是线性可分的,是否用一个非线性的分类器会更好?

 

  • Generating ClassificationWeights with GNN Denoising Autoencoders fo Few-Shot Learning (oral)

motivation:利用去噪自编码器的思想,并考虑类间的关系,生成分类器的权重。

方法:

  1. 利用所有的训练数据预训练一个特征提取器,并得到所有训练分类层的权重w
  2. 构建few-shot task任务,随机采样得到base class和novel class;对于base class的分类器初始化为w,对于novel class的分类器初始化为特征均值;对于初始化的w加入高斯噪声,经过去噪自编码器,重构出w
  3. 利用下面的loss函数优化去噪自编码器。(重构损失和query的分类损失)
  4. 对于一个新的task,按照自编码器的原理,得到更新后的W。

问题:对去噪自编码器的那个公式不是很理解,为什么不直接用r(w)呢?

  1. 实验对于1-shot设为1,等价于用r(w);对于5-shot设为0.5,等价于 (r(w)+w)/2,比较直观。
  2. 去噪的思想提升大约1个点,图卷积的思想几乎没有提升

 

基于优化的方法 (几乎都是在MAML上进行改进)

  • Meta-Transfer Learning for Few-Shot Learning (CVPR19)

motivation:MAML系列的方法存在两个缺陷:1)训练需要大量的task才可以收敛;2)一般只适用于浅层的网络,无法泛化到深层网络上,在深层网络上容易过拟合。

方法:MAML只学习最后一层分类层(scale和shift的参数?)

  1. 首先用所有训练数据预训练一个特征提取器,固定特征提取器。
  2. 利用MAML的思想,初始化scale和shift的参数S1和S2为1和0,随机初始分类器W的参数;对于每个task利用support set优化W,得到新的W1,用得到的S1,S2,W1计算query set的loss,梯度更新S1,S2,W,得到新的S1,S2,W。
  3. 对于测试task,利用support set微调W,计算query的分类精度。(其中S1,S2为训练最终得到的S1,S2)。

问题:更新整个卷积参数十分困难,将卷积分解为固定的卷积核和自适应的卷积核权重是一种可行的解。

  1. 预训练的特征提取器已经适应了S1=1,S2=0,继续优化会改变S1和S2的参数吗?(底层S1,S2微小的改变就可以造成高层特征巨大的变化,那么预训练的特征提取器的作用在哪里?)
  2. S1和S2在训练过程中相当于迁移学习,测试时保持固定,为什么不与W保持一致,对于不同的task可以自适应学习。
  3. S1和S2在训练过程中修改有什么意义呢?最终还是一个固定的特征提取器。

 

  • LCC: Learning to Customize and Combine Neural Networks for Few-Shot Learning (CVPR19)

motivation:超参数设置十分重要,利用meta-learning对每一层学习一个超参数;一个learner通常不稳定,在MAML的机制上学习如何融合多个learner。

方法:MAML上学习如何整合多个base-learner,以及对每个learner每一层学习一个超参数设置。

  1. MAML内循坏更新初始参数多次,得到M(5)个base-learner
  2. MAML外循环优化初始参数,超参数,多个learner融合系数。其中测试集上的预测类别为多个base-learner预测值得加权求和,利用测试集的loss更新上述参数。

问题:在MAML的基础上学会如何融合多个base-learner的结果。

  1. 将内循坏更新过程中的base-learner进行融合,直观是有效的(前期的base-learner欠拟合,后期的base-learner过拟合)
  2. 整合多个base-learner对1-shot提点比较明显
  3. 论文写得很简单易懂,条理清晰。

 

数据增广的方法

  • Learning from Adversarial Features for Few-Shot Classification (特征增广)

motivation:few-shot的一个关键是如何得到一个泛化性好的特征提取器。分类网络通常提取的特征只关注最具有判别性的区域,而忽略了其他判别性较弱的区域,不利于网络的泛化。检测的一个工作是对提取的特征遮挡住关键部分的区域,迫使网络去关注其他不是特别具有判别性的区域。本文相当于把hard attention换成了soft attention。

方法:找到使图像分类不确定的soft mask M

  1. 对于输入的图像,提取特征,经过avgpool,分类得到entropy loss l
  2. l对M求梯度,得到使l最大的更新方向,更新M0得到新的mask Ma
  3. 将提取的特征与更新后的Mask相乘,得到对抗特征,分类得到分类loss l1
  4. 将初始特征再经过多个卷积,得到一维特征对其分类,得到分类loss l2
  5. 两个分类器共享参数,从而高层特征对底层特征具有一定的指导作用,优化网络。

问题:相当于一个检索任务,方法与few-shot关联不大

  1. 相当于在特征上做数据增广,从而得到一个更泛化的编码器。
  2. few-shot的两个关键问题:如何得到判别性的特征,如何分类

 

  • Image Deformation Meta-Networks for One-Shot Learning (图像增广)

motivation:few-shot中support set只含有少数样本,一个很直观的想法是做数据增广。是否可以利用训练集的图像对support set的图像进行插值,形成扩充的support set集合。

方法:在原型网络的基础上对support set进行扩充

  1. 从meta-train集合中每一类随机选择几个样本,形成一个gallery set G
  2. 对于一个task,提取support set的特征,形成最近邻分类器,对G所有图像分类,找到分类概率最高的N个图像,形成这个support (probe)image对应的gallery image
  3. 对于每对(probe,gallery)图像,生成一个9维的权重,将对应的图像加权得到扩充的图像,图像标签与probe保持一致
  4. 扩充的support set与query image产生最近邻分类loss,用来优化权重生成子网络
  5. 扩充的support set产生分类loss。优化编码网络。

问题:

  1. 每次迭代一个episode需要对所有gallery图像提取特征,训练时间是否过长。
  2. 为了使合成的图像与probe的标签一致,权重是否会趋向于1
  3. 性能提升可能来自:数据增广得到了更具有判别性的编码器,数据增广得到了更好的原型
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值