ViT

Le Vision Transformer classique est un transformer pur appliqué à des patchs d'image de taille fixe, avec un token de classe appris et sans convolution. LibreYOLO fournit quatre tailles pré-entraînées avec AugReg pour la classification d'images.

Tâches
classify
Tailles
ti, s, b, l at 224 px
Installer
pip install libreyolo
Niveau de support
Inférence uniquement, depuis v. Prédiction, validation et export uniquement. Les fonctionnalités d'entraînement ne s'appliquent pas.
Origine
ViT par Google Research, Apache-2.0. Article, source
Licences
Code Apache-2.0, poids Apache-2.0. Usage commercial

Installer

ViT ne nécessite aucun extra facultatif. Tous ses imports sont inclus dans l'installation de base.

bash
pip install libreyolo

Prédire

Les poids sont téléchargés depuis Hugging Face à la première utilisation et mis en cache localement.

Python
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)
CLI
libreyolo predict model=LibreViTti-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Un classificateur renvoie result.probs au lieu de result.boxes\u00a0: top1 et top5 donnent les indices de classes, tandis que top1conf et top5conf donnent leurs confiances. Le prétraitement redimensionne l'image et la recadre au centre pour obtenir une entrée fixe de 224\u00a0px, selon la recette d'évaluation AugReg de timm\u00a0: interpolation bicubique avec une fraction de recadrage de 0.9. Consultez la prédiction pour les sources, le streaming et la gestion des résultats.

Variantes

Quatre tailles, de tiny à large, partagent un même graphe patch-16 fixe de 224\u00a0px et se distinguent par la largeur des embeddings et la profondeur du transformer. LibreYOLO fournit cette famille uniquement pour l'inférence\u00a0: la prédiction, la validation top-1/top-5 de type ImageNet et l'export sont pris en charge, mais la recette de fine-tuning AugReg n'est pas implémentée.

Valider

val() s'exécute sur un sous-ensemble de type ImageFolder (un répertoire avec des sous-dossiers train/ et val/, un dossier par classe) et renvoie l'exactitude top-1 et top-5.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreViTti-cls.pt") # data est la racine d'un répertoire avec des sous-ensembles de dossiers par classe# train/ et val/ (structure ImageFolder), et non le YAML d'un dataset.metrics = model.val(data="imagenet-1k/") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreViTti-cls.pt data=imagenet-1k/

Exporter

TâcheONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX : pris en chargeclassify to TorchScript : pris en chargeclassify to ExecuTorch : pris en chargeclassify to TensorRT : pris en chargeclassify to OpenVINO : pris en chargeclassify to Paddle : non pris en chargeclassify to MNN : non pris en chargeclassify to RKNN : non pris en chargeclassify to ncnn : pris en chargeclassify to TFLite : non pris en chargeclassify to CoreML : non pris en chargeclassify to Core AI : non pris en charge

Un artefact exporté se recharge dans LibreYOLO() grâce au suffixe de son fichier. Un fichier .onnx ou .engine se comporte donc comme un checkpoint et renvoie les mêmes Results. La page Export énumère les arguments acceptés par chaque format ainsi que les extras ajoutés par certains.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreViTti-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreViTti-cls.pt format=onnxlibreyolo export model=LibreViTti-cls.pt format=tensorrt half=True
Utiliser le fichier exporté
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La fabrique détermine le chemin selon le suffixe du fichier ; un artefact exporté se charge# donc comme tout checkpoint et renvoie le même objet Results.model = LibreYOLO("LibreViTti-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpoints

Tous les fichiers de poids publiés pour cette famille.

FichierEntrée (px)Licence des poids
classify
LibreViTti-cls.pt224apache-2.0
LibreViTs-cls.pt224apache-2.0
LibreViTb-cls.pt224apache-2.0
LibreViTl-cls.pt224apache-2.0

Tous les fichiers ci-dessus sont actuellement disponibles dans l<link>organisation LibreYOLO</link> et sont téléchargés à la première utilisation.

Licence

Vérifiez la licence dans le dépôt Hugging Face des poids précis que vous téléchargez. Chaque checkpoint de l<link>organisation LibreYOLO</link> en possède une, et elles ne sont pas toujours identiques au sein dune même famille. Ce dépôt fait autorité ; le résumé ci-dessous décrit les conditions applicables lors de la dernière vérification de cette page.

Ceci décrit les licences concernées et ne constitue pas un conseil juridique. Si la réponse a une importance commerciale, lisez vous-même les licences et consultez votre propre avocat.

Travail d'origine
ViT, Google Research
Licence du projet d'origine
Apache-2.0
Code de LibreYOLO
MIT
Poids
Apache-2.0, republiés sur huggingface.co/LibreYOLO
Interprétation
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.

Citation

@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}
}

Copié depuis le bloc de citation des auteurs sur github.com/google-research/vision_transformer#bibtex.

Vérifié avec LibreYOLO v1.5.0. Les tableaux de support, les checkpoints et les chiffres de benchmark de cette page sont générés à partir de la bibliothèque publiée et des poids publiés, et non rédigés à la main.