SwinIR
Мережа Swin Transformer для відновлення зображень. LibreYOLO постачає інференс і валідацію її контрольних точок 4-кратного надрозрізнення: офіційного легкого генератора, а також генераторів medium і large для реальних зображень.
- Задачі
- restore
- Розміри
- s, m, l at 64 px
- Встановлення
pip install libreyolo- Рівень підтримки
- Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
- Ліцензії
- Код: Apache-2.0, ваги: Apache-2.0. Комерційне використання
Встановлення
SwinIR не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.
pip install libreyoloПередбачення
Під час першого використання ваги завантажуються з Hugging Face і кешуються локально.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreSwinIRm-restore.pt")result = model(SAMPLE_IMAGE, save=True) restored = result.restoredprint(restored.array.shape, restored.array.dtype)libreyolo predict model=LibreSwinIRm-restore.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRl-restore.pt") # tile ділить прямий прохід на тайли з перекриттям і змішує стики;# tile_pad є ореолом навколо кожного тайла, який потім обрізається.# Обидва є аргументами лише Python, а не прапорцями CLI.result = model("large-photo.jpg", tile=512, tile_pad=16, save=True)Результат відновлення не містить рамок; result.restored є щільним
RGB-зображенням uint8 (H, W, 3) на полотні, яке в 4 рази більше за вхід у
кожному вимірі. save=True записує безпосередньо це зображення, а не
анотований графік. Вхід доповнюється до кратного 8 замість зміни розміру, тому
передбачення працює з власною роздільною здатністю фотографії. Джерело,
більше за доступну пам'ять, можна поділити за допомогою tile і tile_pad,
які змішують стики тайлів у виході. Типи джерел, потокове передбачення та
обробку результатів описано в розділі
передбачення.
Варіанти
Доступні три розміри, усі з фіксованим 4-кратним збільшенням. s є
офіційним легким генератором із чотирма етапами залишкових блоків Swin
Transformer (RSTB) і прямим підвищенням роздільної здатності через
pixel-shuffle. m і l є генераторами medium і large для реальних
зображень із шістьма та дев'ятьма етапами RSTB і модулем підвищення роздільної
здатності на основі найближчого сусіда зі згорткою, створеним для реальних
деградацій, а не лише бікубічного зменшення.
Валідація
val() вимірює PSNR і SSIM між відновленим виходом і чистим цільовим
зображенням. Обидві метрики обчислюються в RGB на початковому полотні без
обрізання меж і зміни розміру. SSIM використовує гаусове вікно 11x11 із
сигмою 1.5, усереднене за трьома колірними каналами.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt")metrics = model.val(data="my-restore-dataset.yaml") print(metrics["metrics/PSNR"])print(metrics["metrics/SSIM"])libreyolo val model=LibreSwinIRm-restore.pt data=my-restore-dataset.yamlАргумент датасету є YAML, який поєднує каталог деградованих вхідних зображень із каталогом чистих цільових зображень відповідної роздільної здатності. Точні ключі описано у форматах датасетів.
Експорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| restore | restore to ONNX: підтримується | restore to TorchScript: підтримується | restore to ExecuTorch: не підтримується | restore to TensorRT: підтримується | restore to OpenVINO: підтримується | restore to Paddle: не підтримується | restore to MNN: не підтримується | restore to RKNN: не підтримується | restore to ncnn: не підтримується | restore to TFLite: підтримується | restore to CoreML: не підтримується | restore to Core AI: не підтримується |
Експортований артефакт знову завантажується через LibreYOLO() відповідно до
суфікса файлу, тому файл .onnx або .engine поводиться як контрольна
точка й повертає той самий об'єкт Results. ExecuTorch і всі формати,
позначені в матриці як заблоковані, недоступні для цього сімейства; доступні
ONNX, TorchScript, TensorRT, OpenVINO та TFLite. У розділі
експорту наведено аргументи, які приймає кожен формат, і
додаткові параметри деяких форматів.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt") # Якщо imgsz пропущено, типовим є малий внутрішній розмір патча, а не# робоча роздільна здатність, тому передайте розмір фактичного входу розгортання.model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True)libreyolo export model=LibreSwinIRm-restore.pt format=onnx imgsz=512from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)Контрольні точки
Усі опубліковані файли ваг цього сімейства.
| Файл | Вхід (пікс.) | Ліцензія ваг |
|---|---|---|
| restore | ||
| LibreSwinIRs-restore.pt | apache-2.0 | |
| LibreSwinIRm-restore.pt | apache-2.0 | |
| LibreSwinIRl-restore.pt | apache-2.0 | |
Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.
Ліцензування
Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.
Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.
- Оригінальна робота
- SwinIR, Computer Vision Lab, ETH Zurich
- Ліцензія першоджерела
- Apache-2.0
- Джерело першоджерела
- github.com/JingyunLiang/SwinIR
- Код 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. LibreYOLO's checkpoints are format conversions of the official pretrained generators, with the learned parameters unchanged; SwinIR's real-world variants need a degradation and GAN training pipeline that is not wired into this library, so there is no LibreYOLO-trained variant to license separately.
Цитування
@article{liang2021swinir,
title={SwinIR: Image Restoration Using Swin Transformer},
author={Liang, Jingyun and Cao, Jiezhang and Sun, Guolei and Zhang, Kai and Van Gool, Luc and Timofte, Radu},
journal={arXiv preprint arXiv:2108.10257},
year={2021}
}Скопійовано з блоку цитування авторів на сторінці github.com/JingyunLiang/SwinIR#citation.