ViT
Der klassische Vision Transformer ist ein reiner Transformer für Bild-Patches fester Größe mit einem gelernten Klassentoken und ohne Faltungen. LibreYOLO stellt vier mit AugReg vortrainierte Größen für die Bildklassifizierung bereit.
- Aufgaben
- classify
- Größen
- ti, s, b, l at 224 px
- Installation
pip install libreyolo- Supportstufe
- Nur Inferenz, seit v. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
- Upstream
- ViT von Google Research, Apache-2.0. Publikation, Quelle
- Lizenzen
- Code Apache-2.0, Gewichte Apache-2.0. Kommerzielle Nutzung
Installation
ViT benötigt kein optionales Extra. Alle Importe sind in der Basisinstallation enthalten.
pip install libreyoloVorhersage
Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen und lokal zwischengespeichert.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreViTti-cls.pt")result = model(SAMPLE_IMAGE, save=True) probs = result.probsprint(probs.top1, probs.top1conf)print(probs.top5, probs.top5conf)libreyolo predict model=LibreViTti-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueEin Klassifikator gibt result.probs statt result.boxes zurück. top1 und top5 enthalten Klassenindizes, top1conf und top5conf die zugehörigen Konfidenzwerte. Die Vorverarbeitung skaliert das Bild und beschneidet es mittig auf eine feste Eingabe von 224 px. Dafür nutzt sie das AugReg-Auswertungsrezept von timm mit bikubischer Interpolation und einem Beschnittfaktor von 0,9. Unter Vorhersage findest du Informationen zu Quellen, Streaming und Ergebnisverarbeitung.
Varianten
Die vier Größen von Tiny bis Large verwenden denselben festen Graphen mit 224 px und Patchgröße 16. Sie unterscheiden sich in Embedding-Breite und Transformer-Tiefe. LibreYOLO stellt diese Familie nur für die Inferenz bereit. Unterstützt werden Vorhersage, Validierung im ImageNet-Stil mit Top-1 und Top-5 sowie Export. Das AugReg-Rezept für das Fine-Tuning ist nicht implementiert.
Validierung
val() arbeitet mit einem Split im ImageFolder-Stil, also einem Verzeichnis mit den Unterordnern train/ und val/ und je einem Ordner pro Klasse. Die Methode gibt die Genauigkeit für Top-1 und Top-5 zurück.
from libreyolo import LibreYOLO model = LibreYOLO("LibreViTti-cls.pt") # data ist ein Verzeichnis mit train/- und val/-Splits aus Klassenordnern# (ImageFolder-Layout), keine Datensatz-YAML-Datei.metrics = model.val(data="imagenet-1k/") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])libreyolo val model=LibreViTti-cls.pt data=imagenet-1k/Export
| 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 wird über seine Dateiendung wieder durch LibreYOLO() geladen. Eine .onnx- oder .engine-Datei verhält sich daher wie ein Checkpoint und gibt dasselbe Results-Objekt zurück. Unter Export findest du die Argumente, die jedes Format akzeptiert, sowie zusätzliche Argumente einzelner Formate.
from libreyolo import LibreYOLO model = LibreYOLO("LibreViTti-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreViTti-cls.pt format=onnxlibreyolo export model=LibreViTti-cls.pt format=tensorrt half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # Die Factory leitet anhand der Dateiendung weiter, daher wird ein exportiertes Artefakt# wie jeder Checkpoint geladen und gibt dasselbe Results-Objekt zurück.model = LibreYOLO("LibreViTti-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)Checkpoints
Alle für diese Familie veröffentlichten Gewichtsdateien.
| Datei | Eingabe (px) | Lizenz der Gewichte |
|---|---|---|
| classify | ||
| LibreViTti-cls.pt | 224 | apache-2.0 |
| LibreViTs-cls.pt | 224 | apache-2.0 |
| LibreViTb-cls.pt | 224 | apache-2.0 |
| LibreViTl-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
- ViT, Google Research
- Upstream-Lizenz
- Apache-2.0
- Upstream-Quelle
- github.com/google-research/vision_transformer
- 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. LibreYOLO's runtime code for this family is a derived port of the Apache-2.0 timm Vision Transformer implementation (Ross Wightman, huggingface/pytorch-image-models), kept checkpoint-compatible with the shipped tensors. The four AugReg checkpoints themselves are timm's Apache-2.0 conversion of Google Research's own AugReg pretraining, so the code and the weights carry the same permissive terms end to end.
Zitieren
@article{dosovitskiy2020vit,
title={An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale},
author={Dosovitskiy, Alexey and Beyer, Lucas and Kolesnikov, Alexander and Weissenborn, Dirk and Zhai, Xiaohua and Unterthiner, Thomas and Dehghani, Mostafa and Minderer, Matthias and Heigold, Georg and Gelly, Sylvain and Uszkoreit, Jakob and Houlsby, Neil},
journal={ICLR},
year={2021}
}
@article{steiner2021augreg,
title={How to train your ViT? Data, Augmentation, and Regularization in Vision Transformers},
author={Steiner, Andreas and Kolesnikov, Alexander and and Zhai, Xiaohua and Wightman, Ross and Uszkoreit, Jakob and Beyer, Lucas},
journal={arXiv preprint arXiv:2106.10270},
year={2021}
}Aus dem Zitierblock der Autoren unter github.com/google-research/vision_transformer#bibtex kopiert.