首页 游戏 软件 资讯 排行榜 专题
首页
AI资讯
FRN——小样本学习SOTA模型

FRN——小样本学习SOTA模型

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

frn——小样本学习sota模型 - 游乐网

FRN——小样本学习SOTA模型

一、论文概述

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

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

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

FRN——小样本学习SOTA模型 - 游乐网        

二、复现精度

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

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

(1)预训练过程

(2)微调训练过程

三、数据集

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.webp |  |  |- n0153282900000006.webp|  |  |- …|  |- train.csv|  |- test.csv|  |- val.csv
登录后复制        

数据集链接:miniImagenet

四、环境依赖

硬件:

x86 cpuNVIDIA GPU

框架:

PaddlePaddle = 2.4

其他依赖项:

numpy==1.19.3tqdm==4.59.0Pillow==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 中设置训练与评估相关参数,具体如下:

6.3 训练流程

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

训练输出

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

Epoch 0 | Batch 0/150 | Loss 4.158544best model! save...val loss is 0.00, val acc is 37.46model best acc is 37.46, best acc epoch is 0This epoch use 7.61 minutestrain loss is 3.72, train acc is 10.84Epoch 1 | Batch 0/150 | Loss 3.052964val loss is 0.00, val acc is 37.46model best acc is 37.46, best acc epoch is 0This epoch use 3.73 minutestrain loss is 2.96, train acc is 25.28Epoch 2 | Batch 0/150 | Loss 2.588413val loss is 0.00, val acc is 37.46model best acc is 37.46, best acc epoch is 0This epoch use 3.71 minutestrain loss is 2.59, train acc is 33.27...
登录后复制    

6.4 测试流程

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

此时的输出为:


登录后复制    

八、模型信息

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

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

来源:https://www.php.cn/faq/1422141.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Trae在Python数据分析与机器学习项目中的实际应用评测
AI资讯
Trae在Python数据分析与机器学习项目中的实际应用评测

Trae在Python数据分析与机器学习项目中主要通过四种方式提供支持:利用Auto模式自动生成并执行端到端分析脚本;通过AgentCLI命令行自动化机器学习建模流程;对现有代码进行智能调试与优化;借助语音交互快速构建数据处理函数。这些功能覆盖了从需求描述到代码生成、模型构建及代码优化的全流程。

热心网友
05.23
Python collections模块高效使用指南与代码优化技巧
业界动态
Python collections模块高效使用指南与代码优化技巧

在Python编程中,你是否也曾编写过类似的统计代码? 统计词频 count = {} for word in words: if word in count: count[word] += 1 else: count[word] = 1 实际上,这种高频的计数需求,完全可以通过Python内置

热心网友
05.22
Trae支持的Python版本详解及各版本兼容性指南
AI资讯
Trae支持的Python版本详解及各版本兼容性指南

Trae稳定支持Python3 10至3 13版本,3 9及以下版本无法运行。Python3 14处于实验性支持阶段,核心功能可能受限。当存在多个3 10以上版本时,Trae优先选择虚拟环境中的解释器,其次为最高系统版本。此外,Trae仅兼容64位Python解释器,不支持32位架构。

热心网友
05.22
Python爬虫报错解决方案:从DOM解析到视觉识别的稳定抓取技巧
AI资讯
Python爬虫报错解决方案:从DOM解析到视觉识别的稳定抓取技巧

在企业级数据采集与自动化运维实践中,IT团队普遍面临一个核心挑战:Python爬虫为何频繁报错,修补维护何时才能终结?随着前端技术演进与动态反爬机制的日益复杂,依赖DOM解析的传统爬虫脚本往往陷入“部署即过时,运行即异常”的困境。本文将深入解析传统爬虫代码脆弱性的根本原因,并系统介绍一种能够重塑数据

热心网友
05.21
Docker镜像制作标准流程:Java、Vue、Python与Go项目实践指南
业界动态
Docker镜像制作标准流程:Java、Vue、Python与Go项目实践指南

很多刚接触Docker的开发者常有一个误解:制作镜像不就是把源代码打包进去就行了吗?实际上,在企业级的标准化开发流程中,直接将源码打包进Docker镜像是非常不专业的做法。这会导致镜像体积臃肿、引入潜在安全风险,并且模糊了“构建环境”与“运行环境”的边界。本文将深入解析Java、Vue、Go、Pyt

热心网友
05.21

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

2025年币安Binance官网最新入口与安全访问指南
web3.0
2025年币安Binance官网最新入口与安全访问指南

Binance币安 欧易OKX Huobi火币 访问币安(Binance)官网时,平台会根据用户所在地区进行智能跳转,这是为了满足不同区域的合规要求。目前,全球通用的主站官方域名是 binance com,记住这个地址,通常是最直接、最安全的访问起点。 如何正确访问币安官网 操作其实很简单:在浏览器

热心网友
05.23
BNB突破1000美元后长期持有者为何坚定持有 深度解析背后原因
web3.0
BNB突破1000美元后长期持有者为何坚定持有 深度解析背后原因

BNB突破1000美元:长期持有者为何坚定不离场? 当BNB价格成功站上1000美元大关,市场并未出现预期中的大规模获利了结潮。相反,众多长期持有者选择了继续坚守。这一现象背后,并非简单的市场情绪驱动,而是基于一套由代币经济模型、生态活力、传统资本流入及政策风险缓解共同构成的复合价值逻辑。本文将深度

热心网友
05.23
巴菲特看好的标普500指数表现如何 用比特币计价竟暴跌88%
web3.0
巴菲特看好的标普500指数表现如何 用比特币计价竟暴跌88%

标普500创新高,但以比特币计价却暴跌88%:重新审视资产估值坐标系 当市场为标普500指数屡创新高而欢呼时,一个颠覆性的视角正在引发深思。如果我们将计价单位从美元切换为比特币,这幅繁荣图景将彻底改写。数据显示,自2020年以来,标普500指数以美元计价上涨了106%,表现稳健;然而,若以比特币作为

热心网友
05.23
加密货币买卖点精准判断指南:掌握最佳时机与实战策略
web3.0
加密货币买卖点精准判断指南:掌握最佳时机与实战策略

交易的基石——两大内核分析流派 在探讨具体的买卖时机之前,有必要先理清驱动市场波动的两套底层逻辑:基本面分析与技术分析。这两者,好比是导航的地图和罗盘,各有侧重,却又相辅相成。 1 基本面分析:评估“真实价值” 这一流派的核心,是探究资产的内在价值。它关注三个层面: 项目质量: 这个项目究竟要解决

热心网友
05.23
AI技术高效处理文档自动生成专业报告与PPT
AI教程
AI技术高效处理文档自动生成专业报告与PPT

如何利用AI技术提升文档处理效率,快速生成专业报告和PPT 在内容爆炸的时代,文档处理的速度与质量,直接决定了商业决策和项目推进的效率。过去,一份专业报告或一份精心设计的PPT,背后往往意味着团队数日乃至数周的伏案工作。但如今,情况正在发生根本性的转变。行业观察显示,利用AI技术优化文档工作流,正从

热心网友
05.23