DeiT

DeiT (Data-efficient image Transformer) jest zwykłym klasyfikatorem Vision Transformer trenowanym wyłącznie na ImageNet-1k, bez dodatkowych danych do wstępnego treningu. LibreYOLO zawiera wersje tiny, small i base o rozmiarze patch-16 jako zamrożone modele przeznaczone wyłącznie do inferencji.

Zadania
classify
Rozmiary
t, s, b at 224 px
Instalacja
pip install libreyolo
Poziom obsługi
Muzealny, od wersji v. Zamrożony eksponat. Tylko poprawki błędów.
Projekt źródłowy
DeiT, autorzy: Meta Research, licencja: Apache-2.0. Publikacja, kod źródłowy
Licencje
Kod: Apache-2.0, wagi: Apache-2.0. Użycie komercyjne

Instalacja

DeiT nie potrzebuje niczego dodatkowego poza podstawowym pakietem.

bash
pip install libreyolo

Predykcja

Ta rodzina służy wyłącznie do inferencji. Metoda train() zgłasza NotImplementedError, dlatego na tej stronie nie ma sekcji Trenowanie. Obsługiwane są predykcja, walidacja i eksport. Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane lokalnie w pamięci podręcznej. Wymagany sufiks nazwy pliku -cls wybiera zadanie klasyfikacji.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDeiTb-cls.pt")result = model(SAMPLE_IMAGE) print(result.probs.top1, result.probs.top1conf)print(result.probs.top5)
CLI
libreyolo predict model=LibreDeiTb-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg

Zwracany obiekt Results zawiera tensor probs zamiast boxes. Pola top1 i top5 indeksują 1000 klas ImageNet-1k, a top1conf jest wynikiem softmax dla najlepszej predykcji. Każdy rozmiar ma stałą rozdzielczość wejściową wynikającą z embeddingu pozycyjnego. Przetwarzanie wstępne zmienia rozmiar i wykonuje kadrowanie centralne do tej rozdzielczości, natomiast podanie innego imgsz zgłasza błąd zamiast niejawnie przeskalować dane. Zobacz stronę predykcji, aby poznać źródła, streaming i obsługę wyników.

Walidacja

val() zwraca słownik z dokładnością top-1 i top-5, mierzony względem zbioru danych ułożonego w konwencjonalnej strukturze folderów train/<class>/ i val/<class>/.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeiTb-cls.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreDeiTb-cls.pt data=my-dataset.yaml

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: obsługiwaneclassify to TorchScript: obsługiwaneclassify to ExecuTorch: obsługiwaneclassify to TensorRT: obsługiwaneclassify to OpenVINO: obsługiwaneclassify to Paddle: brak obsługiclassify to MNN: brak obsługiclassify to RKNN: brak obsługiclassify to ncnn: obsługiwaneclassify to TFLite: brak obsługiclassify to CoreML: brak obsługiclassify to Core AI: brak obsługi

Eksportowany artefakt ładuje się z powrotem przez LibreYOLO() na podstawie jego rozszerzenia pliku, więc plik .onnx lub .engine zachowuje się jak checkpoint i zwraca ten sam Results. Uruchamianie grafu w środowisku uruchomieniowym bez żadnego zainstalowanego LibreYOLO jest również obsługiwane, ale wtedy wstępne i końcowe przetwarzanie należy napisać samodzielnie.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeiTb-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreDeiTb-cls.pt format=onnxlibreyolo export model=LibreDeiTb-cls.pt format=tensorrt half=True
Użyj wyeksportowanego pliku
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Fabryka kieruje na podstawie rozszerzenia pliku, więc eksportowany artefakt się ładuje# jak każdy checkpoint i zwraca ten sam obiekt Results.model = LibreYOLO("LibreDeiTb-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpointy

Wszystkie opublikowane pliki wag dla tej rodziny.

PlikWejście (px)Licencja wag
classify
LibreDeiTt-cls.pt224apache-2.0
LibreDeiTs-cls.pt224apache-2.0
LibreDeiTb-cls.pt224apache-2.0

Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.

Licencjonowanie

Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.

To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.

Oryginalna praca
DeiT, Meta Research
Licencja projektu źródłowego
Apache-2.0
Kod źródłowy projektu
github.com/facebookresearch/deit
Kod LibreYOLO
MIT
Wagi
Apache-2.0, ponownie opublikowane w huggingface.co/LibreYOLO
Interpretacja
Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code, and weights you train yourself on your own data are yours. LibreYOLO ships the plain tiny, small and base patch-16 classifiers at fixed 224px only; the distillation-token, CaiT, DeiT III and 384px variants from the same repository are out of scope.

Cytowanie

@InProceedings{pmlr-v139-touvron21a,
  title =     {Training data-efficient image transformers & distillation through attention},
  author =    {Touvron, Hugo and Cord, Matthieu and Douze, Matthijs and Massa, Francisco and Sablayrolles, Alexandre and Jegou, Herve},
  booktitle = {International Conference on Machine Learning},
  pages =     {10347--10357},
  year =      {2021},
  volume =    {139},
  month =     {July}
}

Skopiowano z bloku cytowania autorów w github.com/facebookresearch/deit#-model-zoo.

Zweryfikowano z LibreYOLO v1.5.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.