公司动态

5 步跑通 few-shot-meta-baseline:小样本元学习环境搭建完整教程

📅 2026/8/19 19:53:18
5 步跑通 few-shot-meta-baseline:小样本元学习环境搭建完整教程
5 步跑通 few-shot-meta-baseline小样本元学习环境搭建完整教程【免费下载链接】few-shot-meta-baselineMeta-Baseline: Exploring Simple Meta-Learning for Few-Shot Learning, in ICCV 2021项目地址: https://gitcode.com/gh_mirrors/fe/few-shot-meta-baseline小样本元学习Few-Shot Meta-Learning是当前计算机视觉领域的热门方向而few-shot-meta-baseline正是复现 ICCV 2021 论文《Meta-Baseline: Exploring Simple Meta-Learning for Few-Shot Learning》的官方开源实现。它用最简单的思路在 miniImageNet 上取得了 1-shot 63.17%、5-shot 79.26% 的领先精度非常适合作为小样本学习入门的第一个跑通项目。本文将以 miniImageNet 为例用5 个步骤带你把 few-shot 元学习环境从零搭建起来并完成训练与测试全流程。小样本元学习环境搭建需要准备什么在开始之前先了解这个项目对软硬件的基本要求避免中途踩坑依赖项推荐版本说明Python3.7.3项目官方验证版本PyTorch1.2.0深度学习框架tensorboardX最新版训练日志可视化GPUNVIDIA 显卡训练必备显存建议 8G 以上数据集miniImageNet本文演示的数据集整个项目代码结构非常清晰训练入口在根目录的train_classifier.py、train_meta.py测试入口为test_few_shot.py所有实验配置统一放在configs/目录下的 YAML 文件中模型定义则位于models/目录。第一步克隆代码并安装依赖首先把项目克隆到本地仓库地址为https://gitcode.com/gh_mirrors/fe/few-shot-meta-baselinegit clone https://gitcode.com/gh_mirrors/fe/few-shot-meta-baseline cd few-shot-meta-baseline接着创建虚拟环境并安装核心依赖建议使用 condaconda create -n fsml python3.7.3 conda activate fsml pip install torch1.2.0 torchvision pip install tensorboardX pyyaml tqdm scipy scikit-learn安装完成后可以用一条命令快速验证环境是否就绪。如果下面的命令能打印出 PyTorch 版本号说明环境已经通了python -c import torch; print(torch.__version__)第二步下载并放置 miniImageNet 数据集小样本元学习环境搭建的关键一步是准备数据集。项目官方推荐使用 miniImageNet 与 tieredImageNet本文以 miniImageNet 为例。miniImageNet 是一个 pickle 格式的分类文件包含train、val、test三个划分共 100 个类别、每类 600 张 84×84 图片。下载完成后需要将数据整理到materials/目录下并确保目录中有一个名为mini-imagenet的文件夹里面包含三个划分文件materials/ └── mini-imagenet/ ├── miniImageNet_category_split_train_phase_train.pickle ├── miniImageNet_category_split_val.pickle └── miniImageNet_category_split_test.pickle数据加载逻辑可以在datasets/mini_imagenet.py中查看——代码会读取split参数对应的 pickle 文件并自动完成 80×80 缩放与 ImageNet 归一化预处理。第三步训练 Classifier-Baseline 分类器基线Meta-Baseline 的训练分为两阶段第一阶段先训练一个普通的分类器作为编码器预训练模型第二阶段再用元学习方式微调。这种先分类、后元学习的两阶段思路正是 Meta-Baseline 简单而有效的核心所在。使用官方提供的配置启动分类器训练只需一行命令python train_classifier.py --config configs/train_classifier_mini.yaml --gpu 0这个命令会完成以下工作使用 ResNet-12 作为骨干网络定义见models/resnet12.py在 miniImageNet 训练集上训练 100 个 epoch每 5 个 epoch 在验证集上做一次 few-shot 评估模型自动保存到save/目录max-va.pth为验证集上表现最好的权重。训练结束后你会在save/classifier_mini-imagenet_resnet12/下看到epoch-last.pth和max-va.pth等权重文件这些就是下一阶段元学习训练要加载的预训练编码器。第四步训练 Meta-Baseline 元学习模型第二阶段训练元学习模型核心命令同样只有一行python train_meta.py --config configs/train_meta_mini.yaml --gpu 0对应配置configs/train_meta_mini.yaml中已经写好了关键参数配置项默认值含义n_way5每个 episode 5 个类别n_shot1每个类别 1 张支撑图片n_query15每个类别 15 张查询图片load_encoder./save/.../epoch-last.pth加载第一步训练好的编码器max_epoch20元学习训练轮数训练时模型会对每个 episode 的支撑图片求平均作为类原型再用余弦相似度对查询图片分类整个前向逻辑可以在models/meta_baseline.py的MetaBaseline类中看到。由于是元学习阶段训练速度明显快于第一阶段通常几小时即可完成 20 个 epoch最终模型同样保存在save/目录下。第五步测试评估并复现论文精度训练完成后修改configs/test_few_shot.yaml把load字段指向元学习模型的权重文件load: ./save/meta_mini-imagenet-1shot_meta-baseline-resnet12/max-va.pth然后运行测试命令python test_few_shot.py --shot 1 --gpu 0--shot参数控制测试时的支撑样本数量1表示 1-shot5表示 5-shot。测试脚本会随机采样 200 个 5-way episode 并统计平均精度与 95% 置信区间。如果一切顺利你应该能复现出接近论文的结果方法1-shot 精度5-shot 精度Classifier-Baseline58.91%77.76%Meta-Baseline63.17%79.26%如果想要评估单类别的 AUC 指标只需在测试命令后追加--sauc参数即可。进阶技巧如何快速切换到其他数据集小样本元学习环境搭建好之后换数据集成本极低。整个项目的设计理念是配置驱动——只需替换配置文件中的数据集名称即可无缝切换将mini替换为tiered使用configs/train_classifier_tiered.yaml与configs/train_meta_tiered.yaml将mini替换为im800使用configs/train_classifier_im800.yaml与configs/train_meta_im800.yaml对应 ImageNet-800 数据集想改成 5-shot把配置文件里的n_shot改为 5再设置load指向对应的预训练模型即可。注意不同数据集的默认root_path是materials/{数据集名称}例如 tieredImageNet 需要放在materials/tiered-imagenet下。写在最后至此你已经用 5 个步骤完整跑通了 few-shot-meta-baseline 的小样本元学习环境搭建、训练与测试全流程。从克隆仓库、安装依赖到数据准备、两阶段训练再到结果复现全程只用了三行核心命令。接下来你就可以基于这个基线尝试替换骨干网络、调整 episode 数量、修改温度参数或者进一步探索项目meta-dataset/目录中支持 8 个数据集的大规模元学习实验。希望这份教程能成为你踏入小样本学习世界的第一个坚实台阶。【免费下载链接】few-shot-meta-baselineMeta-Baseline: Exploring Simple Meta-Learning for Few-Shot Learning, in ICCV 2021项目地址: https://gitcode.com/gh_mirrors/fe/few-shot-meta-baseline创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考