可用的代碼和教程筆記本,以將您的方式提升為幾片圖像分類。如果:
不要在大型存儲庫中使用數百種方法丟失,也沒有解釋如何使用它們。在這裡,我們希望每行代碼都由教程涵蓋。
您想學習幾次學習的學習,不知道從哪裡開始?從我們的教程開始。
| 筆記本 | 描述 | 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 )運行評估腳本。