← 开源
sicara

easy-few-shot-learning

Ready-to-use code and tutorial notebooks to boost your way into few-shot learning for image classification.

TutorialsML/AI fundamentalsPython
在 GitHub 打开
增长势头
+024 小时新增 Star0.0%
1.31k
Star
168
Fork
+0
本周
13
贡献者
创建于 2021-02-01 · 更新于 2026-10-12 · 今日第 10731 名
主要开发者
ebennequindiego91964AntoineToubhans

sicara/easy-few-shot-learning 排名第 10,731,有 1,315 个星标。

同类别比较

sicara/easy-few-shot-learning 排名第 10,731,此处有 8 个同类条目;neubig/nn4nlp-code 排名第 10,737。

同类别比较
名称排名指标
pierrepault/probabilistic_robotics10,695
语言:
C++
星标数:
1,323
分叉数:
390
简介:
solution of exercises of the book "probabilistic robotics"
nerdyrodent/AVeryComfyNerd10,707
星标数:
1,320
分叉数:
90
简介:
ComfyUI related stuff and things
jackaduma/awesome_LLMs_interview_notes10,713
星标数:
1,319
分叉数:
329
简介:
LLMs interview notes and answers:该仓库主要记录大模型(LLMs)算法工程师相关的面试题和参考答案
hkproj/pytorch-transformer10,724
语言:
Jupyter Notebook
星标数:
1,316
分叉数:
414
简介:
Attention is all you need implementation
neubig/nn4nlp-code10,737
语言:
Python
星标数:
1,313
分叉数:
479
简介:
Code Samples from Neural Networks for NLP
Newmu/Theano-Tutorials10,740
语言:
Python
星标数:
1,312
分叉数:
436
简介:
Bare bones introduction to machine learning from linear regression to convolutional neural networks using Theano.
VikParuchuri/zero_to_gpt10,751
语言:
Jupyter Notebook
星标数:
1,309
分叉数:
221
简介:
Go from no deep learning knowledge to implementing GPT.
WillKoehrsen/machine-learning-project-walkthrough10,752
语言:
Jupyter Notebook
星标数:
1,309
分叉数:
565
简介:
An implementation of a complete machine learning solution in Python on a real-world dataset. This project is meant to demonstrate how all the steps of a machine learning pipeline come together to solve a problem!
关键参数与规格
关键参数与规格
参数值
语言Python
类别Tutorials
子类别ML/AI fundamentals
星标数1,315
分叉数168
贡献者13
创建日期2021-02-01
更新日期2026-10-12
1 天星标数0
7 天星标数0
排名10,731
上次排名10,714
排名变化-17
7 天星标排名12,737
上次 7 天星标排名12,761
7 天星标排名变化24
总星标排名9,007
上次总星标排名9,001
总星标排名变化-6
国家France
README 摘录

Easy Few-Shot Learning Ready-to-use code and tutorial notebooks to boost your way into few-shot image classification. This repository is made for you if: you're new to few-shot learning and want to learn; or you're looking for reliable, clear and easily usable code that you can use for your projects. Don't get lost in large repositories with hundreds of methods and no explanation on how to use them. Here, we want each line of code to

be covered by a tutorial. Notebooks: learn and practice You want to learn few-shot learning and don't know where to start? Prototypical Networks SimpleShot Matching Networks Relation Networks FEAT Fine-Tune BD-CSPN LaplacianShot Transductive Information Maximization PT-MAP Transductive Fine-Tuning We also provide a FewShotClassifier class to quickstart your implementation of any few-shot classification algorithm, as well as commonly used architectures. See the benchmarks section below for more details on the methods. **Tools for data loading

:** Data loading in FSL is a bit different from standard classification because we sample batches of instances in the shape of few-shot classification tasks. In EasyFSL you have: TaskSampler: an extension of the standard PyTorch Sampler object, to sample batches in the shape of few-shot classification tasks FewShotDataset: an abstract class to standardize the interface of any dataset you'd like to use EasySet: a ready-to-use FewShotDataset object to handle datasets of images with a class-wise

directory split WrapFewShotDataset: a wrapper to transform any dataset into a FewShotDataset object FeaturesDataset: a dataset to handle pre-extracted features SupportSetFolder: a dataset to handle support sets stored in a directory **Scripts to reproduce our benchmarks:** to extract all embeddings from a dataset with a given pre-trained backbone to evaluate a method on a test dataset using pre-extracted embeddings. **And also:** some utilities that I felt I often used in my research, so I'm sharing with you

. Datasets to test your model There are enough datasets used in Few-Shot Learning for anyone to get lost in them. They're all here, explicited, downloadable and easy-to-use, in EasyFSL. **CU-Birds** We provide a recipe to download and extract the dataset, along with the standard (train / val / test) split along classes. Once you've downloaded the dataset, you can instantiate the Dataset objects in your code with this super complicated process: **tieredImageNet** To use it, you need the

ILSVRC2015 dataset. Once you have downloaded and extracted the dataset, ensure that its localisation on disk is consistent with the class paths specified in the specification files. Then: **miniImageNet** Same as tieredImageNet, we provide the specification files, but you need the ILSVRC2015 dataset. Once you have it: Since miniImageNet is relatively small, you can also load it on RAM directly at instantiation simply by adding to the constructor. It takes a few minutes but it can make your training significantly

faster! **Danish Fungi** I've recently started using it as a Few-Shot Learning benchmarks, and I can tell you it's

常见问题

记录了多少星标和分叉?

sicara/easy-few-shot-learning 有 1,315 个星标和 168 个分叉。

仓库排名是多少?

sicara/easy-few-shot-learning 排名第 10,731。

记录的语言和类别是什么?

sicara/easy-few-shot-learning 有 1,315 个星标,语言为 Python,类别为 Tutorials。

哪个仓库排名最接近?

sicara/easy-few-shot-learning 与 neubig/nn4nlp-code 比较,后者排名第 10,737,有 1,313 个星标。

README

Easy Few-Shot Learning

Ready-to-use code and tutorial notebooks to boost your way into few-shot image classification. This repository is made for you if:

  • you're new to few-shot learning and want to learn;
  • or you're looking for reliable, clear and easily usable code that you can use for your projects.

Don't get lost in large repositories with hundreds of methods and no explanation on how to use them. Here, we want each line of code to be covered by a tutorial.

What's in there?

Notebooks: learn and practice

You want to learn few-shot learning and don't know where to start? Start with our tutorials.

Notebook Description Colab
First steps into few-shot image classification Basically Few-Shot Learning 101, in less than 15min.
Example of episodic training Use it as a starting point if you want to design a script for episodic training using EasyFSL.
Example of classical training Use it as a starting point if you want to design a script for classical training using EasyFSL.
Test with pre-extracted embeddings Most few-shot methods use a frozen backbone at test-time. With EasyFSL, you can extract all embeddings for your dataset once and for all, and then perform inference directly on embeddings.

Code that you can use and understand

State-Of-The-Art Few-Shot Learning methods:

With 11 built-in methods, EasyFSL is the most comprehensive open-source Few-Shot Learning library!

We also provide a FewShotClassifier class to quickstart your implementation of any few-shot classification algorithm, as well as commonly used architectures.

See the benchmarks section below for more details on the methods.

Tools for data loading:

Data loading in FSL is a bit different from standard classification because we sample batches of instances in the shape of few-shot classification tasks. No sweat! In EasyFSL you have:

  • TaskSampler: an extension of the standard PyTorch Sampler object, to sample batches in the shape of few-shot classification tasks
  • FewShotDataset: an abstract class to standardize the interface of any dataset you'd like to use
  • EasySet: a ready-to-use FewShotDataset object to handle datasets of images with a class-wise directory split
  • WrapFewShotDataset: a wrapper to transform any dataset into a FewShotDataset object
  • FeaturesDataset: a dataset to handle pre-extracted features
  • SupportSetFolder: a dataset to handle support sets stored in a directory

Scripts to reproduce our benchmarks:

  • scripts/predict_embeddings.py to extract all embeddings from a dataset with a given pre-trained backbone
  • scripts/benchmark_methods.py to evaluate a method on a test dataset using pre-extracted embeddings.

And also: some utilities that I felt I often used in my research, so I'm sharing with you.

Datasets to test your model

There are enough datasets used in Few-Shot Learning for anyone to get lost in them. They're all here, explicited, downloadable and easy-to-use, in EasyFSL.

CU-Birds

We provide a make download-cub recipe to download and extract the dataset, along with the standard (train / val / test) split along classes. Once you've downloaded the dataset, you can instantiate the Dataset objects in your code with this super complicated process:

from easyfsl.datasets import CUB

train_set = CUB(split="train", training=True)
test_set = CUB(split="test", training=False)

tieredImageNet

To use it, you need the ILSVRC2015 dataset. Once you have downloaded and extracted the dataset, ensure that its localisation on disk is consistent with the class paths specified in the specification files. Then:

from easyfsl.datasets import TieredImageNet

train_set = TieredImageNet(split="train", training=True)
test_set = TieredImageNet(split="test", training=False)

miniImageNet

Same as tieredImageNet, we provide the specification files, but you need the ILSVRC2015 dataset. Once you have it:

from easyfsl.datasets import MiniImageNet

train_set = MiniImageNet(root="where/imagenet/is", split="train", training=True)
test_set = MiniImageNet(root="where/imagenet/is", split="test", training=False)

Since miniImageNet is relatively small, you can also load it on RAM directly at instantiation simply by adding load_on_ram=True to the constructor. It takes a few minutes but it can make your training significantly faster!

Danish Fungi

I've recently started using it as a Few-Shot Learning benchmarks, and I can tell you it's a great playing field. To use it, first download the data:

# Download the original dataset (/!\ 110GB)
wget http://ptak.felk.cvut.cz/plants/DanishFungiDataset/DF20-train_val.tar.gz
# Or alternatively the images reduced to 300px (6.5Gb)
wget http://ptak.felk.cvut.cz/plants/DanishFungiDataset/DF20-300px.tar.gz
# And finally download the metadata (83Mb) to data/fungi/
wget https://public-sicara.s3.eu-central-1.amazonaws.com/easy-fsl/DF20_metadata.csv  -O data/fungi/DF20_metadata.csv

And then instantiate the dataset with the same process as always:

from easyfsl.datasets import DanishFungi

dataset = DanishFungi(root="where/fungi/is")

Note that I didn't specify a train and test set because the CSV I gave you describes the whole dataset. I recommend to use it to test models with weights trained on an other dataset (like ImageNet). But if you want to propose a train/val/test split along classes, you're welcome to contribute!

QuickStart

  1. Install the package: pip install easyfsl or simply fork the repository.

  2. Download your data.

  3. Design your training and evaluation scripts. You can use our example notebooks for episodic training or classical training.

Contribute

This project is very open to contributions! You can help in various ways:

  • raise issues
  • resolve issues already opened
  • tackle new features from the roadmap
  • fix typos, improve code quality

Benchmarks

We used EasyFSL to benchmark a dozen methods. Inference times are computed over 1000 tasks using pre-extracted features. They are only indicative. Note that the inference time for fine-tuning methods highly depends on the number of fine-tuning steps.

All methods hyperparameters are defined in this JSON file. They were selected on miniImageNet validation set. The procedure can be reproduced with make hyperparameter-search. We decided to use miniImageNet's hyperparameters for all benchmarks in order to highlight the adaptability of the different methods. Note that all methods use L2 normalization of features, except for FEAT as it harms its performance.

There are no results for Mathing and Relation Networks as the trained weights for their additional modules are unavailable.

miniImageNet & tieredImageNet

All methods use the same backbone: a custom ResNet12 using the trained parameters provided by the authors from FEAT (download: miniImageNet, tieredImageNet).

Best inductive and best transductive results for each column are shown in bold.

| Method | Ind / Trans | miniImagenet
1-shot | miniImagenet
5-shot | tieredImagenet
1-shot | tieredImagenet
5-shot | Time | |---------------------------------------------------------------------------|--------------|---------------------------|---------------------------|-----------------------------|-----------------------------|---------| | ProtoNet | Inductive | 63.6 | 80.4 | 60.2 | 77.4 | 6s | | SimpleShot | Inductive | 63.6 | 80.5 | 60.2 | 77.4 | 6s | | MatchingNet | Inductive | - | - | - | - | - | | RelationNet | Inductive | - | - | - | - | - | | Finetune | Inductive | 63.3 | 80.5 | 59.8 | 77.5 | 1mn33s | | FEAT | Inductive | 64.7 | 80.1 | 61.3 | 76.2 | 3s | | BD-CSPN | Transductive | 69.8 | 82.2 | 66.3 | 79.1 | 7s | | LaplacianShot | Transductive | 69.8 | 82.3 | 66.2 | 79.2 | 9s | | PT-MAP | Transductive | 76.1 | 84.2 | 71.7 | 80.7 | 39mn40s | | TIM | Transductive | 74.3 | 84.2 | 70.7 | 80.7 | 3mn05s | | Transductive Finetuning | Transductive | 63.0 | 80.6 | 59.1 | 77.5 | 30s |

To reproduce:

  1. Download the miniImageNet and tieredImageNet weights for ResNet12 and save them under data/models/feat_resnet12_mini_imagenet.pth (resp. tiered).
  2. Extract all embeddings from the test sets of all datasets with make extract-all-features-with-resnet12.
  3. Run the evaluation scripts with make benchmark-mini-imagenet (resp. tiered).
排名相邻
同类项目