可用的代码和教程笔记本,以将您的方式提升为几片图像分类。如果:
不要在大型存储库中使用数百种方法丢失,也没有解释如何使用它们。在这里,我们希望每行代码都由教程涵盖。
您想学习几次学习的学习,不知道从哪里开始?从我们的教程开始。
| 笔记本 | 描述 | COLAB |
|---|---|---|
| 少数图像分类的第一步 | 基本上很少有15分钟的学习101。 | |
| 情节训练的示例 | 如果您想使用EasyFSL设计脚本以进行情节培训,则将其用作起点。 | |
| 古典培训的例子 | 如果您想使用EasyFSL设计用于经典培训的脚本,请将其用作起点。 | |
| 用预提取的嵌入式测试 | 大多数射击方法在测试时使用冷冻的主链。使用EasyFSL,您可以一劳永逸地提取数据集的所有嵌入式,然后直接在嵌入式上进行推断。 |
最先进的少数学习方法:
使用11种内置方法,EasyFSL是最全面的开源库库!
我们还提供了几个ShotClassifier类,以快速启动您对任何几张弹药分类算法的实现以及常用的架构。
有关方法的更多详细信息,请参见下面的基准部分。
数据加载工具:
FSL中的数据加载与标准分类有点不同,因为我们以几个射击分类任务的形状进行了批次批次。没有汗水!在Easyfsl中,您有:
复制我们的基准的脚本:
scripts/predict_embeddings.py ,用给定的预训练的骨干从数据集中提取所有嵌入scripts/benchmark_methods.py使用预先提取的嵌入式在测试数据集上评估方法。还有:我认为我经常在研究中使用的一些公用事业,所以我与您分享。
有足够的数据集用于几次学习中,任何人都可以迷失其中。它们都在这里,在Easyfsl中被阐述,可下载且易于使用。
铜鸟
我们提供make download-cub食谱,以下载和提取数据集,以及沿着课程的标准(火车 / val / test)拆分。下载数据集后,您可以使用此非常复杂的过程实例化代码中的数据集对象:
from easyfsl . datasets import CUB
train_set = CUB ( split = "train" , training = True )
test_set = CUB ( split = "test" , training = False )Tieredimagenet
要使用它,您需要ILSVRC2015数据集。下载并提取数据集并提取数据集后,确保其在磁盘上的本地化与规范文件中指定的类路径一致。然后:
from easyfsl . datasets import TieredImageNet
train_set = TieredImageNet ( split = "train" , training = True )
test_set = TieredImageNet ( split = "test" , training = False )迷你胶原
与Tieredimagenet一样,我们提供了规格文件,但是您需要ILSVRC2015数据集。一旦拥有:
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 )由于Miniimagenet相对较小,因此您也可以通过将load_on_ram=True添加到构造函数时将其直接加载到RAM上。它需要几分钟,但可以使您的培训速度明显更快!
丹麦真菌
我最近开始将其用作一些学习基准,我可以告诉您这是一个很棒的运动场。要使用它,请首先下载数据:
# 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然后以与往常相同的过程实例化数据集:
from easyfsl . datasets import DanishFungi
dataset = DanishFungi ( root = "where/fungi/is" )请注意,我没有指定火车和测试集,因为我给您的CSV描述了整个数据集。我建议将其用于测试在其他数据集(例如Imagenet)上训练的权重的模型。但是,如果您想在课堂上提议火车/val/测试拆分,欢迎您贡献!
安装软件包: pip install easyfsl或简单地拨出存储库。
下载您的数据。
设计您的培训和评估脚本。您可以使用我们的示例笔记本进行情节培训或古典培训。
这个项目非常开放!您可以通过各种方式提供帮助:
我们使用easyfsl基准了十几种方法。推理时间是使用预先提取的功能计算出1000多个任务的。它们只是指示性的。请注意,微调方法的推理时间高度取决于微调步骤的数量。
所有方法超参数均在此JSON文件中定义。它们是在迷你胶质验证集中选择的。可以通过make hyperparameter-search复制该过程。我们决定将Miniimagenet的超参数用于所有基准测试,以突出不同方法的适应性。请注意,所有方法都使用L2的功能归一化,除了壮举会损害其性能。
数学和关系网络没有结果,因为无法获得其他模块的训练的权重。
所有方法都使用相同的骨干:使用作者从壮举中提供的训练参数(下载:Miniimagenet,tieredimagenet)。
每列的最佳电感和最佳的转导效果以粗体显示。
| 方法 | ind / trans | 迷你图像网 1-shot | 迷你图像网 5击 | 分层影像网 1-shot | 分层影像网 5击 | 时间 |
|---|---|---|---|---|---|---|
| 质子 | 感应 | 63.6 | 80.4 | 60.2 | 77.4 | 6s |
| SimpleShot | 感应 | 63.6 | 80.5 | 60.2 | 77.4 | 6s |
| 匹配网 | 感应 | - | - | - | - | - |
| 关系网 | 感应 | - | - | - | - | - |
| Finetune | 感应 | 63.3 | 80.5 | 59.8 | 77.5 | 1MN33S |
| 壮举 | 感应 | 64.7 | 80.1 | 61.3 | 76.2 | 3s |
| BD-CSPN | 跨度 | 69.8 | 82.2 | 66.3 | 79.1 | 7s |
| 拉普拉斯·肖特(Laplacianshot) | 跨度 | 69.8 | 82.3 | 66.2 | 79.2 | 9s |
| pt图 | 跨度 | 76.1 | 84.2 | 71.7 | 80.7 | 39MN40S |
| 蒂姆 | 跨度 | 74.3 | 84.2 | 70.7 | 80.7 | 3MN05S |
| 换框 | 跨度 | 63.0 | 80.6 | 59.1 | 77.5 | 30年代 |
复制:
data/models/feat_resnet12_mini_imagenet.pth tiered保存它们。make extract-all-features-with-resnet12 。make benchmark-mini-imagenet (分别tiered )运行评估脚本。