DeiT
DeiT (Data-efficient image Transformer) ist ein schlichter Vision-Transformer-Klassifikator, der allein auf ImageNet-1k trainiert wurde, ohne zusätzliche Vortrainingsdaten. LibreYOLO führt die Patch-16-Größen tiny, small und base als eingefrorenes Ausstellungsstück, nur für die Inferenz.
- Aufgaben
- classify
- Größen
- t, s, b at 224 px
- Installation
pip install libreyolo- Supportstufe
- Museum, seit v. Eingefrorenes Ausstellungsstück. Nur Fehlerbehebungen.
- Upstream
- DeiT von Meta Research, Apache-2.0. Publikation, Quelle
- Lizenzen
- Code Apache-2.0, Gewichte Apache-2.0. Kommerzielle Nutzung
Installation
DeiT braucht nichts über das Basispaket hinaus.
pip install libreyoloVorhersage
Diese Familie ist reine Inferenz: train() löst NotImplementedError aus,
deshalb hat diese Seite keinen Abschnitt zum Training. Vorhersage, Validierung
und Export werden alle unterstützt. Die Gewichte werden beim ersten Aufruf von
Hugging Face geladen und lokal zwischengespeichert. Das Suffix -cls im
Dateinamen ist Pflicht und wählt die Klassifikationsaufgabe aus.
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.jpgDas zurückgegebene Results-Objekt trägt einen probs-Tensor statt boxes;
top1 und top5 indizieren die 1000 Klassen von ImageNet-1k, und top1conf
ist der Softmax-Score der besten Vorhersage. Jede Größe hat eine feste
Eingabeauflösung, die aus ihrem Positional Embedding folgt: die Vorverarbeitung
skaliert darauf und schneidet mittig zu, und ein abweichendes imgsz löst
einen Fehler aus, statt still neu abzutasten. Siehe
Vorhersage für Quellen, Streaming und die Weiterverarbeitung
der Ergebnisse.
Validierung
val() liefert ein Dictionary mit Top-1- und Top-5-Accuracy, gemessen gegen
einen Datensatz in der üblichen Ordnerstruktur aus train/<class>/ und
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.yamlExport
| Aufgabe | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| classify | classify to ONNX: unterstützt | classify to TorchScript: unterstützt | classify to ExecuTorch: unterstützt | classify to TensorRT: unterstützt | classify to OpenVINO: unterstützt | classify to Paddle: nicht unterstützt | classify to MNN: nicht unterstützt | classify to RKNN: nicht unterstützt | classify to ncnn: unterstützt | classify to TFLite: nicht unterstützt | classify to CoreML: nicht unterstützt | classify to Core AI: nicht unterstützt |
Ein exportiertes Artefakt lädt über LibreYOLO() anhand seiner Dateiendung
wieder zurück, eine .onnx- oder .engine-Datei verhält sich also wie ein
Checkpoint und liefert dasselbe Results. Den Graphen in einer nackten Runtime
auszuführen, ganz ohne installiertes LibreYOLO, wird ebenfalls unterstützt,
dann musst du Vor- und Nachverarbeitung aber selbst schreiben.
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 # Die Factory entscheidet anhand der Dateiendung, ein exportiertes# Artefakt lädt also wie jeder Checkpoint und liefert dasselbe Results.model = LibreYOLO("LibreDeiTb-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)Checkpoints
Jede veröffentlichte Gewichtsdatei dieser Familie.
| Datei | Eingabe (px) | Lizenz der Gewichte |
|---|---|---|
| classify | ||
| LibreDeiTt-cls.pt | 224 | apache-2.0 |
| LibreDeiTs-cls.pt | 224 | apache-2.0 |
| LibreDeiTb-cls.pt | 224 | apache-2.0 |
Jede oben aufgeführte Datei ist heute in der LibreYOLO-Organisation verfügbar und wird bei der ersten Verwendung heruntergeladen.
Lizenzierung
Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.
Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.
- Originalarbeit
- DeiT, Meta Research
- Upstream-Lizenz
- Apache-2.0
- Upstream-Quelle
- github.com/facebookresearch/deit
- LibreYOLO-Code
- MIT
- Gewichte
- Apache-2.0, erneut unter huggingface.co/LibreYOLO veröffentlicht
- Einordnung
- 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.
Zitieren
@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}
}Aus dem Zitierblock der Autoren unter github.com/facebookresearch/deit#-model-zoo kopiert.