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 індексують 1,000 класів 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. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.