Нейросетевой апскейлинг дома: вторая молодость для классических мультфильмов
В мире цифрового контента существует множество старых видеозаписей, которые заслуживают второй жизни. Будь то любимый мультфильм с потрескавшейся VHS-кассеты или редкий аниме-сериал с DVD, качество которого оставляет желать лучшего, у каждого есть свои «цифровые раритеты», которые хочется сохранить и улучшить.
С помощью нейросетей можно это осуществить. Сначала мы рассмотрим наш интсрументарий, а затем сразу перейдём к кейсам использования. Каждый пример будет сопровождаться сравнениями, видео и скриншотами, чтобы показать реальный процесс и результат улучшения качества. Причём сделать эти шаги может каждый — бесплатно и без глубоких знаний в области нейронных сетей. Однако, как и любая обработка оригинального материала, этот подход может вызывать разные мнения.
Внимание: все видео в статье загружены на ютуб.
Выбор софта
Самый очевидный выбор — Topaz Video AI. Но есть небольшая проблема: он совершенно не подходит для апскейлинга рисованной анимации. Базовые проблемы программа может решить, но с артефактами, не связанными с плохим сжатием или низким разрешением, она справиться не в состоянии.
Наглядно видно, что Topaz Video AI даже не пытается бороться с ореолами на картинке, что особенно заметно на ухе персонажа.
ChaiNNer представляет собой открытое кросс-платформенное решение для нейросетевой обработки изображений и видео, которое позволяет пользователям создавать и выполнять сложные рабочие процессы с помощью интуитивно понятного узлового редактора. В отличие от Topaz Video AI, ChaiNNer не только доступен бесплатно, но и предлагает огромную библиотеку различных апскейлеров, созданных сообществом. Это означает, что любой желающий может разработать собственный апскейлер, просто имея видеокарту и примеры материалов в разных качествах, например, старые записи с телевидения и их современные оцифровки с киноплёнки. Такой подход делает процесс обучения новых моделей доступным даже для энтузиастов, не обладающих глубокими знаниями в области нейросетей. Более подробно я освещал эту тему в другой статье. Для примера, по сравнению с Topaz Video AI, ChaiNNer, используя модель Anime Video V3 на моей RX 6600, демонстрирует сопоставимую скорость выполнения, а зачастую даже превосходит его при аналогичных настройках. Модели Anime Video V3 и Rhea имеют схожие характеристики, что позволяет сравнить оба решения.
Слева Topaz Rhea (выходит лучше чем Gaia), справа Anime Video V3. Оригинальное видео было в 480p
Так что исходя из раннее озвученных фактов, мой выбор падает на ChaiNNer.
С чего начать
Первым делом не бегите сразу всё делать. Сначала поищите в интернете более качественную запись нужного контента. Даже если он окажется на другом языке, вам не составит труда подогнать одну аудиодорожку к другой — потребуется лишь немного терпения.
Также, сейчас не существует 100%-ной рабочей технологии для устранения царапин и трещин на плёнке, так что не тратьте на это время.
Слева Blu-ray релиз, а справа старый DVD мастеринг.
Кейсы использования
На рассмотрение всех апскейлеров из открытой библиотеки openmodeldb.info не хватит никакого времени, поэтому в этом разделе мы сразу перейдем к их применению на практике, чтобы понять основные принципы и нюансы работы, как с апскейлерами, так и с носителями. Также все последующие апскейлеры есть в моей Google-таблице на базе архитектуры ESRGAN Compact.
Цифровая запись
Зачастую многие старые материалы сильно сжаты до разрешения 480p, хотя оригиналы были очень хорошего качества. Чтобы восстановить их, достаточно использовать апскейлер, обученный самим создателем архитектуры REAL-Esrgan Compact — Anime Video V3. Он увеличивает разрешение и не влияет на цвета картинки, поэтому это самый незаметный апскейлер из всех, что я пробовал.
Сравнение
Итог: Ноль проблем, отличное качество и естественные цвета.
Итоговая связка
DVD
Самый простой, но интересный разряд записей. Здесь накладываются физические ограничения оригинального носителя и не самый лучший мастеринг картинки, как и сам источник видео. Однако большинство проблем можно легко решить, например, разноцветные случайные линии.
Dotzilla Compact.
Или ореолы (не все, но лучше, чем ничего).
BleedOut.
Неудачная цветокоррекция или её отсутствие.
Epsilon-one compact.
Но теперь давайте рассмотрим пример наглядного использования.
Необходимо сначала избавиться от черестрочности, если она присутствует. В целом всё нормально, но очевидна неудачная цветокоррекция. Для этого момента есть некоторые штатные инструменты в ChaiNNer, а также апскейлеры, которые обучались на таком материале, но они скорее подходят для ситуаций, когда из плохого нужно сделать «приемлемое», а не «идеальное», либо использовать это как приём для стилизации. Таким образом, остаются только ручные методы, такие как работа с изображением в ChaiNNer или, в идеале, Adobe Premiere Pro.
Устранение черестрочности: ffmpeg -i "видео" -c:v libx265 -vf yadif -r 24 -b:v 10M "итоговое видео.mp4"
*-vf yadif
— фильтр для устранения чересстрочности, -r 24
— частота кадров, -b:v
— выходной битрейт.
Весь инструментарий в ChaiNNer
Через десяток минут перебора наилучший результат в таком сценарии показал Pooh V4, но он увеличивает разрешение только в 2 раза, что для DVD недостаточно. Повторный апскейл привычными методами будет очень медленным, поэтому лучше использовать более легкий вариант, DigitalFilm, хотя у него не так много плюсов по сравнению с традиционными методами. Я заметил только повышение четкости, так что весь выбор остается за вами.
Сравнения
Итог: Картинка перестала быть мыльной, а также нам удалось исправить плохой мастеринг изображения. Однако можно заметить, что в некоторых сценах остались артефакты плохой блочности исходного кодека MPEG-2, с чем мы ничего не можем поделать.
Итоговая связка
Blu-ray
Более современный DVD обладает заметно улучшившимся качеством видео, вплоть до 2160p, но одна из основных проблем таких записей на данный момент — это огромное количество шума из-за экономии на реставрации, а если уж он ещё и разноцветный, то это настоящая трагедия.
▍ Монохромный шум
В данном примере у нас 1080p видео, на нём присутствует чёрно-белый шум, что означает заметно меньшее количество потерь данных. Чтобы его устранить, самым лучшим выбором будет воспользоваться умным алгоритмом устранения шума, как Neat Video. Однако, если у вас этого контента больше чем пара видео, то вы очень быстро устанете его постоянно перенастраивать и бороться с вылетами. Поэтому в одном из моих проектов я обучил свои апскейлеры (статья), которые дают тот же эффект, что и алгоритм, но без предварительной настройки. Можно просто пускать конвейер и сразу на месте же апскейлить — BW denoise. Однако если изображение забито царапинами, то лучше перейти к ручному методу или к следующему варианту с разноцветным шумом.
Сравнение
Итог: Полностью испарился монохромный шум, но явно было бы не лишним добавить резкости при помощи ещё какого-нибудь апскейлера.
Итоговая связка
▍ Разноцветный шум
Ютуб съел шумы и битрейт — лучше сразу смотрите сравнение
Как правило, это возникает в очень запущенных случаях и на весьма старой оригинальной пленке, откуда было снято изображение для Blu-ray диска. Для этих случаев я тоже постарался. RGB Denoise lite может немного терять мелкие детали, RGB Denoise — самый мощный инструмент, все изображения были также прогнаны через другой очень тяжелый апскейлер для устранения шума, и он мылит задний фон, однако способен победить практически любую картинку с механическим шумом.
Сравнение
Итог: На картинке пропал шум, но при обучении апскейлера RGB Denoise lite для увеличения резкости был задействован другой апскейлер, который накладывает искусственное свечение вокруг главных объектов в кадре. Так что если вам это мешает, то вы можете воспользоваться ручными методами.
Итоговая связка
Запись ТВ вещания
Многие мультики были записаны и оцифрованы при помощи домашних видеопроигрывателей, и для многих из них это остаётся единственной доступной версией. К сожалению, качество записи таких копий часто оставляет желать лучшего. Есть как крайне низкокачественные, так и относительно смотрибельные варианты. Рассмотрим оба случая.
▍ Убитая запись
В этом случае у нас запись ТВ-трансляции 1992 года, сильно пострадавшая из-за кодека и видеомагнитофона. Ярко выражены артефакты сжатия MPEG-2 и низкого битрейта. Оживить такое видео в целом не сложно, хотя я очень много пытался что-то подобрать, но, ответ как всегда, был на поверхности. Первым делом нужно просто устранить чересстрочность, и быстрее всего это сделать силами GPU.ffmpeg -i "видео" -c:v hevc_"ваш аппаратный кодировщик" -vf yadif -r 24 -b:v 10M "итоговое видео.mp4"
Сравнение
Соберём следующую связку апскейлеров в ChaiNNer: сначала RGB denoise lite для устранения блочности на изображении, затем BleedOut, чтобы убрать ореолы, и Ken v1 Eva для масштабирования изображения в 2 раза.
На изображении присутствуют некоторые дефекты апскейлера, но в динамике это вполне терпимо.
Сравнения всех слоёв
Как видно, связка выжала максимум из изображения низкого качества. Однако результат выглядит не совсем естественно. Можно улучшить его, добавив равномерный шум к изображению.
Ютуб покушал шумы, так что я приложил ссылку на файл в полном размере на Google Диск.
файл
Итог: Такую картинку можно улучшить, но чудес ждать не стоит — исходной информации слишком мало.
Итоговая связка
▍ Современная запись
Видео снято в качестве немного ниже, чем транслировал канал, но это не так критично, поскольку отсутствует чересстрочная развёртка. Хотя используется кодек XviD, битрейт выбран удачно, и значимых артефактов нет. Единственное, что заметно, — это некоторая замыленность и низкая детализация. После нескольких экспериментов выяснилось, что достаточно дважды прогнать видео через апскейлер AniScale. Однако стоит учитывать, что скорость обработки заметно падает, поэтому на второй прогон лучше уменьшить разрешение на 25%.
Сравнения
Итог: На большей части сцены картинка значительно улучшилась, хотя в некоторых местах детали сгладились из-за интенсивного шума. Такие записи легко поддаются восстановлению, так как не содержат артефактов, характерных для физических носителей.
Итоговая связка
LaserDisc
Данный аналоговый формат перестали массово выпускать более 20 лет назад, поскольку его заменил DVD. Из-за особенностей формата и его раннего появления, спасать такие записи часто не имеет смысла. Оцифровки обычно делались давно, и легко наткнуться на ужасающий ghosting (размытые следы от предыдущих кадров), который исправить крайне сложно, если вообще возможно. Физический износ диска тоже сильно портит изображение: от появления ореолов и снижения контрастности до зависания кадров.
Примеры того с чем работать не стоит.
Восстанавливать такие записи имеет смысл только в случаях, если на изображении отсутствуют заметные артефакты, кроме цветового сдвига, или если диск отлично сохранился и был качественно оцифрован. Проблема в самом формате: любые физические повреждения, например естественная деградация из-за химических реакций или царапины, напрямую отражаются на качестве видео. В отличие от цифрового DVD, такие диски гораздо более чувствительны к износу, из-за чего артефакты и степень их проявления могут сильно различаться (по началу производства это было заметно ещё с завода). Вероятно, именно поэтому ни один ИИ-апскейлер пока не может бороться с такими дефектами так же эффективно, как с другими носителями, менее подверженными внешним повреждениям.
▍ Восстановимый случай
На исходнике заметны лишь небольшие ореолы вокруг объектов, а также наблюдается сдвиг цветовой палитры в тёплые тона, что характерно при износе Laser Disc. Эти проблемы легко устраняются: ореолы убираются с помощью BleedOut, а увеличение разрешения с смягчением оригинальных линий достигается с Modern Spanimation, финальным этапом добиваемся высокого разрешения картинки уже знакомым AniScale.
Сравнения
Для коррекции цвета воспользуемся Adobe Premiere Pro, чтобы вернуть изображение к естественному балансу. Поскольку материала в данном случае у нас мало, целесообразно уделить это время более качественному подходу, разумеется, при наличии соответствующих навыков.
Итог: Картинка теперь действительно стала приятна глазу, однако настоятельно рекомендую не тратить время на исходники в более плачевном сотоянии: Зачастую апскейлеры именно с Laser Disc, не осиливают даже того, что мы сделали в этот раз.
Итоговая связка
VHS
По сложности работы данный формат находится между Laser-Disc и DVD, но зачастую победить его тоже сложно из-за проблем с цветом.
▍ Убитый экзмепляр
В данном случае разрешение и битрейт видео нормальные, а единственным крупным техническим недостатком являются колебания изображения и не очень хороший алгоритм чересстрочной развертки. Чтобы исправить это, а также выраженные ореолы, неестественные цвета и чёткость изображения, придётся применить всё, что мы ранее изучили. Сначала используем фильтр устранения чересстрочной развертки. Затем BleedOut, RGB Denoise, работа с сатурацией изображения для уменьшения насыщенности, Pooh V4 для улучшения чёткости изображения, а также искусственный шум для придания эффекта естественности.
Скачать несжатое видео
Сравнения
Итог: В целом изображение в сравнении с оригиналом стало значительно лучше, но в основном это заслуга уменьшенной насыщенности и ореолов, а не увеличения изображения.
Итоговая связка
▍ Живой вариант
Изображение будто снимали в пустыне, впервые вижу настолько много шума. Алгоритм устранения чересстрочности сработал отлично, как и RGB Denoise lite (но для лучших результатов всё же стоит выполнять эту работу вручную).
Однако цвета просто ужасные, и на их исправление в ChaiNNer ушло много времени, поэтому рекомендую заниматься этим в профессиональном программном обеспечении, если материала немного.
Сама же картинка по чёткости более чем хорошая, так что можно делать увеличение разрешения в 4 раза с помощью Anime Video V3.
Сравнения
Итог: Хоть запись изначально выглядела очень плохой, она оказалась достаточно гибкой, и мы легко справились с ней.
Итоговая связка
Основные советы
Если вы уже прогнали картинку через один апскейлер, но она не достигает необходимого вам разрешения, то лучше воспользоваться DigitalFilm. Это будет немного эффективнее, чем стандартное повышение разрешения с помощью алгоритмов, но процесс займет больше времени.
Слева апскейлер, справа интерполяция по Гауссу
Однако если вам всё же необходимо заново прогнать картинку через более качественный апскейлер, но не хочется жертвовать очень сильным увеличением времени обработки, то можно добавить в связку Resize Image после первого апскейелера (если он x2), и понизить разрешение на 25%, что почти всегда не будет влиять на итоговую картинку.
Установка ChaiNNer
Помимо значительно отличающегося и более удобного интерфейса, софт запускает апскейлеры только на CUDA. Пользователям AMD в случае линукса, переживать не стоит, при помощи ROCm это легко обходится, но вот для Intel и AMD на Windows запуск поддержвитается только при помощи ONNX либо процессора, а оба этих подхода во много раз замедляют скорость работы нейросетей. И для апскейлинга видео лучше будет воспользоваться всё же Topaz Video AI, либо вы можете всё же установить ROCm (AMD) на свою Windows, но запустить ChaiNNer с ним — это будет не самый лёгкий квест; я сам пока не разобрался как это реализовать. А пользователи NVIDIA могут просто скачать и сразу запустить программу в два клика по ссылке.
На Linux это тоже не самый простой процесс для AMD, так что вот вам гайд:
- Скачайте и распакуйте последнюю версию программы для Linux.
- Запустите программу, чтобы она создала свой локальный venv Python
./chainner
- Как только процесс завершится, в Despondency Manager установите PyTorch.
- Однако эта версия не поддерживает ROCm, поэтому закройте программу. Нам необходимо установить нужные версии пакетов
torch
,torchvision
иtorchaudio
. Однако в данном случае это значительно модифицированное виртуальное окружение (venv) без файла activate, и стандартным способом войти в него не получится. Тем не менее, существует простой способ сделать это, не выходя из текущей директории:python_bin=$(find python/python -type f -name "python3.*" -executable | head -n 1) && "$python_bin" -m pip install "ваши пакеты"
Найти подходящие зависимости можно в моей статье, посвященной ROCm. - Создайте alias для удобного вызова программы из терминала. Выберите подходящий запускатель: его нужно добавлять перед командой для запуска ./chainner.
Для RX 6600/6700 используйте командуHSA_OVERRIDE_GFX_VERSION=10.3.0
, для RX 570/580 —HSA_OVERRIDE_GFX_VERSION=8.0.3
. Для RX 6800 и более новых моделей добавлять запускатель не требуется.sudo nano /etc/bash.bashrc
alias sysmocap='cd ~/"ваша папка с программой" && ./chainner'
Либо более интересный подход, без хардкодного указания директории:alias chainner='cd "$(find ~/ -type d -name "chaiNNer-linux-x64" -not -path "*/\.*" -mount 2>/dev/null | head -n 1)" && ./chainner'
Итог
Подводя итоги всей работы, мне важно отметить несколько ключевых моментов. Во-первых, не существует универсального решения для всех типов контента. Каждый источник требует индивидуального подхода: то, что отлично работает для DVD, может совершенно не подойти для VHS-записей. Ведь каждый апскейлер работает по разному. Во-вторых, перед началом апскейлинга помните: Это может показаться очевидным, но иногда потратить день на поиски лучшей версии гораздо эффективнее, чем неделю пытаться улучшить плохой источник.
В-третьих, прежде чем применять апскейлинг, убедитесь, что решены основные проблема чересстрочности, а после всех процедур — исправлен цветовой баланс.
Напоследок стоит отметить, что в целом, технологии ИИ так-то активно развиваются. То, что сегодня кажется невозможным (например, качественное восстановление LaserDisc), завтра может стать рутинной задачей. Поэтому рекомендую:
- Сохранять оригиналы в максимально возможном качестве
- Следить за обновлениями моделей на openmodeldb.info
- Периодически пробовать обрабатывать «безнадёжные» материалы заново — новые модели могут справиться с ними лучше
И помните главное правило работы со старым контентом: цель не в том, чтобы сделать его похожим на современный, а в том, чтобы максимально раскрыть потенциал оригинала.