DeiT
DeiT (Data-efficient image Transformer) es un clasificador Vision Transformer puro entrenado únicamente con ImageNet-1k, sin datos de preentrenamiento adicionales. LibreYOLO incluye los tamaños tiny, small y base con patch-16 como una pieza de museo congelada y solo de inferencia.
- Tareas
- classify
- Tamaños
- t, s, b at 224 px
- Instalación
pip install libreyolo- Nivel de compatibilidad
- Museo, desde v. Pieza de exposición congelada. Solo se corrigen errores.
- Licencias
- Código Apache-2.0, pesos Apache-2.0. Uso comercial
Instalación
DeiT no necesita ningún extra más allá del paquete base.
pip install libreyoloPredicción
Esta familia es solo de inferencia: train() lanza NotImplementedError, así
que esta página no tiene sección de entrenamiento. La predicción, la validación
y la exportación sí están soportadas. Los pesos se descargan de Hugging Face en
el primer uso y se guardan en la caché local. El sufijo -cls del nombre de
archivo es obligatorio y selecciona la tarea de clasificación.
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.jpgEl objeto Results que se devuelve lleva un tensor probs en lugar de
boxes; top1 y top5 indexan las 1.000 clases de ImageNet-1k y top1conf
es la puntuación softmax de la predicción principal. Cada tamaño tiene una
resolución de entrada fija que viene de su positional embedding: el
preprocesado redimensiona y recorta al centro hasta esa resolución, y pasar un
imgsz distinto lanza un error en lugar de remuestrear en silencio. Consulta
predicción para fuentes, streaming y manejo de resultados.
Validación
val() devuelve un diccionario con la precisión top-1 y top-5, medida sobre un
dataset organizado en la estructura de carpetas convencional train/<class>/ y
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.yamlExportación
| Tarea | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| classify | classify to ONNX: compatible | classify to TorchScript: compatible | classify to ExecuTorch: compatible | classify to TensorRT: compatible | classify to OpenVINO: compatible | classify to Paddle: no compatible | classify to MNN: no compatible | classify to RKNN: no compatible | classify to ncnn: compatible | classify to TFLite: no compatible | classify to CoreML: no compatible | classify to Core AI: no compatible |
Un artefacto exportado se vuelve a cargar con LibreYOLO() según su extensión
de archivo, así que un archivo .onnx o .engine se comporta como un
checkpoint y devuelve el mismo Results. Ejecutar el grafo en un runtime
pelado, sin LibreYOLO instalado, también está soportado, pero entonces el
preprocesado y el postprocesado corren de tu cuenta.
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 # La factoría enruta según la extensión del archivo, así que un artefacto# exportado se carga como cualquier checkpoint y devuelve el mismo objeto# Results.model = LibreYOLO("LibreDeiTb-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)Checkpoints
Todos los archivos de pesos publicados de esta familia.
| Archivo | Entrada (px) | Licencia de los pesos |
|---|---|---|
| classify | ||
| LibreDeiTt-cls.pt | 224 | apache-2.0 |
| LibreDeiTs-cls.pt | 224 | apache-2.0 |
| LibreDeiTb-cls.pt | 224 | apache-2.0 |
Todos los archivos anteriores existen hoy en la organización de LibreYOLO y se descargan la primera vez que se usan.
Licencia
Comprueba la licencia en el repositorio de Hugging Face de los pesos concretos que descargues. Cada checkpoint de la organización de LibreYOLO incluye una, y no siempre es la misma en toda una familia. Ese repositorio es la fuente autorizada; el resumen siguiente describe qué se aplicaba cuando se verificó esta página por última vez.
Esta es una descripción de las licencias implicadas, no asesoramiento legal. Si la respuesta es importante a nivel comercial, lee las licencias y busca tu propio asesoramiento.
- Trabajo original
- DeiT, Meta Research
- Licencia del proyecto original
- Apache-2.0
- Fuente del proyecto original
- github.com/facebookresearch/deit
- Código de LibreYOLO
- MIT
- Pesos
- Apache-2.0, republicados en huggingface.co/LibreYOLO
- Interpretación
- 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
@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 del bloque de cita de los autores en github.com/facebookresearch/deit#-model-zoo.