美文网首页
CVPR19-Few-shot

CVPR19-Few-shot

作者: vieo | 来源:发表于2020-04-07 15:43 被阅读0次

    CVPR19-Few-shot

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

    小样本学习:训练中可以使用各类样本,但是测试时,面对新的类别(通常为5类),每类只有极少量的标注样本,以及来自相同类别的查询图像。

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

    • 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优化网络

    相当于对每个query特征找到最相似的特征,再计算相似性。

    image image

    问题:利用局部相似性是对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图像提取特征,得到(KN, c, h, w),经过一个卷积层求得原型(K, c1, h1, w1),将所有类连接得到一个特征(Kc1, h1, w1),经过卷积得到一个channel attention(c1, h1, w1)(在channel通道上做attention)
    2. 将support特征和query特征经过一个卷积层,映射到(c1, h1, w1),与上述得到的attention相乘,得到更具有判别性的特征
    3. 对于更新后的特征做度量学习(matching net,protocol net,relation net)
    image

    问题: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),更新整个网络。
    image

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

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

    motivation:如何让模型同时学习到定位和分类?

    方法:对于support给定样本的前景框,提取前景和背景的特征,对于query,计算与前景特征和背景特征的距离,将其分类为前景或者背景,得到推理的query的前景attention map,得到query的前景和背景特征。

    问题:需要对于support set的前景标注框。

    • Variational Prototyping-Encoder: One-Shot Learning with Prototypical Images

    motivation:针对路标的小样本分类问题。对真实场景的路标进行分类,可以将图像化的路标图像作为原型?通过将真实场景的路标特征与图像化的路标特征比较,可以得到真实场景的路标特征。在已知原型的基础上,如何拉近query样本和原型特征的距离?

    方法:利用VAE将真实场景的图像生成原型图像,再将encoder作为特征提取器。

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

    • Meta-Learning with Differentiable Convex Optimization (oral)

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

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

    image

    问题:对于一个新的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。
    image image image

    问题:对去噪自编码器的那个公式不是很理解,为什么不直接用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)。
    image image

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

    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更新上述参数。
    image

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

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

    motivation:小样本学习容易过拟合与meta-train的task,如何保证学习到的初始化参数(MAMAL)对于所有task是无偏的?

    方法:对于一个分类任务,最大化初始参数在不同类别的熵,保证初始参数对于任务的不确定性;最小化不同任务的不平等度量。

    数据增广的方法:特征增广/图像增广

    特征增广

    • LaSO: Label-Set Operations networks for multi-label few-shot learning

    motivation:任务:多标签的小样本分类任务。对于两个多标签的图像,将其进行交/并/差可以得到新的图像和对应的类别,从而扩充了图像集合。

    方法:在特征层面上进行样本的扩充,对于两个样本特征F1和F2,经过三个网络(M-int;M-unit;M-sub),合成三个特征,利用合成的标签对其分类。并且利用三个特征的关系,利用重构损失,再对生成的特征进一步约束。

    • Few-shot Learning via Saliency-guided Hallucination of Samples

    motivation:能否利用前景图对task的support set进行增广,而不利用GAN?

    方法:对于task的support集合,分别提取每个样本的前景特征和背景特征,对于每一个样本,将其他样本的背景特征与其前景特征融合,生成一个新的样本特征。

    问题:需要预先训练好的前景分割网络

    • 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. 两个分类器共享参数,从而高层特征对底层特征具有一定的指导作用,优化网络。
    image

    问题:相当于一个检索任务,方法与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。优化编码网络。
    image

    问题:

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

    基于语义的方法:利用类别的语义信息

    • Large-Scale Few-Shot Learning: Knowledge Transfer With Class Hierarchy

    motivation:如何构建一个更通用的小样本识别框架,meta-train中有大量样本。能否构建source class和target class之间的语义关系?

    做法:利用类别的语义信息,构建类别的分级结构,把seen class和unseen class联系到一个超类中,将每个样本对不同层次的类别进行分类。比如seen class中包括老虎,unseen class中包括猫,类别层次将老虎和猫分到一个超类,通过将老虎进行学习,模型学习到了猫的一些特征。

    • TAFE-Net: Task-Aware Feature Embeddings for Low Shot Learning

    motivation:如何学到一个task自适应的编码?

    做法:根据task的描述(类别的语义描述)生成图像特征提取器的参数。将参数分解为固定的参数(k1,k2,c1,c2)和自适应的参数(1,1,1,c2)

    • Generalized Zero- and Few-Shot Learning via Aligned Variational Autoencoders

    motivation:对于zero-shot和few-shot任务来说,如何align图像特征分布和语义描述特征分布?

    做法:利用两个VAE,约束图像编码分布和语义编码分布的距离最小;约束图像编码可以生成语义编码,语义编码可以生成图像编码。(cross-modal reconstruction)

    物体识别之外(其他任务的小样本学习)

    • CANet: Class-Agnostic Segmentation Networks with Iterative Refinement and Attentive Few-Shot Learning (分割)

    motivation:问题:小样本的分割任务,给定少数的标注图像(图像和分割图),对未见类别进行分割。

    做法:利用dense comparison,对于标注图像提取分割类别的特征,对query图像计算相似性,得到分割图。

    • RepMet: Representative-based metric learning for classification and few-shot object detection(检测)

    motivation:问题:小样本检测任务,测试时检测的类别为未知类,将原来检测框架的分类层换成小样本分类的最近邻匹配层。

    做法:不同于原始的原型网络,对于每一类用多个原型特征表示一个多模式分布。

    相关文章

      网友评论

          本文标题:CVPR19-Few-shot

          本文链接:https://www.haomeiwen.com/subject/ovjnphtx.html