Swin Transformer
Swin Transformer V1 є ієрархічним візуальним трансформером, який обчислює увагу всередині зміщених локальних вікон, а не на всьому зображенні. LibreYOLO постачає чотири розміри для класифікації зображень.
- Задачі
- classify
- Розміри
- t, s, b, l at 224 px
- Встановлення
pip install libreyolo- Рівень підтримки
- Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
- Ліцензії
- Код: Apache-2.0, ваги: MIT. Комерційне використання
Встановлення
Swin не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.
pip install libreyoloПередбачення
Під час першого використання ваги завантажуються з Hugging Face і кешуються локально.
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)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.
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"])libreyolo val model=LibreSwint-cls.pt data=imagenet-1k/Експорт
| Задача | 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. У розділі
експорту наведено аргументи, які приймає кожен формат, і
додаткові параметри деяких форматів.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwint-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreSwint-cls.pt format=onnxlibreyolo export model=LibreSwint-cls.pt format=tensorrt half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreSwint-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)Контрольні точки
Усі опубліковані файли ваг цього сімейства.
| Файл | Вхід (пікс.) | Ліцензія ваг |
|---|---|---|
| classify | ||
| LibreSwint-cls.pt | 224 | mit |
| LibreSwins-cls.pt | 224 | mit |
| LibreSwinb-cls.pt | 224 | mit |
| LibreSwinl-cls.pt | 224 | mit |
Кожен наведений вище файл уже доступний у організації 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.