ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

手把手复现 ICCV 2021 论文:用 few-shot-meta-baseline 训练小样本模型完整实战

手把手复现 ICCV 2021 论文:用 few-shot-meta-baseline 训练小样本模型完整实战 手把手复现 ICCV 2021 论文用 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想让 AI 只靠几张图片就学会识别新类别这正是小样本学习Few-Shot Learning的核心目标。本文以 ICCV 2021 论文《Meta-Baseline: Exploring Simple Meta-Learning for Few-Shot Learning》的开源实现 few-shot-meta-baseline 为基础带来一份小样本学习训练教程手把手带你完成从环境搭建、数据准备到模型训练与测试的完整复现流程即使你是零基础新手也能顺利跑通。一、先认识 Meta-Baseline简单却强力的元学习框架 Meta-Baseline 的核心思想用一个词概括就是简单。它没有复杂的记忆模块也没有繁琐的优化器设计而是把**元学习Meta-Learning**拆解为两个清晰的阶段基类预训练先在 ImageNet、miniImageNet 等大规模数据集上用传统分类方式训练特征提取器Encoder。元学习微调再通过episode式任务采样用余弦相似度等度量方式让模型学会快速适应新类别。正是这种先分类、后度量的朴素组合让它在 miniImageNet 的 5-way 1-shot 任务上达到了 63.17% 的准确率超越了同期许多花哨的复杂方法。论文成果可在仓库 README.md 中查看。二、复现前的环境准备三步搭好实验环境复现实验不需要 GPU 集群单卡即可跑通 miniImageNet。官方推荐环境如下依赖推荐版本Python3.7.3PyTorch1.2.0tensorboardX最新版即可首先把项目代码拉取到本地git clone https://gitcode.com/gh_mirrors/fe/few-shot-meta-baseline cd few-shot-meta-baseline pip install torch tensorboardX pyyaml tqdm scipy scikit-learn所有训练与测试脚本都在仓库根目录配置统一放在configs/目录下结构非常清爽。三、数据集准备把数据集放进 materials 目录项目默认从materials/目录读取数据支持三个数据集miniImageNet最常用的小样本基准64 个训练类tieredImageNet分层采样的大规模基准ImageNet-800800 类大规模数据集切分方案见 materials/imagenet-800_split.json下载数据集后用软链接把文件夹放入materials/目录并命名为mini-imagenet、tiered-imagenet和imagenetln -s /你的路径/mini-imagenet ./materials/mini-imagenet注意imagenet指 ILSVRC-2012 数据集需要包含train和val两个带类别子目录的文件夹。数据加载逻辑封装在 datasets/datasets.py 中默认根路径即为./materials。四、完整训练流程三步跑通 Meta-Baseline整体流程分为训练基类分类器 → 训练元学习模型 → 测试评估三步对应仓库中的三个脚本 train_classifier.py、train_meta.py 和 test_few_shot.py。第一步训练 Classifier-Baseline基类分类器这一步让特征提取器先学会认识训练类为后续元学习打下基础。运行python train_classifier.py --config configs/train_classifier_mini.yaml --gpu 0对应配置 configs/train_classifier_mini.yaml 中模型使用 ResNet-12 编码器加线性分类头在 64 个训练类上训练 100 个 epoch。训练完成后模型保存在save/classifier_mini-imagenet_resnet12/目录下。第二步训练 Meta-Baseline元学习微调⚡这是核心一步。运行python train_meta.py --config configs/train_meta_mini.yaml --gpu 0配置 configs/train_meta_mini.yaml 的关键参数解读n_way: 5、n_shot: 1每轮任务从 5 个类别中抽取每个类别仅给 1 个样本即 5-way 1-shot 设置load_encoder自动加载第一步训练好的分类器编码器max_epoch: 20元学习阶段仅需 20 个 epochtrain_batches: 200每轮采样 200 个 episode 任务每个 episode 中模型用少量 support 样本计算类别原型原型均值再用余弦相似度对 query 样本分类核心实现见 models/meta_baseline.py 的MetaBaseline类。训练日志会记录 train / tval / val 三组准确率最优模型自动保存为max-va.pth。第三步测试评估复现论文精度 修改 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 --test-epochs 10 --gpu 0--shot 1对应 1-shot--shot 5则测试 5-shot。脚本会输出类似acc63.17 - 0.50 (%)的带置信区间的结果与论文精度吻合。五、代码结构速览读懂项目只需 5 分钟文件/目录作用train_classifier.py基类分类器训练入口train_meta.py元学习训练入口test_few_shot.py小样本评测入口configs/全部实验配置mini/tiered/im800models/meta_baseline.pyMeta-Baseline 核心模型models/classifier.py分类器与线性分类头models/resnet12.pyResNet-12 骨干网络datasets/samplers.pyEpisode 任务采样器utils/few_shot.pysupport/query 切分工具想要换数据集只需把配置文件名中的mini替换为tiered或im800如configs/train_meta_tiered.yaml其他逻辑完全一致。模型注册机制见 models/models.py新增模型只需用register装饰器即可。六、参考精度你的复现结果应该接近这些数字以 ResNet-12 为骨干通道数 64-128-256-512无额外 trick的 5-way 精度参考数据集1-shot5-shotminiImageNet63.17%79.26%tieredImageNet68.62%83.29%若使用 ResNet-50 骨干在 ImageNet-800 上1-shot 可达 89.70%。想评估二分类场景可给test_few_shot.py添加--sauc参数计算单类 AUC。七、写在最后从复现到进阶Meta-Baseline 用最朴素的思路证明了简单即强大。完成上述三步你就亲手复现了一篇 ICCV 2021 顶会论文。进阶玩法包括修改n_shot挑战 5-shot、尝试不同骨干网络、或在 Meta-Dataset 上验证跨数据集泛化能力见meta-dataset/目录。祝你训练顺利精度达标【免费下载链接】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),仅供参考
返回列表