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

Real-ESRGAN

Практичный апскейлер для слепого увеличения разрешения, обученный на синтетических искажениях, а не только на бикубическом уменьшении. В LibreYOLO есть инференс и валидация для чекпойнтов 4x, 2x и быстрого 4x.

Задачи
restore
Размеры
x4, x2, x4t at 64 px
Установка
pip install libreyolo
Уровень поддержки
Только инференс, начиная с v. Только предсказание, валидация и экспорт. Функции обучения неприменимы.
Исходный проект
Real-ESRGAN от Tencent ARC Lab and Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences, BSD-3-Clause. Статья, исходный код
Лицензии
Код: Apache-2.0 and BSD-3-Clause, веса: BSD-3-Clause. Коммерческое использование

Установка

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

bash
pip install libreyolo

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

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

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreRealESRGANx4-restore.pt")result = model(SAMPLE_IMAGE, save=True) restored = result.restoredprint(restored.array.shape, restored.array.dtype)
CLI
libreyolo predict model=LibreRealESRGANx4-restore.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Потайловый инференс для больших изображений
from libreyolo import LibreYOLO model = LibreYOLO("LibreRealESRGANx4-restore.pt") # tile разбивает прямой проход на перекрывающиеся тайлы и сглаживает# стыки между ними; tile_pad — это поля вокруг каждого тайла, которые# потом обрезаются обратно. Оба параметра есть только как именованные# аргументы в Python, а не как флаги CLI.result = model("large-photo.jpg", tile=512, tile_pad=10, save=True)

В результате восстановления нет рамок; result.restored — плотное RGB-изображение (H, W, 3) типа uint8 на холсте, который по каждому измерению в Results.restore_scale раз больше входного. save=True записывает это изображение напрямую, а не картинку с аннотациями. Вход преобразуется в RGB, альфа-канал, если он есть, отбрасывается. Источник, который не помещается в память, можно разбить с помощью tile и tile_pad — они же сглаживают стыки тайлов в итоговом изображении. Об источниках, стриминге и обработке результатов — в разделе предсказание.

Варианты

Три чекпойнта, названные по коэффициенту увеличения. x4 — это RRDBNet (RealESRGAN_x4plus), 23 блока residual-in-residual dense, вариант по умолчанию для качества при 4x. x2 — та же архитектура RRDBNet при 2x. x4t — это SRVGGNetCompact (realesr-general-x4v3), меньший и более быстрый генератор, рассчитанный на видео и работу с меньшей задержкой при 4x. В исходном проекте у универсальной модели есть ещё парная сеть силы шумоподавления, которая подмешивается на инференсе; в этом порте такой регулировки нет — он запускает базовый генератор x4t.

Валидация

val() считает PSNR и SSIM между восстановленным изображением и чистым эталоном; обе метрики вычисляются в RGB на исходном холсте, без обрезки краёв и без масштабирования. SSIM использует гауссово окно 11x11 с сигмой 1.5 и усредняется по трём цветовым каналам.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreRealESRGANx4-restore.pt")metrics = model.val(data="my-restore-dataset.yaml") print(metrics["metrics/PSNR"])print(metrics["metrics/SSIM"])
CLI
libreyolo val model=LibreRealESRGANx4-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. В разделе экспорт перечислены аргументы, которые принимает каждый формат, и дополнительные, которые добавляют некоторые из них.

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

Чекпойнты

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

ФайлВход (пикс.)Лицензия весов
restore
LibreRealESRGANx4t-restore.ptbsd-3-clause
LibreRealESRGANx4-restore.ptbsd-3-clause
LibreRealESRGANx2-restore.ptbsd-3-clause

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

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

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

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

Оригинальная работа
Real-ESRGAN, Tencent ARC Lab and Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences
Лицензия исходного проекта
BSD-3-Clause
Исходный код проекта
github.com/xinntao/Real-ESRGAN
Код LibreYOLO
MIT
Веса
BSD-3-Clause, повторно опубликованы на huggingface.co/LibreYOLO
Толкование
BSD-3-Clause is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep the copyright notice, the condition list and the disclaimer with any copy you redistribute, in source or compiled form, and its third clause forbids using the names of Xintao Wang or the project's contributors to endorse or promote a derived product without separate written permission. It carries no patent grant, unlike Apache-2.0. LibreYOLO's checkpoints are format conversions of the official pretrained generators, with the learned parameters unchanged; Real-ESRGAN's training is a GAN over a synthetic degradation pipeline that is not wired into this library, so there is no LibreYOLO-trained variant to license separately.

Цитирование

@InProceedings{wang2021realesrgan,
    author    = {Xintao Wang and Liangbin Xie and Chao Dong and Ying Shan},
    title     = {Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data},
    booktitle = {International Conference on Computer Vision Workshops (ICCVW)},
    date      = {2021}
}

Скопировано из блока цитирования авторов на странице github.com/xinntao/Real-ESRGAN#bibtex.

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