SwinIR

Мережа Swin Transformer для відновлення зображень. LibreYOLO постачає інференс і валідацію її контрольних точок 4-кратного надрозрізнення: офіційного легкого генератора, а також генераторів medium і large для реальних зображень.

Задачі
restore
Розміри
s, m, l at 64 px
Встановлення
pip install libreyolo
Рівень підтримки
Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
Першоджерело
SwinIR, автори: Computer Vision Lab, ETH Zurich, ліцензія Apache-2.0. Стаття, джерело
Ліцензії
Код: Apache-2.0, ваги: Apache-2.0. Комерційне використання

Встановлення

SwinIR не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.

bash
pip install libreyolo

Передбачення

Під час першого використання ваги завантажуються з Hugging Face і кешуються локально.

Python
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)
CLI
libreyolo predict model=LibreSwinIRm-restore.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Тайли для великих зображень
from 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, усереднене за трьома колірними каналами.

Python
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"])
CLI
libreyolo val model=LibreSwinIRm-restore.pt data=my-restore-dataset.yaml

Аргумент датасету є YAML, який поєднує каталог деградованих вхідних зображень із каталогом чистих цільових зображень відповідної роздільної здатності. Точні ключі описано у форматах датасетів.

Експорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
restorerestore 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. У розділі експорту наведено аргументи, які приймає кожен формат, і додаткові параметри деяких форматів.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt") # Якщо imgsz пропущено, типовим є малий внутрішній розмір патча, а не# робоча роздільна здатність, тому передайте розмір фактичного входу розгортання.model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True)
CLI
libreyolo export model=LibreSwinIRm-restore.pt format=onnx imgsz=512
Використання експортованого файлу
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)

Контрольні точки

Усі опубліковані файли ваг цього сімейства.

ФайлВхід (пікс.)Ліцензія ваг
restore
LibreSwinIRs-restore.ptapache-2.0
LibreSwinIRm-restore.ptapache-2.0
LibreSwinIRl-restore.ptapache-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.

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