DeiT

DeiT (Data-efficient image Transformer) — классификатор на обычном Vision Transformer, обученный только на ImageNet-1k, без дополнительных данных для предобучения. LibreYOLO поставляет размеры tiny, small и base с патчами 16 как замороженный экспонат только для инференса.

Задачи
classify
Размеры
t, s, b at 224 px
Установка
pip install libreyolo
Уровень поддержки
Музей, начиная с v. Замороженный экспонат. Только исправления ошибок.
Исходный проект
DeiT от Meta Research, Apache-2.0. Статья, исходный код
Лицензии
Код: Apache-2.0, веса: Apache-2.0. Коммерческое использование

Установка

DeiT не требует ничего сверх базового пакета.

bash
pip install libreyolo

Предсказание

Это семейство доступно только для инференса: train() выбрасывает NotImplementedError, поэтому на этой странице нет раздела про обучение. Предсказание, валидация и экспорт поддерживаются. Веса скачиваются с Hugging Face при первом запуске и кэшируются локально. Суффикс -cls в имени файла обязателен и выбирает задачу классификации.

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

Возвращаемый объект Results несёт тензор probs, а не boxes; top1 и top5 индексируют 1000 классов ImageNet-1k, а top1conf — это softmax-оценка для лучшего предсказания. У каждого размера своё фиксированное входное разрешение, заданное позиционным эмбеддингом: препроцессинг масштабирует изображение и обрезает его по центру до этого разрешения, а другое значение imgsz приводит к ошибке, а не к молчаливому пересэмплированию. Про источники, стриминг и обработку результатов см. предсказание.

Валидация

val() возвращает словарь с точностью top-1 и top-5, измеренной на датасете, разложенном по обычной структуре папок train/<class>/ и 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

Экспорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: поддерживаетсяclassify to TorchScript: поддерживаетсяclassify to ExecuTorch: поддерживаетсяclassify to TensorRT: поддерживаетсяclassify to OpenVINO: поддерживаетсяclassify to Paddle: не поддерживаетсяclassify to MNN: не поддерживаетсяclassify to RKNN: не поддерживаетсяclassify to ncnn: поддерживаетсяclassify to TFLite: не поддерживаетсяclassify to CoreML: не поддерживаетсяclassify to Core AI: не поддерживается

Экспортированный артефакт загружается обратно через LibreYOLO() по расширению файла, поэтому файл .onnx или .engine ведёт себя как чекпойнт и возвращает тот же Results. Запуск графа в чистой среде выполнения, без установленной LibreYOLO, тоже поддерживается, но тогда препроцессинг и постпроцессинг придётся писать самостоятельно.

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
Использование экспортированного файла
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика выбирает загрузчик по расширению файла, поэтому экспортированный# артефакт загружается как любой чекпойнт и возвращает тот же объект Results.model = LibreYOLO("LibreDeiTb-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Чекпойнты

Все опубликованные файлы весов этого семейства.

ФайлВход (пикс.)Лицензия весов
classify
LibreDeiTt-cls.pt224apache-2.0
LibreDeiTs-cls.pt224apache-2.0
LibreDeiTb-cls.pt224apache-2.0

Все перечисленные выше файлы уже доступны в организации LibreYOLO и скачиваются при первом использовании.

Лицензирование

Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.

Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.

Оригинальная работа
DeiT, Meta Research
Лицензия исходного проекта
Apache-2.0
Исходный код проекта
github.com/facebookresearch/deit
Код LibreYOLO
MIT
Веса
Apache-2.0, повторно опубликованы на huggingface.co/LibreYOLO
Толкование
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.

Цитирование

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

Скопировано из блока цитирования авторов на странице github.com/facebookresearch/deit#-model-zoo.

Проверено с LibreYOLO v1.5.0. Таблицы поддержки, чекпойнты и результаты бенчмарков на этой странице сгенерированы из выпущенной библиотеки и опубликованных весов, а не написаны вручную.