Как работает апскейл аниме в реальном времени

Расскажу, как bloc97 — сделал апскейлер аниме и оптимизировал его так, что даже люди прямо в браузере могут апскейлить аниме до 4К без проблем, даже на смартфонах. И как это улучшает просмотр сотням людей, которые смотрят аниме в моём боте.

У меня ПК слабый — это самый лёгкий апскейл, и лагов без записи нет)

Anime4K: Как нейросети и шейдеры делают аниме чётче в реальном времени

Anime4K — это набор открытых алгоритмов для повышения разрешения и шумоподавления аниме в реальном времени. Проект, созданный разработчиком под ником bloc97, произвёл фурор в 2019 году, когда за неделю на GitHub собрал более 2600 звёзд. Главное обещание: вы можете смотреть 1080p-аниме на 4K-мониторе, и картинка будет чёткой — без предварительного перекодирования и ожидания.

Проблема, которую решает Anime4K

Классический апскейл — бикубическая интерполяция — просто «размазывает» пиксели. Для аниме с его резкими линиями и плоскими цветовыми зонами это выглядит ужасно: линии становятся мыльными, а края — размытыми. Нейросетевые апскейлеры вроде waifu2x или Real-ESRGAN дают гораздо лучший результат, но работают слишком медленно для потокового видео: обработка одного кадра может занимать сотни миллисекунд, что делает их непригодными для просмотра в реальном времени.

Anime4K предлагает компромисс: он не пытается «дорисовать» детали, которых нет в исходнике, а восстанавливает и подчёркивает то, что уже есть — чёткость линий, контуры, градиенты. И делает это настолько быстро, что укладывается в бюджет кадра даже на 60 fps.

Как это устроено: три технологии в одном флаконе

Anime4K — это не один алгоритм, а набор модульных GLSL-шейдеров, которые выполняются на GPU видеокарты. Шейдеры можно комбинировать в цепочки (пайплайны) в зависимости от типа аниме и мощности железа.

В основе лежат три подхода.

1. CNN (свёрточные нейросети) — «мозг» апскейла

CNN-шейдеры используют обученные свёрточные нейросети для увеличения изображения. Модели тренируются в TensorFlow на парах «низкое разрешение → высокое разрешение» из аниме-кадров, а затем конвертируются в GLSL-код утилитой shaderutils.py.

Ключевая особенность: сети очень маленькие. Вместо громоздких архитектур вроде SRGAN используются компактные модели с числом параметров от 1,6K до 2,9K. Именно эта скромность позволяет достичь реального времени.

Архитектура включает стандартные свёртки, ReLU-активации (max(x, 0)) и sub-pixel convolution для увеличения разрешения. Каждый слой CNN транслируется в отдельный проход шейдера: выход одного прохода становится входом следующего.

2. DTD (Directional Texture Deblurring) — «скальпель» для линий

DTD — это не нейросеть, а классический алгоритм обработки изображений, заточенный под аниме. Он работает так:

  1. Извлекается яркость (Y = 0.299R + 0.587G + 0.114B).
  2. Применяется гауссово размытие с разными сигмами для многомасштабного анализа.
  3. Вычисляются градиенты по горизонтали и вертикали — так находятся края и их направления.
  4. Выполняется направленное искажение текстуры вдоль обнаруженных границ — линии становятся резче именно в своём направлении.
  5. Избирательное деблюривание с порогами, чтобы не усилить шум.

DTD не требует обучения и работает молниеносно, но уступает CNN в качестве на сложных сценах.

3. GAN-шейдеры — «художник» для деталей

Для повышения качества на сложных кадрах Anime4K включает GAN-шейдеры (например, Anime4K_Restore_GAN_UUL), обученные восстанавливать мелкие детали. Они дают более резкую и детализированную картинку, чем чисто CNN-подход, но требуют больше вычислительных ресурсов.

Что я сделал для своего просмотра аниме

Я сделал апскейл прямо на сайте просмотра, чтобы можно было улучшать картинку во время просмотра аниме.

Как работает апскейл аниме в реальном времени

Дальше просто буду кидать До/После для примера

Всем спасибо за прочтение! Если не сложно, посмотрите аниме в моём Telegram-боте: @shikimori_anime_bot. Он полностью бесплатный, без подписок — есть только донаты. Всем хорошего дня!)

7
1