Посмотреть как Markdown

Swin Transformer

Swin Transformer V1 — иерархический vision transformer, который вычисляет внимание внутри сдвинутых локальных окон, а не по всему изображению. LibreYOLO поставляет четыре размера для классификации изображений.

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

Установка

Swin не требует опциональных extra. Всё, что он импортирует, входит в базовую установку.

bash
pip install libreyolo

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

Веса скачиваются с Hugging Face при первом запуске и кэшируются локально.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreSwint-cls.pt")result = model(SAMPLE_IMAGE, save=True) probs = result.probsprint(probs.top1, probs.top1conf)print(probs.top5, probs.top5conf)
CLI
libreyolo predict model=LibreSwint-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Классификатор возвращает result.probs, а не result.boxes: top1 и top5 дают индексы классов, а top1conf и top5conf — их оценки уверенности. У каждого размера вход жёстко зафиксирован на 224px, потому что последняя стадия внимания рассчитана именно на это разрешение; предсказание, валидация и экспорт выбрасывают ошибку, если передать другой imgsz. Про источники, стриминг и обработку результатов см. предсказание.

Варианты

Четыре размера, от tiny до large, построены на одной и той же башне со сдвинутыми окнами и различаются шириной эмбеддинга и глубиной стадий. Размер large предобучен на ImageNet-22k и дообучен на ImageNet-1k; остальные три обучены сразу на ImageNet-1k. LibreYOLO поставляет это семейство только для инференса: предсказание, валидация top-1/top-5 в стиле ImageNet и экспорт поддерживаются, а рецепт обучения на ImageNet из исходного проекта не реализован.

Валидация

val() работает со сплитом в формате ImageFolder (каталог с подпапками train/ и val/, по одной папке на класс) и возвращает top-1 и top-5 accuracy.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwint-cls.pt") # data — это корень каталога со сплитами train/ и val/, разложенными# по папкам классов (структура ImageFolder), а не YAML датасета.metrics = model.val(data="imagenet-1k/") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreSwint-cls.pt data=imagenet-1k/

Экспорт

Задача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. В разделе экспорт перечислены аргументы, которые принимает каждый формат, и те дополнительные, что добавляют некоторые из них.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwint-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreSwint-cls.pt format=onnxlibreyolo export model=LibreSwint-cls.pt format=tensorrt half=True
Использование экспортированного файла
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика выбирает загрузчик по суффиксу файла, поэтому экспортированный# артефакт загружается как обычный чекпойнт и возвращает тот же Results.model = LibreYOLO("LibreSwint-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Чекпойнты

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

ФайлВход (пикс.)Лицензия весов
classify
LibreSwint-cls.pt224mit
LibreSwins-cls.pt224mit
LibreSwinb-cls.pt224mit
LibreSwinl-cls.pt224mit

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

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

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

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

Оригинальная работа
Swin Transformer, Microsoft Research
Лицензия исходного проекта
MIT
Исходный код проекта
github.com/microsoft/Swin-Transformer
Код LibreYOLO
MIT
Веса
MIT, повторно опубликованы на huggingface.co/LibreYOLO
Толкование
MIT is a permissive license, so these weights can be used in commercial and closed-source products. It asks only that you keep the license text and copyright notice with any copy you redistribute, and it carries no explicit patent grant. LibreYOLO's runtime code for this family is a derived port of the Apache-2.0 timm Swin implementation (Ross Wightman, huggingface/pytorch-image-models), kept parameter-name compatible so the tensors load unchanged; the four released Tiny/Small/Base/Large checkpoints are Microsoft's own MIT-licensed patch-4/window-7 classifiers. Code and weights therefore sit under two different permissive licenses, both of which allow commercial use.

Цитирование

@inproceedings{liu2021Swin,
  title={Swin Transformer: Hierarchical Vision Transformer using Shifted Windows},
  author={Liu, Ze and Lin, Yutong and Cao, Yue and Hu, Han and Wei, Yixuan and Zhang, Zheng and Lin, Stephen and Guo, Baining},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
  year={2021}
}

Скопировано из блока цитирования авторов на странице github.com/microsoft/Swin-Transformer#citing-swin-transformer.

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