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.
pip install libreyoloPrediçã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.
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)libreyolo predict model=LibreDeiTb-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpgO 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>/.
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"])libreyolo val model=LibreDeiTb-cls.pt data=my-dataset.yamlExportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| classify | classify to ONNX: compatível | classify to TorchScript: compatível | classify to ExecuTorch: compatível | classify to TensorRT: compatível | classify to OpenVINO: compatível | classify to Paddle: incompatível | classify to MNN: incompatível | classify to RKNN: incompatível | classify to ncnn: compatível | classify to TFLite: incompatível | classify to CoreML: incompatível | classify 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeiTb-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreDeiTb-cls.pt format=onnxlibreyolo export model=LibreDeiTb-cls.pt format=tensorrt half=Truefrom 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.
| Arquivo | Entrada (px) | Licença dos pesos |
|---|---|---|
| classify | ||
| LibreDeiTt-cls.pt | 224 | apache-2.0 |
| LibreDeiTs-cls.pt | 224 | apache-2.0 |
| LibreDeiTb-cls.pt | 224 | apache-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.