몇 가지 샷 이미지 분류로 향하는 즉시 사용 가능한 코드 및 튜토리얼 노트북. 이 저장소는 다음과 같은 경우에 만들어집니다.
수백 가지의 방법으로 대규모 저장소에서 길을 잃지 말고 사용 방법에 대한 설명이 없습니다. 여기서는 각 코드 라인이 자습서로 다루기를 원합니다.
소수의 샷 학습을 배우고 싶고 어디서부터 시작 해야할지 모르십니까? 튜토리얼부터 시작하십시오.
| 공책 | 설명 | 콜랩 |
|---|---|---|
| 몇 가지 샷 이미지 분류에 대한 첫 번째 단계 | 기본적으로 소수의 학습 101, 15 분 미만. | |
| 에피소드 훈련의 예 | EasyFSL을 사용하여 에피소드 훈련을위한 스크립트를 디자인하려면 시작점으로 사용하십시오. | |
| 고전 훈련의 예 | EasyFSL을 사용하여 클래식 교육을위한 스크립트를 설계하려면 시작점으로 사용하십시오. | |
| 사전 추출 된 임베딩으로 테스트하십시오 | 대부분의 소수의 방법은 테스트 시간에 얼어 붙은 백본을 사용합니다. EasyFSL을 사용하면 데이터 세트에 대한 모든 임베딩을 한 번에 추출한 다음 임베딩에서 직접 추론을 수행 할 수 있습니다. |
최첨단 소수의 학습 방법 :
EasyFSL은 11 가지 내장 방법을 갖춘 가장 포괄적 인 오픈 소스 소수의 학습 라이브러리입니다!
또한 소수의 분류 알고리즘과 일반적으로 사용되는 아키텍처의 구현을 빠르게 시작하기위한 소수의 분류기 클래스를 제공합니다.
방법에 대한 자세한 내용은 아래 벤치 마크 섹션을 참조하십시오.
데이터 로딩 도구 :
FSL의 데이터 로딩은 표준 분류와 약간 다릅니다. 이는 몇 가지 분류 작업 형태의 인스턴스 배치를 샘플링하기 때문입니다. 땀이 없어! EasyFSL에는 다음과 같습니다.
벤치 마크를 재현하기위한 스크립트 :
scripts/predict_embeddings.py 주어진 미리 훈련 된 백본이있는 데이터 세트에서 모든 임베딩을 추출합니다.scripts/benchmark_methods.py 사전 추출 된 임베딩을 사용하여 테스트 데이터 세트의 메소드를 평가합니다.또한 : 내가 연구에 자주 사용했다고 느꼈던 일부 유틸리티. 그래서 나는 당신과 공유하고 있습니다.
거의 샷 학습에 사용되는 충분한 데이터 세트가있어 누구나 잃어 버릴 수 있습니다. EasyFSL에서 모두 여기에 설명되어 있고 다운로드 가능하며 사용하기 쉬운 사용이 있습니다.
cu-birds
우리는 클래스를 따라 표준 (Train / Val / Test) 분할과 함께 데이터 세트를 다운로드하고 추출 할 수있는 make download-cub 레시피를 제공합니다. 데이터 세트를 다운로드 한 후에는이 매우 복잡한 프로세스로 코드의 데이터 세트 객체를 인스턴스화 할 수 있습니다.
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)에서 훈련 된 가중치로 모델을 테스트하는 것이 좋습니다. 그러나 수업을 따라 기차/발/테스트 분할을 제안하려면 기여를 환영합니다!
패키지 설치 : pip install easyfsl 하거나 저장소를 단순히 포크로 설치하십시오.
데이터를 다운로드하십시오.
교육 및 평가 스크립트를 설계하십시오. 에피소드 훈련 또는 고전 교육에 예제 노트를 사용할 수 있습니다.
이 프로젝트는 기부금에 매우 개방적입니다! 다양한 방법으로 도울 수 있습니다.
EasyFSL을 사용하여 12 가지 방법을 벤치마킹했습니다. 추론 시간은 사전 추출 된 기능을 사용하여 1000 개 이상의 작업을 계산합니다. 그들은 단지 표시됩니다. 미세 조정 방법에 대한 추론 시간은 미세 조정 단계의 수에 크게 좌우됩니다.
모든 방법 하이퍼 파라미터는이 JSON 파일에 정의됩니다. 그것들은 Miniimagenet 검증 세트에서 선택되었습니다. 이 절차는 make hyperparameter-search 로 재현 할 수 있습니다. 우리는 다른 방법의 적응성을 강조하기 위해 모든 벤치 마크에 Miniimagenet의 초 파라미터를 사용하기로 결정했습니다. 모든 방법은 성능에 해를 끼치는 위업을 제외하고는 L2 기능의 L2 정규화를 사용합니다.
추가 모듈에 대한 훈련 된 가중치를 사용할 수 없으므로 수학 및 관계 네트워크에 대한 결과는 없습니다.
모든 방법은 동일한 백본을 사용합니다. 저자가 제공 한 훈련 된 매개 변수를 사용하여 Custom Resnet12를 사용합니다 (다운로드 : Miniimagenet, Tieredimagenet).
각 열에 대한 최상의 귀납적 및 최상의 형질 전환 결과는 굵게 표시됩니다.
| 방법 | ind / trans | 미니 imagenet 1 샷 | 미니 imagenet 5 샷 | 계층화 된 imagenet 1 샷 | 계층화 된 imagenet 5 샷 | 시간 |
|---|---|---|---|---|---|---|
| 양성자 | 유도 성 | 63.6 | 80.4 | 60.2 | 77.4 | 6S |
| 단순화 | 유도 성 | 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-MAP | 변형 | 76.1 | 84.2 | 71.7 | 80.7 | 39MN40 |
| 팀 | 변형 | 74.3 | 84.2 | 70.7 | 80.7 | 3MN05 |
| 변형 된 양조 튜닝 | 변형 | 63.0 | 80.6 | 59.1 | 77.5 | 30 년대 |
재생산 :
data/models/feat_resnet12_mini_imagenet.pth (Resp. tiered )에 저장하십시오.make extract-all-features-with-resnet12 .make benchmark-mini-imagenet (Resp. tiered )으로 평가 스크립트를 실행하십시오.