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.
pip install libreyoloPredykcja
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.
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)libreyolo predict model=LibreDeiTb-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpgZwracany 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>/.
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"])libreyolo val model=LibreDeiTb-cls.pt data=my-dataset.yamlEksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| classify | classify to ONNX: obsługiwane | classify to TorchScript: obsługiwane | classify to ExecuTorch: obsługiwane | classify to TensorRT: obsługiwane | classify to OpenVINO: obsługiwane | classify to Paddle: brak obsługi | classify to MNN: brak obsługi | classify to RKNN: brak obsługi | classify to ncnn: obsługiwane | classify to TFLite: brak obsługi | classify to CoreML: brak obsługi | classify 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeiTb-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreDeiTb-cls.pt format=onnxlibreyolo export model=LibreDeiTb-cls.pt format=tensorrt half=Truefrom 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.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| classify | ||
| LibreDeiTt-cls.pt | 224 | apache-2.0 |
| LibreDeiTs-cls.pt | 224 | apache-2.0 |
| LibreDeiTb-cls.pt | 224 | apache-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.