DeiT
DeiT (Data-efficient image Transformer) — классификатор на обычном Vision Transformer, обученный только на ImageNet-1k, без дополнительных данных для предобучения. LibreYOLO поставляет размеры tiny, small и base с патчами 16 как замороженный экспонат только для инференса.
- Задачи
- classification
- Размеры
- t, s, b at 224 px
- Установка
pip install libreyolo- Уровень поддержки
- Музей, начиная с v1.5.0. Замороженный экспонат. Только исправления ошибок.
- Исходный проект
- 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Валидация и калибровка INT8 используют преобразование семейства для оценки. Метаданные экспорта записывают norm_mean, norm_std и resize_mode; старые артефакты используют значения семейства. Предобработчики калибровки возвращают требуемые массив CHW и коэффициент масштаба.
Экспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Classification | Classification to ONNX: поддерживается | Classification to TorchScript: поддерживается | Classification to ExecuTorch: поддерживается | Classification to TensorRT: поддерживается | Classification to OpenVINO: поддерживается | Classification to Paddle: не поддерживается | Classification to MNN: не поддерживается | Classification to RKNN: не поддерживается | Classification to ncnn: поддерживается | Classification to TFLite: не поддерживается | Classification to CoreML: не поддерживается | Classification 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)Чекпойнты
Все опубликованные файлы весов этого семейства.
| Файл | Вход (пикс.) | Лицензия весов |
|---|---|---|
| Classification | ||
| 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.