Few Shot Incremental Learning with Continually Evolved Classifiers论文详解 基于持续进化分类器的小样本类别增量学习CVPR2021

本文提出一种小样本类别增量学习方法,结合图注意力网络(GAT),仅更新分类器,保持特征提取器不变,并引入伪增量学习提高准确性。

Few Shot Incremental Learning with Continually Evolved Classifiers

 

CVPR2021,由新加坡南洋理工大学

本文利用Graph即图模型,将拓扑结构与增量模型向结合,从而取得不错的效果。

类似论文,均是基于双阶段的增量模型,一个是特征提取模块,另一个是分类器模块。

对于Rehearsal的方法而言,特征提取模块可能一起更新。

对于本文的方法而言,特征提取模块一旦初始训练好,就固定下来,只更新分类器模块。本文的分类器模块与GAT(Graph Attention Network)相结合。

基于拓扑结构的增量学习:

CVPR2020 ,FSCIL Few-shot Class Incremental Learning。将NG网络运用到增量学习之中。

FSCIL论文详解 Few-Shot Class-Incremental Learning, CVPR2020_祥瑞的技术博客-CSDN博客

ECCV2020,TPCIL,本篇,Topology Preserving Class-Incremental learning,同样的框架,即CNN+拓扑结构,部分内容换了一个写法。

基于拓扑的增量学习Topology Preserving Class-Incremental learning论文详解ECCV2020_祥瑞的技术博客-CSDN博客

CVPR2021与本篇非常类似,Few-Shot Incremental Learning with Continually Evolved Classifiers,南洋理工大学提出,也是运用Graph的知识,将GAT(Graph Attention Network)用于增量学习。

Few Shot Incremental Learning with Continually Evolved Classifiers论文详解 基于持续进化分类器的小样本类别增量学习CVPR2021_祥瑞的技术博客-CSDN博客

本文地址:

[2104.03047] Few-Shot Incremental Learning with Continually Evolved Classifiers (arxiv.org)

另一篇论文地址:

[2103.16788] DER: Dynamically Expandable Representation for Class Incremental Learning (arxiv.org)

 

目录

1.贡献点

2. 方法

2.1 模型框架

2.1 CEC(continually evolved classifier)

2.2 算法流程

2.3 Pseudo Incremental Learning

3.实验

3.1 可视化

3.2 方法对比

4.总结


1.贡献点

本文依然解决Few-shot class incremental learning(FSCIL)问题,从两个方面来进行解决:

特征提取模块与分类器解耦,每次增量任务只更新分类器。特征提取模块是pretrain好的backbone, 分类器是non-parameter的class mean classifier(个人猜测类似于NCM)

为了使得分类器适用于所有类别,本文提出Continually Evolved Classifier (CEC),将graph模型应用于分类器。

多个数据集上SOTA

 

 

2. 方法

2.1 模型框架

对FSCIL问题,base数据大量,inc数据较少,因此用base数据训练backbone即可。用calssfier来试应增量任务的变化。

即使对旧任务,学到了很好的分类边界,但是因为新任务的到来,旧模型的决策边界可能不好用了。因此本文引入新的Continually Evolved Classifier (CEC)来进行适应。将Graph Attention Network(GAT,ICML2018)图注意力模型。引入到此模型之中。从而实现了

 

先用base数据D0train训练获得backbone R的权重,

然后利用base数据作为伪增量,训练Graph模型获得权重{ W0},

随着增量任务的到来,Graph模型的节点和权重随之增加,权重增加为{ W0,W1},再增加到{ W0,W1,…,Wi}

 

2.1 CEC(continually evolved classifier)

复现《Learning with Fantasy: Semantic-Aware Virtual Contrastive Constraint for Few-Shot Class-Incremental Learning》这篇论文可按以下步骤进行: ### 1. 准备工作 - **获取代码**:该论文的代码地址为https://github.com/zysong0113/SAVC ,可从该地址下载代码到本地 [^2]。 - **明确任务**:论文主要解决少样本类增量学习Few-shot class-incremental learning,FSCIL)问题,即在有限样本下持续学习新类别且不遗忘旧类别的分类任务 [^3]。 ### 2. 数据处理 - **初始数据处理**:利用初始样本充足的训练数据训练特征提取器。对初始训练样本进行数据增强(增强次数和顺序确定)以扩充初始数据集。例如,可采用特定的图像旋转、翻转等操作,且后续所有增强都按此方式进行 [^4]。 - **增量数据处理**:计算增量训练数据(少样本)中新增类别的原型,通过数据增强和特征提取后得到特征的均值来确定 [^4]。 ### 3. 模型训练 - **特征提取器训练**:采用MoCo的学习策略构建对比损失,结合标准交叉熵分类损失更新模型。扩充版的初始训练数据集经训练好的特征提取器(训练好后冻结)输出特征,并据此计算各初始类别不同增强方式下的原型(特征均值) [^4]。 - **联合优化**:论文采用分类对比任务联合优化框架,同时还涉及每个增量会话的微调更新 [^2]。 ### 4. 模型测试 - **相似度计算与分类**:对测试样本进行数据增强,将增强后的测试样本输入特征提取器得到特征,并对测试特征和所有原型进行标准化。计算测试特征与各原型的平均相似度,将测试样本分类为平均相似度最高的类 [^4]。 ### 代码示例 由于不清楚代码仓库中的具体实现,以下是一个简单示意代码说明数据增强和原型计算的过程: ```python import torch import torchvision.transforms as transforms # 数据增强示例 transform = transforms.Compose([ transforms.RandomRotation(10), transforms.RandomHorizontalFlip() ]) # 假设初始训练数据 initial_data = torch.randn(100, 3, 32, 32) # 100个样本,3通道,32x32图像 augmented_data = [] for sample in initial_data: augmented_sample = transform(sample) augmented_data.append(augmented_sample) augmented_data = torch.stack(augmented_data) # 计算原型示例 def calculate_prototype(data): return torch.mean(data, dim=0) prototype = calculate_prototype(augmented_data) ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

祥瑞Coding

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值