小样本图像识别——关系网络(Relation Network)(目前只对Few-Shot进行研究)

关系网络

1.论文参考:

《Learning to Compare Relation Network for Few-Shot Learning》论文原文请点击这里
参考代码:https://github.com/floodsung/LearningToCompare_FSL/

2.问题定义:

  首先需要了解三个数据集,training set,support set和testing set。support set和testing set共享相同的标签空间,而training set有自己的标签空间并且和support/testing set不相交。如果支持集包含C个类,每个类中有K个带有标签的样本,该few-shot问题被称为C-way K-shot。
  若只使用支持集,我们原则上可以训练一个分类器,为测试集的每个样本x分配一个类标签。但是,由于在支持集中缺乏标签样本,上述分类器识别效果较差。因此,我们的目标是在训练集上进行元学习,以便提取可转移的知识,使我们能够在支持集上进行更好few-shot学习,从而更成功地对测试集进行分类。
  利用训练集的一种有效方法是通过基于情景的训练来模拟few-shot学习。在每个训练迭代中,一个情景通过在训练集中随机选择C类,每个类中有K个标签样本来形成样本集


在这里插入图片描述
  以及作为查询集 ,是C类样本的剩余部分组成。此S和Q划分的目的是模拟测试时候的support和test集合。(即将训练集training set划分为sample set和query set来模拟support set和test set)。

3.模型

One-shot:关系网络(Relation Network)有两个模块组成。一个是embedding模块 (特征映射),一个是relation模块 。如果是C-way one-shot,则有C个关系分数


小样本图像识别——关系网络(Relation Network)(目前只对Few-Shot进行研究)_第1张图片
小样本图像识别——关系网络(Relation Network)(目前只对Few-Shot进行研究)_第2张图片

方框里的描述与上图一一对应。

K-shot:对每个训练类的所有样本的Embedding模块输出进行逐元素求和,这个合并的类级特征映射与上面的查询图像特征映射相结合。
Objective function:使用均方误差MSE作为损失函数,将关系分数rij回归到ground truth:匹配的相似性为1,不匹配的相似性为0。
Zero-shot:每个训练类中使用语义嵌入向量代替one shot数据集作为支持集。模型结构中除了用于查询集的嵌入模块f1,还使用了第二个异构模块f2用于处理语义嵌入向量。

4.网络结构

  Embedding利用4个卷积块实现。每个卷积块包含64个filter大小为33,使用batch normalization和ReLU激活函数。前两个block包含22的max pooling操作,后两个block不需要。目的是需要在关系模块中为进一步的卷积层提供输出特征映射。
  Relation模块由两个卷积块和两个全连接层组成,每一个卷积块是64个filter大小为33,使用batch normalization,ReLU激活函数,22的max pooling。最后一个max pooling层输出大小在Omniglot中为64,在miniImageNet中为6433=576。这两个全连接层分别是8和1。所有全连接层的激活函数为ReLU,除了最后一层全连接层是Sigmoid(目的是生成合理的关系分数范围)。
  Few-shot:Adam学习率设置为10-3,每100,000个情景后折半,端到端训练,没有额外的数据集。
  训练时的数据是Omniglot,通过对原始数据旋转90°,180°,270°来增加新类,选择1200类并通过旋转作为训练集,423类通过旋转作为测试集。并将大小resize为28*28。

5.运行结果

正在运行…

你可能感兴趣的:(小样本图像识别)