Few-Shot Learning with Global Class Representations笔记整理

本文探讨了Few-Shot Learning问题,提出了结合全局类表征和样本合成模块的方法来解决类别不平衡,通过注册模块优化模型,增强模型在小样本数据上的表现。实验表明,这种方法能有效提升小样本学习的准确性。

Few-Shot Learning with Global Class Representations笔记整理

1 Introduction

在小样本学习(Few-Shot Learning, FSL)问题上,对于base classes中的每个类别,我们往往有充足的训练数据;对于那些novel classes中的每个类别,我们只有少量的带标签的数据。FSL旨在利用base calsses中大量的数据,来学习出一个可以对novel classes中的数据标签准确辨别的模型。

注:base class和novel class是本文作者自己创造的词汇,我没有想到很好的翻译方法。在文章里,base class指拥有充足样本的类别(用于训练);novel class指的是那些只有少量样本的类(用于测试)。

现在解决小样本学习问题一般都使用元学习的方法,但是元学习的做法也有一定的局限性,因为它们往往只使用了源数据(source data),但是对于目标数据却几乎没有使用,即使在经历过fine-tuning阶段,也无法保证能学习到满足目标数据需求的模型。(比如,要辨别一个动物是不是猫,但现在手头上只有5张猫的照片以及大量狗,狮子,鸟的照片。这个时候元学习的一般做法是先在狗,狮子和鸟的照片上进行训练,训练好后再用5张猫的照片来进行微调。)

而作者在本文提出的方法同时使用5张猫(novel classes)的照片和大量狗,狮子,鸟(base classes)的照片来进行训练,作者把这称为全局表征(global class representations)。

因为将novel class在的少量数据和base class中的大量数据一起训练的话,势必会有样本不平衡的问题,作者使用两种方法来解决这一问题:

  • 合成novel class的新样本;
  • 引入片段训练(episodic training)。

2 Contributions

  1. 提出将base classes 和novel classes同时作为全局表征来进行小样本学习的训练;

3 Method

在这一节将首先介绍本方法的两个模块:表征注册模块和样本合成模块。然后再介绍如何将这两个模块合并起来,最后介绍如何将此方法拓展到生成式FSL的设定中(generalized FSL)。其中使用 f i = F ( x i ) f_i = F(x_i) fi=F(xi)表示一个样本 x i x_i xi经过特征抽取器F之后得到的视觉特征。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e7Hi5kRU-1587442757514)(Few-Shot%20Learning%20with%20Global%20Class%20Representations%E7%AC%94%E8%AE%B0%E6%95%B4%E7%90%86.assets/image-20200420140026928.png)]

Overview of the whole framework.

3.1 样本合成模块

本模块用于解决类别不平衡问题,共分为两步:第一步用原始样本生成新的样本,第二步用第一步获取的所有样本合成一个新样本。

首先对novel classes在的原始样本使用random cropping, random fipping和data hallucination操作(这三个方法出自论文:Low-shot learning from imaginary data.)来为每个novel class生成 k t k_t kt个样本。

对于一个novel class c j c_j cj,作者先从中随机挑选出 k r k_r kr个样本,具体操作如下:
k r ^ ∼ U ( 0 , k t ) , k r = ⌈ k r ^ ⌉ \hat{k_r} \sim U(0,k_t),\\ k_r = \lceil \hat{k_r} \rceil kr^U(0,kt),kr=kr^
其中, U ( a , b ) U(a,b) U(a,b)是平均分布。

对于一个novel class,再从 0 ∼ 1 0 \sim 1 01平均分布中选出 k r k_r kr个值 { v 1 , . . . , v k r } \{ v_1,...,v_{k_r}\} { v1,...,vkr},将这

广义少样本语义分割是少样本学习在语义分割领域的应用,旨在利用少量标注样本实现对图像中不同语义类别的分割。 Kang等人在2021年的研究“Relational embedding for few-shot classification”可能为广义少样本语义分割提供了相关的嵌入方法,有助于提升少样本情况下的分类性能,从而可能应用于语义分割任务中,为分割不同语义类别提供更有效的特征表示[^1]。 有论文针对半监督语义分割提出简单基线方法,结合强数据增强,虽然未明确提及广义少样本,但半监督和少样本学习在数据利用上有一定关联,可能为广义少样本语义分割提供数据利用和增强方面的思路[^2]。 对于Few-Shot Segmentation,有研究提出Prior Guided Feature Enrichment Network(PFENet),零样本学习是少样本学习的极端例子,该研究在极端情况下对模型进行修改验证其鲁棒性,在未见类上实现了一定的mIoU,其对模型结构的调整和处理空间不一致性的方法,或许能为广义少样本语义分割在模型设计和性能提升上提供借鉴[^3]。 还有研究提出Prototype Mixture Models(PMMs),使用多个prototype对应不同的image regions,提高语义表征能力,能有效激活前景信息并抑制背景区域,这种模型既可以作为representations,也可以作为classifier,在广义少样本语义分割中可能有助于更准确地分割出不同语义区域[^4]。 在CVPR 2019的研究“Semantic Projection Network for Zero - and Few - Label Semantic Segmentation”中涉及到了相关的GZSL结果,可能在广义少样本语义分割的性能评估等方面提供了一定的参考[^5]。 ### 代码示例 由于未明确具体实现,以下是一个简单的伪代码示例,用于概念性地表示广义少样本语义分割可能涉及的步骤: ```python # 假设这是一个广义少样本语义分割的伪代码框架 def generalized_few_shot_semantic_segmentation(query_image, support_images, support_labels): # 特征提取 query_features = feature_extractor(query_image) support_features = feature_extractor(support_images) # 利用PMMs等模型进行处理 pmm = PrototypeMixtureModels() prototypes = pmm.estimate_prototypes(support_features, support_labels) # 进行分割预测 segmentation_result = pmm.predict(query_features, prototypes) return segmentation_result ```
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值