DeiT

DeiT (Data-efficient image Transformer) é um classificador Vision Transformer puro treinado apenas com o ImageNet-1k, sem dados extras de pré-treinamento. O LibreYOLO traz os tamanhos tiny, small e base com patch-16 como uma peça de museu congelada e somente para inferência.

Tarefas
classify
Tamanhos
t, s, b at 224 px
Instalação
pip install libreyolo
Nível de suporte
Museu, desde a v. Exposição congelada. Somente correções de bugs.
Origem
DeiT por Meta Research, Apache-2.0. Artigo, código-fonte
Licenças
Código Apache-2.0, pesos Apache-2.0. Uso comercial

Instalação

O DeiT não precisa de nenhum extra além do pacote base.

bash
pip install libreyolo

Predição

Esta família é somente para inferência: train() levanta NotImplementedError, então esta página não tem seção de treinamento. Predição, validação e exportação são todas suportadas. Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache local. O sufixo -cls no nome do arquivo é obrigatório e seleciona a tarefa de classificação.

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

O objeto Results devolvido carrega um tensor probs em vez de boxes; top1 e top5 indexam as 1.000 classes do ImageNet-1k e top1conf é o score softmax da predição principal. Cada tamanho tem uma resolução de entrada fixa, vinda do seu positional embedding: o pré-processamento redimensiona e faz um recorte central até ela, e passar um imgsz diferente levanta um erro em vez de reamostrar em silêncio. Veja predição para fontes, streaming e tratamento de resultados.

Validação

val() devolve um dicionário com a acurácia top-1 e top-5, medida sobre um dataset organizado na estrutura de pastas convencional train/<class>/ e 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

Exportação

TarefaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: compatívelclassify to TorchScript: compatívelclassify to ExecuTorch: compatívelclassify to TensorRT: compatívelclassify to OpenVINO: compatívelclassify to Paddle: incompatívelclassify to MNN: incompatívelclassify to RKNN: incompatívelclassify to ncnn: compatívelclassify to TFLite: incompatívelclassify to CoreML: incompatívelclassify to Core AI: incompatível

Um artefato exportado é carregado de volta pelo LibreYOLO() a partir da extensão do arquivo, então um arquivo .onnx ou .engine se comporta como um checkpoint e devolve o mesmo Results. Rodar o grafo em um runtime pelado, sem o LibreYOLO instalado, também é suportado, mas aí o pré-processamento e o pós-processamento ficam por sua conta.

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
Usar o arquivo exportado
from libreyolo import LibreYOLO, SAMPLE_IMAGE # A factory decide pela extensão do arquivo, então um artefato exportado# carrega como qualquer checkpoint e devolve o mesmo objeto Results.model = LibreYOLO("LibreDeiTb-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpoints

Todos os arquivos de pesos publicados desta família.

ArquivoEntrada (px)Licença dos pesos
classify
LibreDeiTt-cls.pt224apache-2.0
LibreDeiTs-cls.pt224apache-2.0
LibreDeiTb-cls.pt224apache-2.0

Todos os arquivos acima existem hoje na organização LibreYOLO e são baixados no primeiro uso.

Licenciamento

Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.

Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.

Trabalho original
DeiT, Meta Research
Licença original
Apache-2.0
Código-fonte original
github.com/facebookresearch/deit
Código do LibreYOLO
MIT
Pesos
Apache-2.0, republicado em huggingface.co/LibreYOLO
Interpretação
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.

Citação

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

Copiado do bloco de citação dos autores em github.com/facebookresearch/deit#-model-zoo.

Verificado com o LibreYOLO v1.5.0. As tabelas de suporte, os checkpoints e os números de benchmark desta página são gerados a partir da biblioteca lançada e dos pesos publicados, não escritos à mão.