ViT

Il classico Vision Transformer: un transformer puro applicato a patch di immagine di dimensione fissa, con un class token appreso e senza convoluzioni. LibreYOLO include quattro dimensioni preaddestrate con AugReg per la classificazione di immagini.

Task
classify
Dimensioni
ti, s, b, l at 224 px
Installa
pip install libreyolo
Livello di supporto
Solo inferenza, dalla v. Solo predizione, validazione ed esportazione. Le funzionalità di addestramento non si applicano.
Origine
ViT di Google Research, Apache-2.0. Articolo, sorgente
Licenze
Codice Apache-2.0, pesi Apache-2.0. Uso commerciale

Installazione

ViT non richiede nessun extra opzionale. Tutto quello che importa è già nell'installazione base.

bash
pip install libreyolo

Predizione

I pesi vengono scaricati da Hugging Face al primo utilizzo e restano nella cache locale.

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 classificatore restituisce result.probs invece di result.boxes: top1 e top5 danno gli indici delle classi, top1conf e top5conf le rispettive confidenze. Il preprocessing ridimensiona e ritaglia al centro fino a un input fisso da 224px, seguendo la ricetta di valutazione AugReg di timm: interpolazione bicubica con una crop fraction di 0.9. Vedi predizione per sorgenti, streaming e gestione dei risultati.

Varianti

Quattro dimensioni, da tiny a large, che condividono un unico grafo fisso a 224px con patch 16 e differiscono per larghezza dell'embedding e profondità del transformer. LibreYOLO include questa famiglia solo per l'inferenza: predizione, validazione top-1/top-5 in stile ImageNet ed esportazione sono supportate, mentre la ricetta di fine-tuning di AugReg non è implementata.

Validazione

val() gira su uno split in stile ImageFolder (una cartella con le sottocartelle train/ e val/, una cartella per classe) e restituisce l'accuratezza top-1 e top-5.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreViTti-cls.pt") # data è la cartella radice con gli split train/ e val/ organizzati in# cartelle per classe (struttura ImageFolder), non uno YAML di 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/

Esportazione

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: supportatoclassify to TorchScript: supportatoclassify to ExecuTorch: supportatoclassify to TensorRT: supportatoclassify to OpenVINO: supportatoclassify to Paddle: non supportatoclassify to MNN: non supportatoclassify to RKNN: non supportatoclassify to ncnn: supportatoclassify to TFLite: non supportatoclassify to CoreML: non supportatoclassify to Core AI: non supportato

Un artefatto esportato si ricarica con LibreYOLO() in base al suffisso del file, quindi un file .onnx o .engine si comporta come un checkpoint e restituisce lo stesso Results. Esportazione elenca gli argomenti accettati da ogni formato e quelli in più che alcuni aggiungono.

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
Usare il file esportato
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory smista in base al suffisso del file: un artefatto esportato# si carica come qualsiasi checkpoint e restituisce lo stesso Results.model = LibreYOLO("LibreViTti-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpoint

Tutti i file di pesi pubblicati per questa famiglia.

FileIngresso (px)Licenza dei pesi
classify
LibreViTti-cls.pt224apache-2.0
LibreViTs-cls.pt224apache-2.0
LibreViTb-cls.pt224apache-2.0
LibreViTl-cls.pt224apache-2.0

Oggi tutti i file elencati sopra sono presenti nell<link>organizzazione LibreYOLO</link> e vengono scaricati al primo utilizzo.

Licenze

Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.

Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.

Lavoro originale
ViT, Google Research
Licenza upstream
Apache-2.0
Codice LibreYOLO
MIT
Pesi
Apache-2.0, ripubblicati su huggingface.co/LibreYOLO
Interpretazione
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.

Citazione

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

Copiato dal blocco di citazione degli autori disponibile su github.com/google-research/vision_transformer#bibtex.

Verificato con LibreYOLO v1.5.0. Le tabelle di supporto, i checkpoint e i dati dei benchmark in questa pagina vengono generati dalla libreria rilasciata e dai pesi pubblicati, non scritti a mano.