[ICCV 2019] Few-Shot Learning with Global Class Representations

在这里插入图片描述
简单描述一下方法的流程,虽然我觉得论文摘要说得还挺清楚的:
首先利用base类和novel类的样本初始化所有类的均值。以5-way 1-shot问题为例,meta-train的阶段,每一个episode,我们都可以计算这5个类的episode类中心,然后将所有类的全局类中心和5个episode类中心都输入到注册模块,得到这5个类的注册后的类中心。然后,将query set的样本和注册后的5个类中心计算相似度,得到loss更新网络。经过不断地训练来更新所有类的全局类中心。在meta-test阶段,输入support set的样本,得到5个注册后的全局类中心,用这个类中心对query set中的样本进行分类,得到最终的精度。

论文地址
code

问题清单

思考从问题出发。昨天老师说,有一个思路是先接受,再去找漏洞。

  1. D \mathcal D Dmeta-train D \mathcal D Dmeta-test是如何构建的?
    参考4.2.1第一段的倒数第二句,few learning在构建时分两步:
    1) 类别拆分:比如miniImageNet默认是训练/验证/测试:64/16/20。
       D \mathcal D Dmeta-train由64+20类组成,64×600+20×nfew个样本;
       D \mathcal D Dmeta-test由20类组成,20×600。[见3.3第一段]
       此时,初始化每个类的类别表示。
    2) 任务采样:
      meta-training阶段:
        1) 采样类别,从84个类中采样5个类
        2) 采样样本,novel类数据合成,由nfew个样本得到ns+nq个样本;
        采样n个任务训练meta-learner;
      meta-testing阶段,从 D \mathcal D Dmeta-test采样600次任务计算模型性能。

  2. 全局类表示的初始化是在数据增强之前还是之后?
    之前,见[见3.3第一段]。

  3. 全局类表示在训练时,是如何更新的?
    数据构建好之后,用特征均值初始化每个类的全局类表示。

  4. 在meat-training阶段,模型见过多少novel类的样本?
    每个novel类只见过 n f e w n_few nfew个样本。

  5. 在meta-test阶段,episode的support set如何采样?
    support set用训练集中的ntest个类别的nfew个样本。
    [见3.3 第2段] We use the labeled images of the ntest novel classes in the training set as the support set (i.e., the few shots).
    问题:类别采样充分,样本采样不充分,不能测试出meta-learner的泛化性!

  6. 这个方法的局限性:不能处理增量模式。训练阶段模型需要知道novel类的样本。

  7. Algorithm 1下面第二段Finally开头,用选定的全局类中心可以识别novel类样本。但是,这个过程不可微?怎么理解?



motivation

在fsl中,基于元学习的方法存在一个缺陷:这些模型是在源数据( D m e t a − t r a i n D_{meta-train} Dmetatrain)上学到的。不能够保证模型能够很好地泛化到目标数据( D m e t a − t r a i n D_{meta-train} Dmetatrain)上。因此,论文将novel类的support样本也引入到训练过程当中。由于novel类的support set中样本很少,所以论文提出一种样本合成方案来弥补新类样本不足的问题。
论文有两个重要模块:

  1. 注册模块:学习全局类别标识(用base类和novel类的训练样本)
  2. 合成模块:novel类样本合成

以下是论文所要达到的效果:
在这里插入图片描述


method

在这里插入图片描述

Registration Module 注册模块

计算样本特征和类别全局表示的相似性分数:
在这里插入图片描述
注册模块的loss
在这里插入图片描述

Sample Synthesis Module 样本合成模块

真实图片通过裁剪、翻转和幻想技术,一共得到 k t k_t kt张图片。采样 k r k_r kr张( k r k_r kr采样自[0, k t k_t kt]分布并向上取整),从对应的特征表示集合 f 1 , . . , f k r {f_1, .., f_{k_r}} f1,..,fkr的子空间合成一个新的样本 r c j r_{c_j} rcj( c j c_j cj类)。具体做法如下:
在这里插入图片描述
从[0,1]均匀分布中采样 k r k_r kr个数 { ν 1 , … , ν k r } \{ \nu_1, \dots, \nu_{k_r} \} {ν1,,νkr},然后对 k r k_r kr个特征加权平均得到新的样本 r c j r_{c_j} rcj

Few Shot Learning By Registration通过注册实现小样本学习

在这里插入图片描述
流程如下:

  1. 初始化类别表示:取每类的所有样本视觉特征的平均值作为初始化类别表示;(模型的目的就是基于该初始化学习novel类的全局类别表示);

  2. each training iteration,一个episode/mini-batch通过以下三个步骤获得:
    1)从所有类别 C t o t a l = C b a s e + C n o v e l C_{total}=C_{base}+C_{novel} Ctotal=Cbase+Cnovel中采样 n t r a i n n_{train} ntrain个类作为 C t r a i n C_{train} Ctrain
    2)从training set里为 C t r a i n C_{train} Ctrain中的每个类随机选取 n s n_s ns个样本组成support set S = { ( x i , y i ) , i = 1 , … , n s × n t r a i n } S=\{(x_i, y_i), i=1,\dots,n_s \times n_{train} \} S={(xi,yi),i=1,,ns×ntrain};
    3) 从training set里为 C t r a i n C_{train} Ctrain中的每个类选取 n q n_q nq个样本组成query set Q = { ( x k , y k ) , k = 1 , … , n q × n t r a i n } Q = \{ (x_k, y_k), k=1,\dots,n_q \times n_{train} \} Q={(xk,yk),k=1,,nq×ntrain}
    注意: 每个novel类只有 n f e w n_{few} nfew个标注样本,所以先增广到 n s + n q n_s+n_q ns+nq个样本。

  3. each testing iteration, 一个episode和training episode在三个方面不同:
    1)从novel类别集合 C n o v e l C_{novel} Cnovel中采样 n t e s t n_{test} ntest个类作为 C t e s t C_{test} Ctest;
    2)从training set里为 C t e s t C_{test} Ctest中的每个类选取 n f e w n_{few} nfew个样本组成support set S = { ( x i , y i ) , i = 1 , … , n f e w × n t e s t } S=\{(x_i, y_i), i=1,\dots,n_{few} \times n_{test} \} S={(xi,yi),i=1,,nfew×ntest};
    3)从 D t e s t D_{test} Dtest里选取query set。

训练阶段:
得到每个类的局部类别表示,计算注册损失:
在这里插入图片描述
V i = [ v i 1 , . . . , v i N ] T V_i = [v_i^1, ..., v_i^N]^T Vi=[vi1,...,viN]T表示局部类别表示和全局类别表示的相似度分数,过一个softmax得到,概率分布 P i = [ p i 1 , . . . , p i N ] T P_i = [p_i^1, ..., p_i^N]^T Pi=[pi1,...,piN]T,利用加权求和得到support set中所有类别的估计类别表示,即, ξ i = P i G ξ_i = P_iG ξi=PiG,根据得到的“全局类别表示”计算query set上的分类损失:
在这里插入图片描述
训练阶段的总loss如下:
在这里插入图片描述

测试阶段:
测试阶段,先将support set中的样本输入到特征提取网络得到所有样本的特征,然后计算每个类的局部类别表示,将这些局部类别表示和全局类别表示输入到注册模块,得到估计的全局类别表示。用 ξ i ξ_i ξi进行分类。


experiment

FSL精度

在这里插入图片描述

GFSL

在这里插入图片描述

消融实验

在这里插入图片描述
B  - 视觉特征均值作为类别表示
S1 - 用真实样本生成新样本
S2 - 用S1中的样本生成一个新的样本
R  - 注册模块

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值