新闻中心

FRN——小样本学习SOTA模型

2025-07-22
浏览次数:
返回列表
本文介绍CVPR2025论文提出的小样本学习模型FRN,其将分类问题归为特征重构问题,以闭合解形式从支持样本回归查询样本特征,性能与效率更优。文中展示了基于PaddlePaddle复现的FRN在mini-ImageNet上的精度,还介绍了数据集、环境依赖、快速开始步骤、代码结构及模型信息等内容。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

frn——小样本学习sota模型 -

FRN——小样本学习SOTA模型

一、论文概述

论文Few-Shot Classification with Feature Map Reconstruction Networks是顶会CVPR2025上发表的一种小样本学习经典方法。该方法在小样本学习的benchmark上依然具有最佳的性能指标,是该领域的重要方法。

FRN将小样本分类问题归结为潜在空间中的特征重构问题。作者认为,通过支持样本重构查询样本特征的能力,决定了查询样本的所属类别。作者在小样本学习中引入了一种新的机制,以闭合解的形式从支持样本特征直接向查询样本特征做回归,无需引入新的模块或者大规模的训练参数。上述方法得到的模型(FRN),相比先前的其他方法,无论在计算效率上还是性能表现上都更有优势。FRN在四个细粒度数据集上展现出实质性提升。在通用的粗粒度数据集mini-ImageNet和tiered-ImageNet上,也达到了SOTA指标。

下图展示了FRN的基本工作流程。

FRN——小样本学习SOTA模型 -        

二、复现精度

基于paddlepaddle深度学习框架,对文献算法进行复现后,本项目在mini-ImageNet上达到的测试精度,如下表所示。

task 本项目精度 参考文献精度
5-Way 1-Shot
66.45+-0.19
5-Way 5-Shot
82.83+-0.13

模型训练包括了两个过程,首先是模型预训练,按照典型分类网络的训练过程,将整个训练集送入backbone进行训练;然后是微调过程,按照episode training的训练范式,配置为20-Way 5-Shot方式进行微调训练。这两个训练过程的训练超参数设置如下:

(1)预训练过程

超参数名 设置值
lr 0.1
gamma 0.1
epoch 350
milestones 200 300
batch_size 512

(2)微调训练过程

超参数名 设置值
lr 1e-3
gamma 0.1
epoch 150
train_n_episode 1000
milestones 70 120
train_n_way 20
n_shot 5

三、数据集

miniImageNet数据集节选自ImageNet数据集。 DeepMind团队首次将miniImageNet数据集用于小样本学习研究,从此miniImageNet成为了元学习和小样本领域的基准数据集。 关于该数据集的介绍可以参考https://blog.csdn.net/wangkaidehao/article/details/105531837

miniImageNet是由Oriol Vinyals等在Matching Networks 中首次提出的,该文献是小样本分类任务的开山制作,也是本次复现论文关于该数据集的参考文献。在Matching Networks中, 作者提出对ImageNet中的类别和样本进行抽取(参见其Appendix B),形成了一个数据子集,将其命名为miniImageNet。 划分方法,作者仅给出了一个文本文件进行说明。 Vinyals在文中指明了miniImageNet图片尺寸为84x84。因此,后续小样本领域的研究者,均是基于原始图像,在代码中进行预处理, 将图像缩放到84x84的规格。

至于如何缩放到84x84,本领域研究者各有各的方法,通常与研究者的个人理解相关,但一般对实验结果影响不大。本次文献论文原文,未能给出 miniImageNet的具体实现方法,本项目即参考领域内较为通用的预处理方法进行处理。

  • 数据集大小:
    • miniImageNet包含100类共60000张彩色图片,其中每类有600个样本。 mini-imagenet一共有2.86GB
  • 数据格式:
|- miniImagenet|  |- images/|  |  |- n0153282900000005.jpg 
|  |  |- n0153282900000006.jpg|  |  |- …|  |- train.csv|  |- test.csv|  |- val.csv
       

数据集链接:miniImagenet

四、环境依赖

  • 硬件:

    • x86 cpu
    • NVIDIA GPU
  • 框架:

    • PaddlePaddle = 2.4
  • 其他依赖项:

    玻璃钢企业网站源码1.5 玻璃钢企业网站源码1.5

    本程序源码为asp与acc编写,并没有花哨的界面与繁琐的功能,维护简单方便,只要你有一些点点asp的基础,二次开发易如反掌。 1.功能包括产品,新闻,留言簿,招聘,下载,...是大部分中小型的企业建站的首选。本程序是免费开源,只为大家学习之用。如果用于商业,版权问题概不负责。1.采用asp+access更加适合中小企业的网站模式。 2.网站页面div+css兼容目前所有主流浏览器,ie6+,Ch

    玻璃钢企业网站源码1.5 1 查看详情 玻璃钢企业网站源码1.5
    • numpy==1.19.3
    • tqdm==4.59.0
    • Pillow==8.3.1

五、快速开始

1、解压数据集和源代码:

!unzip -n -d ./data/ ./data/data105646/mini-imagenet-sxc.zip

In [ ]
%cd /home/aistudio/
!unzip -n -d ./data/ ./data/data105646/mini-imagenet-sxc.zip
    In [ ]
%cd /home/aistudio/work/
!unzip -o frn.zip
    In [ ]
# 生成json文件!cp write_miniImagenet_filelist.py /home/aistudio/data/mini-imagenet-sxc/
%cd /home/aistudio/data/mini-imagenet-sxc/
!python write_miniImagenet_filelist.py
   

2、执行以下命令启动预训练:

python pretrain.py --dataset mini_imagenet --data_path /home/aistudio/data/mini-imagenet-sxc --method stl_frn --lr 1e-1 --gamma 1e-1 --epoch 350 --milestones 200 300 --batch_size 512 --val_n_episode 600 --image_size 84 --model ResNet12 --n_shot 1 --n_query 15 --gpu
       

模型开始训练,运行完毕后,训练log和模型参数保存在./checkpoints/mini_imagenet/ResNet12_stl_frn_pretrain/目录下,分别是:

best_model.pdparams  # 最优模型参数文件output.log  # 训练LOG信息
       

训练完成后,可将上述文件手动保存到其他目录下,避免被后续训练操作覆盖。

In [ ]
%cd /home/aistudio/work
!python pretrain.py --dataset mini_imagenet --data_path /home/aistudio/data/mini-imagenet-sxc --method stl_frn --lr 1e-1 --gamma 1e-1 --epoch 350 --milestones 200 300 --batch_size 512 --val_n_episode 600 --image_size 84 --model ResNet12 --n_shot 1 --n_query 15   --gpu
   

3、执行以下命令启动微调训练:

python meta_train.py --dataset mini_imagenet --data_path /home/aistudio/data/mini-imagenet-sxc --method meta_frn --lr 1e-3 --gamma 1e-1 --epoch 150 --train_n_episode 1000 --val_n_episode 600 --milestones 70 120 --image_size 84 --model ResNet12 --train_n_way 20 --val_n_way 5 --n_shot 5 --n_query 15 --gpu --pretrain_path ./checkpoints/mini_imagenet/ResNet12_stl_frn_pretrain/best_model.pdparams
       

模型开始训练,运行完毕后,训练log和模型参数保存在./checkpoints/mini_imagenet/ResNet12_meta_frn_20way_5shot_metatrain/目录下,分别是:

best_model.pdparams  # 最优模型参数文件output.log  # 训练LOG信息
       

训练完成后,可将上述文件手动保存到其他目录下,避免被后续训练操作覆盖。

In [ ]
%cd /home/aistudio/work
!python meta_train.py --dataset mini_imagenet --data_path /home/aistudio/data/mini-imagenet-sxc --method meta_frn --lr 1e-3 --gamma 1e-1 --epoch 150 --train_n_episode 1000 --val_n_episode 600 --milestones 70 120 --image_size 84 --model ResNet12 --train_n_way 20 --val_n_way 5 --n_shot 5 --n_query 15 --gpu --pretrain_path ./checkpoints/mini_imagenet/ResNet12_stl_frn_pretrain/best_model.pdparams
   

4、执行以下命令进行评估

python test.py --dataset mini_imagenet --data_path /home/aistudio/data/mini-imagenet-sxc --model ResNet12 --method meta_frn --image_size 84 --gpu --n_shot 1 --model_path ./checkpoints/mini_imagenet/ResNet12_meta_frn_20way_5shot_metatrain/best_model.pdparams --test_task_nums 1 --test_n_episode 600
       

用于评估模型在小样本任务下的精度。

In [ ]
# 5-Way 1-Shot评估%cd /home/aistudio/work
!python test.py --dataset mini_imagenet --data_path /home/aistudio/data/mini-imagenet-sxc --model ResNet12 --method meta_frn --image_size 84 --gpu --n_shot 1 --model_path ./checkpoints/mini_imagenet/ResNet12_meta_frn_20way_5shot_metatrain/best_model.pdparams --test_task_nums 1 --test_n_episode 600
    In [ ]
# 5-Way 5-Shot评估%cd /home/aistudio/work
!python test.py --dataset mini_imagenet --data_path /home/aistudio/data/mini-imagenet-sxc --model ResNet12 --method meta_frn --image_size 84 --gpu --n_shot 5 --model_path ./checkpoints/mini_imagenet/ResNet12_meta_frn_20way_5shot_metatrain/best_model.pdparams --test_task_nums 1 --test_n_episode 600
   

六、代码结构与详细说明

6.1 代码结构

├── data                               # 数据处理相关│   ├── datamgr.py                       # data manager模块│   ├── dataset.py                       # data set模块├── methods                             # 模型相关│   ├── FRN.py                          # FRN核心算法├── network                             # backbone│   ├── conv.py                         # Conv-4和Conv-6代码实现│   ├── resnet.py                        # ResNet-12代码实现├── scripts                             # 运行工程脚本│   ├── mini_imagenet                     
│   │   ├── run_frn                     
│   │   │   ├── run_frn_metatrain.sh         # 运行微调训练│   │   │   ├── run_frn_pretrain.sh          # 运行预训练│   │   │   ├── run_frn_test.sh            # 运行测试├── meta_train.py                         # 微调训练代码├── pretrain.py                          # 预训练代码├── test.py                             # 测试代码├── utils.py                            # 公共调用函数├── wirite_miniImagenet_filelist.py             # 生成mini-ImageNet数据json文件
   

6.2 参数说明

可以在 pretrain.py 中设置训练与评估相关参数,具体如下:

参数 默认值 说明
----batch_size 128 batch size
--lr 0.05 初始学习率
--wd 5e-4 weight decay超参
--gamma 0.1 lr_scheduler衰减系数
--milestones 80, 120 达到相应epoch后,lr_scheduler开始衰减
--epoch 150 遍历数据集的迭代轮数
--gpu True 是否使用GPU进行训练
--dataset mini_imagenet 指定训练数据集
--data_path '' 指定数据集的路径
--model ResNet-12 指定采用的backbone
--val meta 指定验证方式
--train_n_way 20 小样本训练类别数
--val_n_episode 600 验证时测试多少个episode
--val_n_way 5 小样本验证类别数
--n_shot 1 给定支持样本的个数
--n_query 15 指定查询样本的个数
--num_classes 64 指定base set类别总数
--s*e_freq 50 指定每隔多少个epoch保存一次模型参数
--seed 0 指定随机数种子
--resume '' 指定恢复训练时加载的中间参数文件路径

6.3 训练流程

可参考快速开始章节中的描述

训练输出

执行训练开始后,将得到类似如下的输出。每一轮epoch训练将会打印当前training loss、training acc、val loss、val acc以及训练kl散度。

Epoch 0 | Batch 0/150 | Loss 4.158544
best model! s*e...
val loss is 0.00, val acc is 37.46
model best acc is 37.46, best acc epoch is 0
This epoch use 7.61 minutes
train loss is 3.72, train acc is 10.84
Epoch 1 | Batch 0/150 | Loss 3.052964
val loss is 0.00, val acc is 37.46
model best acc is 37.46, best acc epoch is 0
This epoch use 3.73 minutes
train loss is 2.96, train acc is 25.28
Epoch 2 | Batch 0/150 | Loss 2.588413
val loss is 0.00, val acc is 37.46
model best acc is 37.46, best acc epoch is 0
This epoch use 3.71 minutes
train loss is 2.59, train acc is 33.27
...
   

6.4 测试流程

可参考快速开始章节中的描述

此时的输出为:

<br/>
   

八、模型信息

训练完成后,模型和相关LOG保存在./results/5w1s和./results/5w5s目录下。

训练和测试日志保存在results目录下。

信息 说明
发布者 hrdwsong
时间 2025.03
框架版本 Paddle 2.4
应用场景 小样本学习
支持硬件 GPU、CPU
Aistudio地址 https://aistudio.baidu.com/aistudio/projectdetail/5723600?contributionType=1&sUid=527829&shared=1&ts=1678943299939

以上就是FRN——小样本学习SOTA模型的详细内容,更多请关注其它相关文章!


# python  # ai  # 小学生作文网站建设  # 长乐抖音关键词排名获客  # 肥东网站建设中心招聘  # seo逆向思维的方法  # 淘宝网上怎么做营销推广  # 呼伦贝尔网站优化  # bt网站建设  # 校园网站建设个人总结  # 网站建设哪家好公司  # 多少个  # 官网  # 最优  # 完成后  # 可将  # 中文网  # 企业网站  # 目录下  # 一言  # 重构  # type  # udio  # red  # 青海网站建设路 


相关栏目: 【 行业资讯67740 】 【 技术百科0 】 【 网络运营39195


相关推荐: j*a怎么保存到数组  如何在命令行执行存储过程  a股等权市盈率中位数是什么意思  linux下如何重定位命令  ssd固态硬盘如何选择  ai文件在线打开工具有哪些  如何在命令提示符播放音频  ka是什么意思  如何以管理员身份打开cmd命令行窗口  苹果16系统有哪些问题  j*a数组逆序怎么写  单片机速度怎么看  夸克是什么用途  苹果怎么没出5g手机  对象数组怎么用j*a  问一下市盈率是什么意思  typescript入门要多久  夸克解压什么意思  手机拍显示屏有条纹怎么去除  光刻机的作用及工作原理  汽车排量是什么意思  公司的tm市盈率为负是什么意思  输入命令如何换行  路由器上的power按钮是什么意思  空调主板单片机怎么拆开  夸克用的什么服务器  笔记本如何使用固态硬盘  开机如何进入命令行模式  苹果16粉色还有哪些机型  华为的nfc功能是什么意思  单片机是怎么复位的  三星固态硬盘如何保修  单片机*计步器怎么用  awk命令如何对两列加分隔符  1tb等于多少mb  阿里云盘共享账户怎么用  苹果16都有哪些亮点  春运哪天抢票最好预约  苹果16适合哪些机升级  折叠屏手机哪款最好  一分钟等于多少秒  固态硬盘如何备份  夸克为什么会变小  单片机蜂鸣器响了怎么停  shell如何执行sql脚本命令行  记录仪power灯亮是什么意思  如何通过命令系统还原  ip dhcp是什么意思  怎么在typescript定义集合  什么是unix时间戳 

搜索