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 не требует ничего сверх базового пакета.
pip install libreyoloПредсказание
Это семейство доступно только для инференса: train() выбрасывает
NotImplementedError, поэтому на этой странице нет раздела про обучение.
Предсказание, валидация и экспорт поддерживаются. Веса скачиваются с
Hugging Face при первом запуске и кэшируются локально. Суффикс -cls в имени
файла обязателен и выбирает задачу классификации.
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.jpgВозвращаемый объект Results несёт тензор probs, а не boxes; top1 и
top5 индексируют 1000 классов ImageNet-1k, а top1conf — это softmax-оценка
для лучшего предсказания. У каждого размера своё фиксированное входное
разрешение, заданное позиционным эмбеддингом: препроцессинг масштабирует
изображение и обрезает его по центру до этого разрешения, а другое значение
imgsz приводит к ошибке, а не к молчаливому пересэмплированию. Про источники,
стриминг и обработку результатов см. предсказание.
Валидация
val() возвращает словарь с точностью top-1 и top-5, измеренной на датасете,
разложенном по обычной структуре папок train/<class>/ и 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.yamlЭкспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| classify | classify 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, тоже поддерживается, но тогда препроцессинг и постпроцессинг
придётся писать самостоятельно.
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 # Фабрика выбирает загрузчик по расширению файла, поэтому экспортированный# артефакт загружается как любой чекпойнт и возвращает тот же объект Results.model = LibreYOLO("LibreDeiTb-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)Чекпойнты
Все опубликованные файлы весов этого семейства.
| Файл | Вход (пикс.) | Лицензия весов |
|---|---|---|
| classify | ||
| LibreDeiTt-cls.pt | 224 | apache-2.0 |
| LibreDeiTs-cls.pt | 224 | apache-2.0 |
| LibreDeiTb-cls.pt | 224 | apache-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.