@@ -167,11 +167,14 @@ We used EasyFSL to benchmark a dozen methods.
167167Inference times are computed over 1000 tasks using pre-extracted features. They are only indicative.
168168Note that the inference time for fine-tuning methods highly depends on the number of fine-tuning steps.
169169
170- All methods hyper-parameters are defined in [ this JSON file] ( scripts/backbones_configs.json ) .
170+ All methods hyperparameters are defined in [ this JSON file] ( scripts/backbones_configs.json ) .
171171They were selected on miniImageNet validation set.
172- The procedure can be reproduced from [ this other project ] ( https://github.com/ebennequin/few-shot-open-set ) .
172+ The procedure can be reproduced with ` make hyperparameter-search ` .
173173We decided to use miniImageNet's hyperparameters for all benchmarks in order to highlight the adaptability of
174174the different methods.
175+ Note that all methods use L2 normalization of features, except for FEAT as it harms its performance.
176+
177+ There are no results for Mathing and Relation Networks as the trained weights for their additional modules are unavailable.
175178
176179### miniImageNet & tieredImageNet
177180
@@ -180,36 +183,26 @@ provided by the authors from [FEAT](https://github.com/Sha-Lab/FEAT)
180183(download: [ miniImageNet] ( https://drive.google.com/file/d/1ixqw1l9XVxl3lh1m5VXkctw6JssahGbQ/view ) ,
181184[ tieredImageNet] ( https://drive.google.com/file/d/1M93jdOjAn8IihICPKJg8Mb4B-eYDSZfE/view ) ).
182185
186+ Best inductive and best transductive results for each column are shown in bold.
187+
183188| Method | Ind / Trans | * mini* Imagenet<br />1-shot | * mini* Imagenet<br />5-shot | * tiered* Imagenet<br />1-shot | * tiered* Imagenet<br />5-shot | Time |
184189| ---------------------------------------------------------------------------| --------------| ---------------------------| ---------------------------| -----------------------------| -----------------------------| ---------|
185- | ** [ ProtoNet] ( easyfsl/methods/prototypical_networks.py ) ** | Inductive | 61.5 | 79.3 | 56.4 | 76.5 | 10s |
186- | ** [ SimpleShot] ( easyfsl/methods/simple_shot.py ) ** | Inductive | 65.5 | 80.3 | 60.2 | 77.3 | 9s |
190+ | ** [ ProtoNet] ( easyfsl/methods/prototypical_networks.py ) ** | Inductive | 63.6 | 80.4 | 60.2 | 77.4 | 6s |
191+ | ** [ SimpleShot] ( easyfsl/methods/simple_shot.py ) ** | Inductive | 63.6 | ** 80.5 ** | 60.2 | 77.4 | 6s |
187192| ** [ MatchingNet] ( easyfsl/methods/matching_networks.py ) ** | Inductive | - | - | - | - | - |
188193| ** [ RelationNet] ( easyfsl/methods/relation_networks.py ) ** | Inductive | - | - | - | - | - |
189- | ** [ Finetune] ( easyfsl/methods/finetune.py ) ** | Inductive | 63.4 | 80.38 | 60.1 | 77.4 | 3mn03s |
190- | ** [ FEAT] ( easyfsl/methods/feat.py ) ** | Inductive | 64.7 | 80.13 | 61.3 | 76.2 | 3s |
191- | ** [ BD-CSPN] ( easyfsl/methods/bd_cspn.py ) ** | Transductive | 71.7 | 82.17 | 66.1 | 79.1 | 10s |
192- | ** [ LaplacianShot] ( easyfsl/methods/laplacian_shot.py ) ** | Transductive | 69.6 | 81.9 | 66.0 | 78.9 | 12s |
193- | ** [ PT-MAP] ( easyfsl/methods/pt_map.py ) ** | Transductive | - | - | - | - | 22mn50s |
194- | ** [ TIM] ( easyfsl/methods/tim.py ) ** | Transductive | 64.0 | 80.4 | 60.4 | 77.4 | 2mn48s |
195- | ** [ Transductive Finetuning] ( easyfsl/methods/transductive_finetuning.py ) ** | Transductive | - | - | - | - | - |
194+ | ** [ Finetune] ( easyfsl/methods/finetune.py ) ** | Inductive | 63.3 | ** 80.5 ** | 59.8 | ** 77.5 ** | 1mn33s |
195+ | ** [ FEAT] ( easyfsl/methods/feat.py ) ** | Inductive | ** 64.7** | 80.1 | ** 61.3** | 76.2 | 3s |
196+ | ** [ BD-CSPN] ( easyfsl/methods/bd_cspn.py ) ** | Transductive | 69.8 | 82.2 | 66.3 | 79.1 | 7s |
197+ | ** [ LaplacianShot] ( easyfsl/methods/laplacian_shot.py ) ** | Transductive | 69.8 | 82.3 | 66.2 | 79.2 | 9s |
198+ | ** [ PT-MAP] ( easyfsl/methods/pt_map.py ) ** | Transductive | ** 76.1 ** | ** 84.2 ** | ** 71.7 ** | ** 80.7 ** | 39mn40s |
199+ | ** [ TIM] ( easyfsl/methods/tim.py ) ** | Transductive | 74.3 | ** 84.2 ** | 70.7 | ** 80.7 ** | 3mn05s |
200+ | ** [ Transductive Finetuning] ( easyfsl/methods/transductive_finetuning.py ) ** | Transductive | 63.0 | 80.6 | 59.1 | 77.5 | 30s |
196201
197202To reproduce:
198203
1992041 . Download the [ * mini* ImageNet] ( https://drive.google.com/file/d/1ixqw1l9XVxl3lh1m5VXkctw6JssahGbQ/view )
200205 and [ tieredImageNet] ( https://drive.google.com/file/d/1M93jdOjAn8IihICPKJg8Mb4B-eYDSZfE/view ) weights for ResNet12
201206 and save them under ` data/models/feat_resnet12_mini_imagenet.pth ` (resp. ` tiered ` ).
2022072 . Extract all embeddings from the test sets of all datasets with ` make extract-all-features-with-resnet12 ` .
203- 3 . Run the evaluation script with ` make benchmark-mini-imagenet ` .
204-
205-
206- ### Next steps (01/06/2023):
207-
208- 1 . Complete benchmark with Matching and Relation Nets, PT-MAP, Transductive Finetuning (est. July 23)
209- 2 . Add explicit hyperparameter selection (est. July 23)
210- 3 . Add feature normalization as it's been proven to have a huge impact on the results (est. July 23)
211- 4 . Add cross-domain benchmarks (CUB, Fungi) and using other backbones (est. September 23)
212-
213-
214-
215-
208+ 3 . Run the evaluation scripts with ` make benchmark-mini-imagenet ` (resp. ` tiered ` ).
0 commit comments