Термин «апскейл» используется для обозначения процесса увеличения разрешения цифровых изображений с фокусом на создание иллюзии «настоящего» высокого разрешения. Правда, 90% таких продуктов — это барахло, больше намёк на перспективы, чем волшебство. Недавно мои ручки добрались до двух алгоритмов повышения чёткости, которые оказались настолько хороши, что появилась эта статья. Будут субъективные и объективные тесты алгоритма Real-ESRGAN для увеличения разрешения и алгоритма GFPGAN для детализации лиц.
Обучение алгоритмов производится на относительно ограниченном наборе данных, и на практике рано или поздно встретятся изображения, которые будут неправильно обработаны. Невозможно заранее предсказать ценность алгоритма без тестирования в рамках конкретной задачи, отчётам разработчиков сложно доверять, ведь их задача — «продать» свою работу. Проверка алгоритма должна начинаться с тестирования на данных, которые повстречаются наиболее вероятно. Если первичные результаты удовлетворяют ожиданиям, следует оценить диапазон применимости, подбирая всё более маргинальные варианты. Для оценки качества работы алгоритмов тренированного глаза достаточно, но ради придания статье тончайшего налёта профессионального исследования, сравнение будет сопровождаться количественными оценками.
Алгоритм тестирования:
Cравнить исходное и увеличенное изображения можно разными методами, начиная с квадратичного среднего и заканчивая специализированными нейросетями. Вменяемым выбором был бы MSSIM, поскольку он одновременно самый устойчивый и соответствует человеческому пониманию одинаковости картинок. Но так как чёткость увеличенного изображения формируется за счёт имитации текстур (грубо говоря, подбираются и вырисовываются микрокусочки от других изображений), то MSSIM покажет сильное отличие. Согласитесь, вне научного применения предпочтение получит правдоподобное чёткое изображение, но не математически точное мыло. При обучении нейросетей правдоподобность измеряется выделенной нейросетью, которая умеет оценивать реалистичность и качество. Но демонстрация циферок от чёрных ящиков не вызовет доверия, если только это не какой-то стандарт. Из оценок такого типа общепризнанным является VMAF, которую использует Netflix для подбора оптимальных настроек передачи и хранения видеопотоков. Эта интегральная оценка учитывает степень сходства оригинального и изменённого изображения и набор показателей качества картинки.
Кроме того, будут использоваться следующие косвенные оценки:
В рамках проекта Real-ESRGAN доступно несколько предобученных моделей:
Для тестирования подобраны изображения, которые представляют широкий диапазон того, что может пожелать заапскейлить среднестатистический землянин. Средний размер изображений после уменьшения в четыре раза составляет 350х250 пикселей. Бóльшая сторона исходных изображений имеет длину в диапазоне от 1200 до 2000 пикселей, приводить их целиком неуместно, поэтому только ссылки и уменьшенные версии.
Для проверки использована модель ESRGAN_SRx4_DF2KOST_official-ff704c30, которая субъективно превосходит прочие.
Уменьшение 4x ➟ 300x200
После первого теста уже можно заподозрить, что RealESRGAN превосходит на голову существующие разработки. Если не знать, что изображение было увеличено, то заметить подвох сложно. Gigapixel демонстрирует неплохие результаты, но заметно, что это синтетика.
Уменьшение 4x ➟ 350x231
На результате от RealESRGAN листья деревьев выглядят не только реалистично, но и более чётко чем в оригинале, что-то необычное.
Уменьшение 4x ➟ 320x180
Настоящий дождь, чёткое лицо. Как? Пришлось перепроверять, уж слишком хорошо, чтобы это было правдой, но это действительно апскейл.
Далее будут таблицы с измерениями, но перед этим приведу примеры, которые наглядно продемонстрируют, как зависят значения от картинки.
❒ Чем ближе VMAF к 100, тем лучше. Остальные параметры абсолютны.
❒ RealESRGAN показывает самые высокие результаты, которые иногда превосходят показатели исходного изображения.
Интерпретируя оценку VMAF, следует помнить, что её значительную часть формирует буквальное соответствие оригиналу, что ведёт к формальному превосходству Lancoz, так как он ничего не сочиняет от себя. Сравнивать стоит оценки RealESRGAN и Gigapixel между собой. Cреднее значение VMAF 56,92 против 55,10 подтверждает превосходство RealESRGAN.
В качестве алгоритма для сравнения был выбран Waifu, который долгое время считался стандартом. Не имею дела с рисованной анимацией, поэтому могу только эмпирически предположить, что сейчас топовым алгоритмом является Anime4k. На примерах в интернете не наблюдается значительной разницы между Anime4k и RealESRGAN, поэтому в тестировании Anime4k не используется (нет смысла устанавливать ради нескольких картинок).
Уменьшение 4x ➟ 300x200
На целевом типе анимации RealESRGAN проявляет себя ожидаемо превосходно, собственно поэтому будет интересно протестировать разные типы графики.
Специально для простых смертных существует версия RealESRGAN, упакованная в один файл, которая не требует установки вспомогательных библиотек.
Ссылки под разные ОС:
Портативная версия использует модели в своём формате, в комплекте есть следующие:
Самая мощная модель, аналогичная той, что использовалась в данном сравнении, лежит почему-то в другом месте:
Файлы моделей следует поместить в каталог ./models, переименовав по примеру содержимого.
Командная строка для запуска с дефолтной моделью realesrgan-x4plus:
realesrgan-ncnn-vulkan.exe -i dir_in -o dir_out -j 1:1:2
Для переключения модели нужно добавлять специальный ключ: "-n realesrgan-x4plus-anime",
"-n df2k-x4"
Решение GFPGAN предназначено для восстановления детализации лиц с изображений низкого разрешения.
Существуют две модели:
Сложная модель рисует настоящее лицо с фотографической точностью. У неё есть три проблемы:
Простая модель соответственно не имеет таких проблем, но качество её работы заметно ниже.
Ради эксперимента проверим, что будет, если запустить алгоритм на хорошем разрешении.
Уменьшение 2x ➟ 512x512
Улучшения не только не происходит, но и есть сильная потеря деталей. Штош 🐥. Зато мы узнали, что можно пользоваться RealESRGAN вместо Remini, разница незначительна.
Теперь проверим: насколько малое изображение сможет восстановить алгоритм.
Похожесть на оригинал сохраняется на очень низком разрешении, соотношение 10 раз! А если хочется большего разрешения чем 512х512 (фиксированный размер на выходе генератора лиц), можно пропустить последовательно через RealESRGAN и Remini.
Теперь протестируем возможности восстановления лиц на чём-нибудь практически значимом.
Апскейл приводится как исходная точка. Сравнивать будем с работой MS restore, который был лучшим из открытых алгоритмов восстановления лиц.
Для собственного удовольствия захотелось сделать цветные версии с помощью штуки из прошлой статьи. Пришлось сутки ждать пока она нагенерирует по 20 вариантов раскраски для каждой фотографии, выбирать удачные детали и стыковать в фотошопе.
Большие картинки по клику.
Так вот к чему я это всё вёл: «Легко найти выключатель, если лампочка уже горит.» (Конфуций, VI в до н.э.) Проведя достаточное количество тестов, можно смело утверждать, что оба алгоритма офигеть какие крутые (и при этом, находятся в открытом доступе).
Traffic_Warning: в статье демонстрируется множество примеров.
Методика тестирования
Обучение алгоритмов производится на относительно ограниченном наборе данных, и на практике рано или поздно встретятся изображения, которые будут неправильно обработаны. Невозможно заранее предсказать ценность алгоритма без тестирования в рамках конкретной задачи, отчётам разработчиков сложно доверять, ведь их задача — «продать» свою работу. Проверка алгоритма должна начинаться с тестирования на данных, которые повстречаются наиболее вероятно. Если первичные результаты удовлетворяют ожиданиям, следует оценить диапазон применимости, подбирая всё более маргинальные варианты. Для оценки качества работы алгоритмов тренированного глаза достаточно, но ради придания статье тончайшего налёта профессионального исследования, сравнение будет сопровождаться количественными оценками.
Алгоритм тестирования:
- Уменьшить эталонное изображение обратно пропорционально коэффициенту увеличения алгоритма (2 или 4 раза).
- «Заапскейлить» уменьшенное изображение тестируемым алгоритмом, а также Lancoz (базовая точка) и Topaz Gigapixel (предыдущий чемпион).
- Проверить адекватность увеличения.
- Проверить детали.
- Вычислить «попугаи».
Cравнить исходное и увеличенное изображения можно разными методами, начиная с квадратичного среднего и заканчивая специализированными нейросетями. Вменяемым выбором был бы MSSIM, поскольку он одновременно самый устойчивый и соответствует человеческому пониманию одинаковости картинок. Но так как чёткость увеличенного изображения формируется за счёт имитации текстур (грубо говоря, подбираются и вырисовываются микрокусочки от других изображений), то MSSIM покажет сильное отличие. Согласитесь, вне научного применения предпочтение получит правдоподобное чёткое изображение, но не математически точное мыло. При обучении нейросетей правдоподобность измеряется выделенной нейросетью, которая умеет оценивать реалистичность и качество. Но демонстрация циферок от чёрных ящиков не вызовет доверия, если только это не какой-то стандарт. Из оценок такого типа общепризнанным является VMAF, которую использует Netflix для подбора оптимальных настроек передачи и хранения видеопотоков. Эта интегральная оценка учитывает степень сходства оригинального и изменённого изображения и набор показателей качества картинки.
Кроме того, будут использоваться следующие косвенные оценки:
- «Резкость». Очень простая оценка, которая является аналогом второй производной. Чем более размыто изображение, тем меньше в нём резких переходов значений.
- Энтропия текстур. Мутноватая штука, но если на пальцах, то это показатель сложности «раскраски» поверхностей (запомнить цвет покрашенной стены проще, чем узор обоев).
- Размер файла PNG. Колхозная оценка общей энтропии изображения, чем больше размер файла, тем больше деталей в картинке.
Тестирование апскейла
В рамках проекта Real-ESRGAN доступно несколько предобученных моделей:
- RealESRGAN_x4plus — для общего применения, увеличение 4х
- RealESRNet_x4plus — устаревшая модель для общего применения, увеличение 4х
- RealESRGAN_x4plus_anime_6B — для рисованных изображений, увеличение 4х
- RealESRGAN_x2plus — для общего применения, увеличение 2х
- official ESRGAN_x4 — модель, использовавшаяся для публикации официальных результатов, увеличение 4х
Для тестирования подобраны изображения, которые представляют широкий диапазон того, что может пожелать заапскейлить среднестатистический землянин. Средний размер изображений после уменьшения в четыре раза составляет 350х250 пикселей. Бóльшая сторона исходных изображений имеет длину в диапазоне от 1200 до 2000 пикселей, приводить их целиком неуместно, поэтому только ссылки и уменьшенные версии.
Для проверки использована модель ESRGAN_SRx4_DF2KOST_official-ff704c30, которая субъективно превосходит прочие.
▍ Тестовое изображение «sample01»
Уменьшение 4x ➟ 300x200
- Оригинал 1200x800
- Интерполяция Lancoz 300x200 ➟ 1200x800
- Апскейл Gigapixel 300x200 ➟ 1200x800
- Апскейл RealESRGAN 300x200 ➟ 1200x800
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample02»
Уменьшение 4x ➟ 350x231
- Оригинал 1400x922
- Интерполяция Lancoz 350x231 ➟ 1400x924
- Апскейл Gigapixel 350x231 ➟ 1400x924
- Апскейл RealESRGAN 350x231 ➟ 1400x924
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample03»
Уменьшение 4x ➟ 320x180
- Оригинал 1280x720
- Интерполяция Lancoz 320x180 ➟ 1280x720
- Апскейл Gigapixel 320x180 ➟ 1280x720
- Апскейл RealESRGAN 320x180 ➟ 1280x720
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
Ещё больше удивительных примеров (ОЧЕНЬ МНОГО КАРТИНОК)
Уменьшение 4x ➟ 350x232
Снова сложно поверить, что это алгоритмически увеличенное изображение. Обратите внимание на ручку двери и руль.
Уменьшение 4x ➟ 300x201
Уменьшение 4x ➟ 238x128
Тут я просто обалдел, апскейл от RealESRGAN не то что близок к оригиналу, а просто как оригинал, даже плёночное зерно прорисовано. «Подделка» отличается только циферблатом часов.
Уменьшение 4x ➟ 250x167
Уменьшение 4x ➟ 300x200
Уменьшение 4x ➟ 350x350
Уменьшение 4x ➟ 375x250
В очередной раз обращает на себя внимание прорисовка плёночного зерна. Даже закрадываются сомнения: уж не наложенный ли это эффект, хотя распределение зерна специфично, алгоритмический шум лежал бы равномернее. Может это какое-то читерство, так или иначе, это впечатляет.
Уменьшение 4x ➟ 405x270
Уменьшение 4x ➟ 450x300
Уменьшение 4x ➟ 320x213
Уменьшение 4x ➟ 272x181
Уменьшение 4x ➟ 300x200
Уменьшение 4x ➟ 280x280
И визуально и по объективным оценкам (далее в таблице) понятно, что Real-ESRGAN нарисовал больше деталей, чем было в оригинале, не артефактов, а именно дополнительных деталей. Нейросети всегда фантазируют на тему вероятного оригинала, но обычно это выстрел в сторону цели с недолётом. Но качественно превзойти оригинал? Такое встречалось в очень специализированных алгоритмах. Апскейл изображений реального мира — это задача c огромной вариативностью, поэтому это серьёзное достижение.
Уменьшение 4x ➟ 320x180
Уменьшение 4x ➟ 512x341
Этот тест показывает насколько уверенно Real-ESRGAN умеет работать с боке. На уменьшенном изображении теряется информация о границах фокуса. Gigapixel рисует резкие линии там, где их быть не должно. Real-ESRGAN правдоподобно воспроизводит эти нюансы.
Уменьшение 4x ➟ 267x200
Уменьшение 4x ➟ 350x350
Уменьшение 4x ➟ 256x205
Если вам показалось, что «INDIAN OCEAN» чётко видно на интерполяции Lancoz, то вам показалось. Буквы I, E, A без контекста не различить.
Уменьшение 4x ➟ 250x167
Уменьшение 4x ➟ 512x341
▍ Тестовое изображение «sample04»
Уменьшение 4x ➟ 350x232
- Оригинал 1400x929
- Интерполяция Lancoz 350x232 ➟ 1400x928
- Апскейл Gigapixel 350x232 ➟ 1400x928
- Апскейл RealESRGAN 350x232 ➟ 1400x928
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample05»
Уменьшение 4x ➟ 300x201
- Оригинал 1200x802
- Интерполяция Lancoz 300x201 ➟ 1200x804
- Апскейл Gigapixel 300x201 ➟ 1200x804
- Апскейл RealESRGAN 300x201 ➟ 1200x804
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample06»
Уменьшение 4x ➟ 238x128
- Оригинал 950x512
- Интерполяция Lancoz 238x128 ➟ 952x512
- Апскейл Gigapixel 238x128 ➟ 952x512
- Апскейл RealESRGAN 238x128 ➟ 952x512
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample07»
Уменьшение 4x ➟ 250x167
- Оригинал 1000x667
- Интерполяция Lancoz 250x167 ➟ 1000x668
- Апскейл Gigapixel 250x167 ➟ 1000x668
- Апскейл RealESRGAN 250x167 ➟ 1000x668
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample08»
Уменьшение 4x ➟ 300x200
- Оригинал 1200x800
- Интерполяция Lancoz 300x200 ➟ 1200x800
- Апскейл Gigapixel 300x200 ➟ 1200x800
- Апскейл RealESRGAN 300x200 ➟ 1200x800
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample09»
Уменьшение 4x ➟ 350x350
- Оригинал 1400x1400
- Интерполяция Lancoz 350x350 ➟ 1400x1400
- Апскейл Gigapixel 350x350 ➟ 1400x1400
- Апскейл RealESRGAN 350x350 ➟ 1400x1400
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample10»
Уменьшение 4x ➟ 375x250
- Оригинал 1500x1000
- Интерполяция Lancoz 375x250 ➟ 1500x1000
- Апскейл Gigapixel 375x250 ➟ 1500x1000
- Апскейл RealESRGAN 375x250 ➟ 1500x1000
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample11»
Уменьшение 4x ➟ 405x270
- Оригинал 1620x1080
- Интерполяция Lancoz 405x270 ➟ 1620x1080
- Апскейл Gigapixel 405x270 ➟ 1620x1080
- Апскейл RealESRGAN 405x270 ➟ 1620x1080
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample12»
Уменьшение 4x ➟ 450x300
- Оригинал 1800x1200
- Интерполяция Lancoz 450x300 ➟ 1800x1200
- Апскейл Gigapixel 450x300 ➟ 1800x1200
- Апскейл RealESRGAN 450x300 ➟ 1800x1200
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample13»
Уменьшение 4x ➟ 320x213
- Оригинал 1280x852
- Интерполяция Lancoz 320x213 ➟ 1280x852
- Апскейл Gigapixel 320x213 ➟ 1280x852
- Апскейл RealESRGAN 320x213 ➟ 1280x852
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample14»
Уменьшение 4x ➟ 272x181
- Оригинал 1087x725
- Интерполяция Lancoz 272x181 ➟ 1088x724
- Апскейл Gigapixel 272x181 ➟ 1088x724
- Апскейл RealESRGAN 272x181 ➟ 1088x724
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample15»
Уменьшение 4x ➟ 300x200
- Оригинал 1200x800
- Интерполяция Lancoz 300x200 ➟ 1200x800
- Апскейл Gigapixel 300x200 ➟ 1200x800
- Апскейл RealESRGAN 300x200 ➟ 1200x800
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample16»
Уменьшение 4x ➟ 280x280
- Оригинал 1120x1120
- Интерполяция Lancoz 280x280 ➟ 1120x1120
- Апскейл Gigapixel 280x280 ➟ 1120x1120
- Апскейл RealESRGAN 280x280 ➟ 1120x1120
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample17»
Уменьшение 4x ➟ 320x180
- Оригинал 1280x720
- Интерполяция Lancoz 320x180 ➟ 1280x720
- Апскейл Gigapixel 320x180 ➟ 1280x720
- Апскейл RealESRGAN 320x180 ➟ 1280x720
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample18»
Уменьшение 4x ➟ 512x341
- Оригинал 2048x1365
- Интерполяция Lancoz 512x341 ➟ 2048x1364
- Апскейл Gigapixel 512x341 ➟ 2048x1364
- Апскейл RealESRGAN 512x341 ➟ 2048x1364
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample19»
Уменьшение 4x ➟ 267x200
- Оригинал 1066x800
- Интерполяция Lancoz 267x200 ➟ 1066x800
- Апскейл Gigapixel 267x200 ➟ 1066x800
- Апскейл RealESRGAN 267x200 ➟ 1066x800
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample20»
Уменьшение 4x ➟ 350x350
- Оригинал 1400x1400
- Интерполяция Lancoz 350x350 ➟ 1400x1400
- Апскейл Gigapixel 350x350 ➟ 1400x1400
- Апскейл RealESRGAN 350x350 ➟ 1400x1400
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample21»
Уменьшение 4x ➟ 256x205
- Оригинал 1024x819
- Интерполяция Lancoz 256x205 ➟ 1024x820
- Апскейл Gigapixel 256x205 ➟ 1024x820
- Апскейл RealESRGAN 256x205 ➟ 1024x820
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample22»
Уменьшение 4x ➟ 250x167
- Оригинал 1000x667
- Интерполяция Lancoz 250x167 ➟ 1000x668
- Апскейл Gigapixel 250x167 ➟ 1000x668
- Апскейл RealESRGAN 250x167 ➟ 1000x668
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
▍ Тестовое изображение «sample23»
Уменьшение 4x ➟ 512x341
- Оригинал 2048x1364
- Интерполяция Lancoz 512x341 ➟ 2048x1364
- Апскейл Gigapixel 512x341 ➟ 2048x1364
- Апскейл RealESRGAN 512x341 ➟ 2048x1364
Lancoz | Gigapixel | RealESRGAN | Оригинал |
---|---|---|---|
*конец спойлера*
Далее будут таблицы с измерениями, но перед этим приведу примеры, которые наглядно продемонстрируют, как зависят значения от картинки.
Изображение | VMAF | Резкость | Энтропия Т | Размер PNG |
---|---|---|---|---|
Эталон |
- | 13.43 | 35.100 | 86192 |
Смешивание двух изображений |
0 | 14.30 | 34.630 | 91211 |
Легкое размытие |
76.202 | 9.089 | 34.630 | 73769 |
Очень сильное размытие |
0 | 0.585 | 25.425 | 31142 |
Небольшое добавление шума |
71.508 | 14.44 | 38.98 | 112848 |
Только шум |
5.023 | 22.24 | 46.34 | 152585 |
Резкость | Энтропия Т | |||||||
---|---|---|---|---|---|---|---|---|
Изображение | Lncz | Ggpxl | RlSRGN | ориг. | Lncz | Ggpxl | RlSRGN | ориг. |
sample01 | 4.808 | 9.987 | 10.91 | 13.38 | 34.404 | 35.458 | 35.934 | 36.183 |
sample02 | 6.877 | 13.98 | 15.80 | 14.05 | 34.710 | 36.845 | 37.279 | 36.969 |
sample03 | 4.006 | 8.985 | 9.579 | 10.66 | 34.581 | 36.657 | 37.550 | 37.464 |
sample04 | 4.642 | 9.566 | 10.11 | 9.958 | 34.941 | 36.167 | 37.314 | 36.648 |
sample05 | 3.279 | 8.140 | 7.852 | 8.600 | 33.012 | 34.206 | 34.449 | 34.100 |
sample06 | 3.700 | 8.862 | 9.285 | 8.695 | 33.070 | 34.277 | 36.042 | 35.576 |
sample07 | 3.912 | 10.43 | 14.94 | 11.68 | 29.422 | 31.893 | 35.169 | 33.416 |
sample08 | 2.535 | 6.782 | 8.809 | 7.996 | 30.850 | 32.649 | 34.398 | 33.193 |
sample09 | 3.318 | 9.598 | 9.974 | 9.736 | 26.678 | 28.092 | 29.321 | 28.086 |
sample10 | 3.743 | 9.340 | 10.53 | 11.22 | 33.454 | 34.953 | 36.421 | 35.981 |
sample11 | 4.061 | 8.909 | 9.631 | 8.728 | 32.131 | 33.907 | 35.637 | 35.230 |
sample12 | 3.427 | 9.246 | 9.610 | 10.08 | 28.949 | 30.486 | 31.718 | 30.553 |
sample13 | 2.153 | 6.405 | 6.647 | 7.666 | 29.660 | 30.980 | 31.623 | 31.214 |
sample14 | 4.574 | 10.64 | 12.10 | 10.14 | 32.805 | 34.507 | 36.684 | 35.553 |
sample15 | 3.872 | 9.374 | 9.971 | 9.030 | 32.555 | 34.075 | 36.128 | 34.956 |
sample16 | 5.298 | 12.82 | 16.91 | 15.43 | 33.018 | 36.027 | 39.132 | 37.246 |
sample17 | 4.396 | 9.462 | 9.781 | 11.78 | 31.430 | 33.032 | 33.470 | 32.714 |
sample18 | 1.973 | 6.046 | 6.666 | 6.379 | 31.289 | 32.273 | 33.677 | 32.201 |
sample19 | 4.602 | 11.57 | 13.21 | 13.82 | 32.734 | 34.925 | 36.793 | 35.987 |
sample20 | 4.096 | 9.534 | 10.77 | 11.86 | 32.727 | 34.067 | 34.739 | 35.467 |
sample21 | 5.177 | 12.22 | 13.77 | 14.71 | 33.251 | 35.719 | 37.279 | 37.607 |
sample22 | 4.121 | 11.08 | 13.88 | 12.50 | 33.594 | 36.068 | 38.204 | 36.590 |
sample23 | 4.695 | 11.91 | 16.39 | 15.49 | 31.826 | 36.248 | 39.623 | 38.458 |
Размер PNG | VMAF | ||||||
---|---|---|---|---|---|---|---|
Изображение | Lncz | Ggpxl | RlSRGN | ориг. | Lncz | Ggpxl | RlSRGN |
sample01 | 1040909 | 1533964 | 1593418 | 1486472 | 57.8 | 45.1 | 46.8 |
sample02 | 1606323 | 2560961 | 2708832 | 2234673 | 50.5 | 41.0 | 45.6 |
sample03 | 894173 | 1714758 | 1813965 | 1210865 | 60.9 | 54.4 | 55.9 |
sample04 | 1311025 | 2081947 | 2278960 | 1846145 | 65.6 | 56.4 | 57.4 |
sample05 | 849558 | 1416970 | 1456258 | 1172864 | 68.6 | 63.9 | 63.0 |
sample06 | 452241 | 745710 | 842382 | 695724 | 68.1 | 65.1 | 66.6 |
sample07 | 482440 | 936809 | 1195696 | 1038522 | 58.3 | 60.0 | 60.9 |
sample08 | 765887 | 1424501 | 1621607 | 1235084 | 72.7 | 63.7 | 63.4 |
sample09 | 1123533 | 2141817 | 2400667 | 1710914 | 55.3 | 59.3 | 62.4 |
sample10 | 1278387 | 2355468 | 2637193 | 1963767 | 63.2 | 58.2 | 59.7 |
sample11 | 1612505 | 2786874 | 3151952 | 2524981 | 78.4 | 65.9 | 66.6 |
sample12 | 1169958 | 2264390 | 2588812 | 1824693 | 61.9 | 66.5 | 69.8 |
sample13 | 590845 | 1296764 | 1380995 | 903423 | 74.8 | 74.3 | 73.2 |
sample14 | 776364 | 1245854 | 1472989 | 1226939 | 58.6 | 52.0 | 55.2 |
sample15 | 866486 | 1400401 | 1605220 | 1332608 | 69.6 | 64.5 | 65.5 |
sample16 | 1310238 | 2125275 | 2608758 | 2096532 | 39.1 | 29.7 | 33.0 |
sample17 | 698017 | 1249952 | 1280725 | 937598 | 56.2 | 54.2 | 56.7 |
sample18 | 1732631 | 3292749 | 3752564 | 2892373 | 78.8 | 75.3 | 76.0 |
sample19 | 738134 | 1293668 | 1464700 | 1108550 | 48.2 | 41.9 | 44.7 |
sample20 | 1685835 | 2837290 | 3088802 | 2529888 | 56.9 | 51.4 | 53.6 |
sample21 | 907662 | 1505524 | 1665626 | 1438411 | 47.0 | 39.6 | 42.6 |
sample22 | 648045 | 1098574 | 1285524 | 1041852 | 56.5 | 49.0 | 53.1 |
sample23 | 2908706 | 4989519 | 6136962 | 5476397 | 45.0 | 36.0 | 37.4 |
▍ Далее проверяем режим увеличения рисованных изображений
В качестве алгоритма для сравнения был выбран Waifu, который долгое время считался стандартом. Не имею дела с рисованной анимацией, поэтому могу только эмпирически предположить, что сейчас топовым алгоритмом является Anime4k. На примерах в интернете не наблюдается значительной разницы между Anime4k и RealESRGAN, поэтому в тестировании Anime4k не используется (нет смысла устанавливать ради нескольких картинок).
Уменьшение 4x ➟ 300x200
- Оригинал 1200x800
- Интерполяция Lancoz 300x200 ➟ 1200x800
- Апскейл Waifu 300x200 ➟ 1200x800
- Апскейл RealESRGAN 300x200 ➟ 1200x800
Lancoz | Waifu | RealESRGAN | Оригинал |
---|---|---|---|
Ещё немного примеров
Уменьшение 4x ➟ 300x225
RealESRGAN и здесь крут. Линии четкие, цвета яркие, мыльных наплывов совсем нет. Есть проблемы с мелкими деталями, то есть из очень низкого разрешения чуда не сотворить, но из разрешения DVD уже нечто достойное получится.
Уменьшение 4x ➟ 256x379
Интересно, что RealESRGAN может как бы перерисовать детали за счёт знания, как это «должно выглядеть», правда, навязывая при этом свой графический стиль. Ленивый способ преобразования рисунка в коммерческую иллюстрацию?
Уменьшение 4x ➟ 203x311
Получилась крутая перерисовка в другом стиле. Тонкие линии, добавленные осмысленно, очень впечатляют.
Уменьшение 4x ➟ 375x211
Настоящая магия Deep Learning: адекватная фантазия RealESRGAN получилась детальнее оригинала.
- Оригинал 1200x900
- Интерполяция Lancoz 300x225 ➟ 1200x900
- Апскейл Waifu 300x225 ➟ 1200x900
- Апскейл RealESRGAN 300x225 ➟ 1200x900
Lancoz | Waifu | RealESRGAN | Оригинал |
---|---|---|---|
Уменьшение 4x ➟ 256x379
- Оригинал 1024x1514
- Интерполяция Lancoz 256x379 ➟ 1024x1514
- Апскейл Waifu 256x379 ➟ 1024x1514
- Апскейл RealESRGAN 256x379 ➟ 1024x1514
Lancoz | Waifu | RealESRGAN | Оригинал |
---|---|---|---|
Уменьшение 4x ➟ 203x311
- Оригинал 810x1245
- Интерполяция Lancoz 203x311 ➟ 812x1244
- Апскейл Waifu 203x311 ➟ 812x1244
- Апскейл RealESRGAN 203x311 ➟ 812x1244
Lancoz | Waifu | RealESRGAN | Оригинал |
---|---|---|---|
Уменьшение 4x ➟ 375x211
- Оригинал 1500x844
- Интерполяция Lancoz 375x211 ➟ 1500x844
- Апскейл Waifu 375x211 ➟ 1500x844
- Апскейл RealESRGAN 375x211 ➟ 1500x844
Lancoz | Waifu | RealESRGAN | Оригинал |
---|---|---|---|
Специально для простых смертных существует версия RealESRGAN, упакованная в один файл, которая не требует установки вспомогательных библиотек.
Ссылки под разные ОС:
Портативная версия использует модели в своём формате, в комплекте есть следующие:
- realesrgan-x4plus (для общего применения)
- realesrnet-x4plus (устаревшая модель для общего применения)
- realesrgan-x4plus-anime (для рисованных изображений)
Самая мощная модель, аналогичная той, что использовалась в данном сравнении, лежит почему-то в другом месте:
- models-DF2K — это «official ESRGAN_x4»
- models-DF2K_JPEG — это та же модель, но способная переносить сильно сжатые JPEG. Пригодится, если на других моделях результат разваливается в мозаику.
Файлы моделей следует поместить в каталог ./models, переименовав по примеру содержимого.
Командная строка для запуска с дефолтной моделью realesrgan-x4plus:
realesrgan-ncnn-vulkan.exe -i dir_in -o dir_out -j 1:1:2
Для переключения модели нужно добавлять специальный ключ: "-n realesrgan-x4plus-anime",
"-n df2k-x4"
GFPGAN
Решение GFPGAN предназначено для восстановления детализации лиц с изображений низкого разрешения.
Существуют две модели:
- GFPGANCleanv1-NoCE-C2 — упрощённая модель
- GFPGANv1 — сложная модель
Сложная модель рисует настоящее лицо с фотографической точностью. У неё есть три проблемы:
- Требует дополнительной мороки с установкой.
- Не подстраивается под освещение фотографии.
- Почти всегда искажает цвет области вокруг лица, то есть нужно допиливать в фотошопе.
Простая модель соответственно не имеет таких проблем, но качество её работы заметно ниже.
Ради эксперимента проверим, что будет, если запустить алгоритм на хорошем разрешении.
Уменьшение 2x ➟ 512x512
- Оригинал 1024x1024
- Апскейл RealESRGAN 512x512 ➟ 2048x2048 -Lancoz➟ 1024x1024
- Улучшение GFPGAN модель cleanV1 512x512 ➟ 1024x1024
- Улучшение GFPGAN модель V1 512x512 ➟ 1024x1024
- Улучшение Remini 512x512 ➟ 1024x1024
GFPGAN_cl | GFPGAN_v1 | RealESRGAN | Remini |
---|---|---|---|
Теперь проверим: насколько малое изображение сможет восстановить алгоритм.
Ещё примерчик
Оригинал | GFPGAN_v1 |
---|---|
Похожесть на оригинал сохраняется на очень низком разрешении, соотношение 10 раз! А если хочется большего разрешения чем 512х512 (фиксированный размер на выходе генератора лиц), можно пропустить последовательно через RealESRGAN и Remini.
Теперь протестируем возможности восстановления лиц на чём-нибудь практически значимом.
Апскейл приводится как исходная точка. Сравнивать будем с работой MS restore, который был лучшим из открытых алгоритмов восстановления лиц.
- Улучшение MS restore ➟ Апскейл RealESRGAN 537x824 ➟ 1074x1648
- Улучшение GFPGAN модель cleanV1 537x824 ➟ 1074x1648
- Улучшение GFPGAN модель V1 537x824 ➟ 1074x1648
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
Попробуем на фотопортретах середины 19 века (ОЧЕНЬ МНОГО)
А вы знали, что первое селфи было сделано в 1839 году?
Все эти изображения являются дагерротипами из коллекции конгресса США, их точной датировки нет, примерная охватывает 1840-1860 гг.
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 482x615 ➟ 964x1230
- Улучшение GFPGAN модель cleanV1 482x615 ➟ 964x1230
- Улучшение GFPGAN модель V1 482x615 ➟ 964x1230
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
Все эти изображения являются дагерротипами из коллекции конгресса США, их точной датировки нет, примерная охватывает 1840-1860 гг.
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 640x496 ➟ 1280x992
- Улучшение GFPGAN модель cleanV1 640x496 ➟ 1280x992
- Улучшение GFPGAN модель V1 640x496 ➟ 1280x992
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 523x753 ➟ 1046x1506
- Улучшение GFPGAN модель cleanV1 523x753 ➟ 1046x1506
- Улучшение GFPGAN модель V1 523x753 ➟ 1046x1506
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 430x697 ➟ 860x1394
- Улучшение GFPGAN модель cleanV1 430x697 ➟ 860x1394
- Улучшение GFPGAN модель V1 430x697 ➟ 860x1394
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 618x624 ➟ 1236x1248
- Улучшение GFPGAN модель cleanV1 618x624 ➟ 1236x1248
- Улучшение GFPGAN модель V1 618x624 ➟ 1236x1248
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 533x668 ➟ 1066x1336
- Улучшение GFPGAN модель cleanV1 533x668 ➟ 1066x1336
- Улучшение GFPGAN модель V1 533x668 ➟ 1066x1336
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 585x729 ➟ 1170x1458
- Улучшение GFPGAN модель cleanV1 585x729 ➟ 1170x1458
- Улучшение GFPGAN модель V1 585x729 ➟ 1170x1458
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 564x739 ➟ 1128x1478
- Улучшение GFPGAN модель cleanV1 564x739 ➟ 1128x1478
- Улучшение GFPGAN модель V1 564x739 ➟ 1128x1478
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 597x747 ➟ 1194x1494
- Улучшение GFPGAN модель cleanV1 597x747 ➟ 1194x1494
- Улучшение GFPGAN модель V1 597x747 ➟ 1194x1494
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 577x736 ➟ 1154x1472
- Улучшение GFPGAN модель cleanV1 577x736 ➟ 1154x1472
- Улучшение GFPGAN модель V1 577x736 ➟ 1154x1472
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 742x538 ➟ 1484x1076
- Улучшение GFPGAN модель cleanV1 742x538 ➟ 1484x1076
- Улучшение GFPGAN модель V1 742x538 ➟ 1484x1076
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 444x624 ➟ 888x1248
- Улучшение GFPGAN модель cleanV1 444x624 ➟ 888x1248
- Улучшение GFPGAN модель V1 444x624 ➟ 888x1248
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 482x615 ➟ 964x1230
- Улучшение GFPGAN модель cleanV1 482x615 ➟ 964x1230
- Улучшение GFPGAN модель V1 482x615 ➟ 964x1230
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 614x822 ➟ 1228x1644
- Улучшение GFPGAN модель cleanV1 614x822 ➟ 1228x1644
- Улучшение GFPGAN модель V1 614x822 ➟ 1228x1644
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
- Улучшение MS restore ➟ Апскейл RealESRGAN ➟ 565x780 ➟ 1130x1560
- Улучшение GFPGAN модель cleanV1 565x780 ➟ 1130x1560
- Улучшение GFPGAN модель V1 565x780 ➟ 1130x1560
RealESRGAN | MS_restore | GFPGAN_cl | GFPGAN_v1 |
---|---|---|---|
Бонусы
Для собственного удовольствия захотелось сделать цветные версии с помощью штуки из прошлой статьи. Пришлось сутки ждать пока она нагенерирует по 20 вариантов раскраски для каждой фотографии, выбирать удачные детали и стыковать в фотошопе.
Большие картинки по клику.
P.S.
Так вот к чему я это всё вёл: «Легко найти выключатель, если лампочка уже горит.» (Конфуций, VI в до н.э.) Проведя достаточное количество тестов, можно смело утверждать, что оба алгоритма офигеть какие крутые (и при этом, находятся в открытом доступе).