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.

bash
pip install libreyolo

Vorhersage

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.

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

Das 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>/.

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

Export

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: unterstütztclassify to TorchScript: unterstütztclassify to ExecuTorch: unterstütztclassify to TensorRT: unterstütztclassify to OpenVINO: unterstütztclassify to Paddle: nicht unterstütztclassify to MNN: nicht unterstütztclassify to RKNN: nicht unterstütztclassify to ncnn: unterstütztclassify to TFLite: nicht unterstütztclassify to CoreML: nicht unterstütztclassify 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.

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
Die exportierte Datei nutzen
from 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.

DateiEingabe (px)Lizenz der Gewichte
classify
LibreDeiTt-cls.pt224apache-2.0
LibreDeiTs-cls.pt224apache-2.0
LibreDeiTb-cls.pt224apache-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
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.

Mit LibreYOLO v1.5.0 verifiziert. Supporttabellen, Checkpoints und Benchmarkwerte auf dieser Seite werden aus der veröffentlichten Bibliothek und den publizierten Gewichten generiert und nicht von Hand geschrieben.