LibFewShot: 一个全面的小样本学习库
小样本学习,特别是小样本图像分类,近年来受到了越来越多的关注并取得了显著进展。LibFewShot是一个旨在推动这一领域发展的综合性开源库。
项目背景与动机
近期的一些研究表明,许多通用技术或"技巧",如数据增强、预训练、知识蒸馏和自监督学习等,可能会大大提高小样本学习方法的性能。然而,不同的工作可能采用不同的软件平台、训练计划、骨干网络架构甚至不同的输入图像大小,这使得公平比较变得困难,实践者也难以复现结果。
为了解决这些问题,LibFewShot应运而生。它在PyTorch统一框架下重新实现了18种最先进的小样本学习方法,使用相同的代码库。这不仅为初学者降低了进入小样本学习领域的门槛,还消除了一些非平凡技巧的影响,有助于促进对小样本学习的本质研究。
主要特点
-
统一框架: 在PyTorch中使用单一代码库重新实现了18种最先进的小样本学习方法。
-
全面评估: 基于LibFewShot,使用多个骨干网络架构在多个基准数据集上提供了全面的评估。
-
训练技巧分析: 评估了常见陷阱和不同训练技巧的效果。
-
元学习机制验证: 鉴于近期对元学习或情景学习机制必要性的质疑,LibFewShot的评估结果表明,特别是当与预训练结合时,这种机制仍然是必要的。
-
开源可用: 源代码可在GitHub上获取: https://github.com/RL-VIG/LibFewShot
支持的方法
LibFewShot支持多种类型的小样本学习方法,包括:
非情景式方法(又称微调方法)
- Baseline (ICLR 2019)
- Baseline++ (ICLR 2019)
- RFS (ECCV 2020)
- SKD (BMVC 2021)
- Negcos (ECCV 2020)
- S2M2 (WACV 2020)
- Meta-Baseline (ICCV 2021)
基于元学习的方法
- MatchingNet (NeurIPS 2016)
- MAML (ICML 2017)
- Versa (NeurIPS 2018)
- R2D2 (ICLR 2019)
- LEO (ICLR 2019)
- MTL (CVPR 2019)
- ANIL (ICLR 2020)
- BOIL (ICLR 2021)
基于度量学习的方法
- ProtoNet (NeurIPS 2017)
- RelationNet (CVPR 2018)
- ConvaMNet (AAAI 2019)
- DN4 (CVPR 2019)
- CAN (NeurIPS 2019)
- ADM (IJCAI 2020)
- FEAT (CVPR 2020)
- DeepBDC (CVPR 2022)
快速安装
LibFewShot的安装过程简单直观。详细的安装指南可以在项目的安装文档中找到。完整的教程可以在英文文档或中文文档中查看。
数据集
LibFewShot支持多个标准的小样本学习数据集,包括:
- Caltech-UCSD Birds-200-2011
- Stanford Cars
- Stanford Dogs
- mini-ImageNet
- tiered-ImageNet
- WebCaricature
这些数据集可以从Google Drive或百度网盘(提取码:yr1w)下载。
贡献指南
LibFewShot欢迎任何形式的功能或改进贡献。编码风格遵循PEP 8规范。详细的贡献指南可以在项目的贡献文档中找到。
许可证
本项目采用MIT许可证。详细信息请参阅LICENSE文件。
致谢
LibFewShot是一个开源项目,旨在帮助小样本学习研究人员快速理解经典方法和代码结构。我们欢迎其他贡献者使用这个框架来实现他们自己的或其他令人印象深刻的方法,并将它们添加到LibFewShot中。这个库只能用于学术研究。我们欢迎在使用LibFewShot过程中的任何反馈,并将尽最大努力不断改进这个库。
通过提供这个综合性的库,LibFewShot团队希望能够推动小样本学习领域的发展,为研究人员和实践者提供一个强大而灵活的工具。无论您是该领域的新手还是经验丰富的研究者,LibFewShot都能为您的工作提供宝贵的支持。
欢迎访问GitHub仓库了解更多信息,并开始您的小样本学习之旅! 🚀🔬