Как мы Evangelion улучшали
К нам, в Московский авиационный институт (на факультет информационных технологий и прикладной математики), привезли новый сервер с GPU A100x8 и 2TB RAM.
Первым делом мы решили его потестить. Под конец года заниматься чем-то серьёзным не очень хотелось, поэтому нагрузили оборудование задачей Enhancement (улучшает изображение, видео, звук).
Для апгрейда взяли Neon Genesis Evangelion (1995-1996): нашли DVD-образ, перенесли его в цифровой формат .mkv.
Оригинальное разрешение картинки 704x480, кадры сильно зашумлены, нет чёткости линий (как в современных аниме), иногда проступают белые точки/полосы от процесса съемки кадров.
Результат нашей работы — видео в формате 4К (2560x1080). Хотя и не без минусов (белые артефакты из-за при процесса съемки аниме никуда не исчезли), но всё равно круто.
В общей сложности мы обработали 26 серий и фильм End Of Evangelion. Выпускать будем постепенно, согласно этому расписанию:
- 1 января — 1-6 серия;
- 2 января — 6-12 серия;
- 3 января — 12-18 серия;
- 4 января — 18-24 серия;
- 5 января — 24-26 серия;
- 6 января — The End Of Evangelion.
Уведомления о новых сериях мы публикуем на нашем канале в Telegram.
А теперь я подробнее расскажу про нейронную сеть, которую мы использовали, и приведу примеры кодеса с пояснениями что там и как.
Real-ESRGAN
Задача GAN — генерировать ненастоящие данные, которые выглядят очень реалистично. Типовая архитектура GAN содержит две сети: генератор и дискриминатора.
Задача генератора создать ненастоящие данные, а дискриминатора — отличить, где настоящие, а где ненастоящие. Тем самым дискриминатор помогает генератору создавать более реалистичные данные.
В чем отличие Real-ESRGAN от просто ESRGAN? В том, что обучение происходит на чистых синтетических данных, а в качестве дискриминатора используется U-Net со спектральной нормализацией.
Синтетические данные
При создании обучающего набора используются всевозможные варианты размытия, методы сжатия JPG, изменения размера, шума.
После того, как собрали данные, сеть ERSGAN приступает обучаться на разных масштабах увеличения изображения (x1, x2, x4)
Использование U-net
U-Net со спектральной нормализацией необходима для стабилизации динамики обучения, также она помогает смягчать чрезмерно острые артефакты изображения, появившиеся при обучении. С помощью U-Net удалось найти баланс между улучшением локальных мест на изображении и подавлением артефактов.
Кодес (с пояснением)
Собственно, теория — это круто, но как добиться результатов на своих данных?
Первым делом надо клонировать репозиторий с Real-ESRGAN.
Откроем терминал, создадим виртуальное окружение, активируем его, поставим все пакеты, что требует репозиторий, и установим сам realesrgan:
Ещё для удобной работы стоит добавить и запустить Jupyter Notebook:
Создадим ipynb и начнём. Импортируем основные библиотеки:
Загрузим нужную нам обученную сеть, список можно найти тут:
Далее указываем параметры для сети (данные параметры только для RealESRGANv2-animevideo-xsx4):
Мы указали параметры для сети, теперь необходимо указать видео. Укажите полный (или относительно папки в которую клонировали репозиторий) путь к файлу.
Поставим библиотеку для работы с видео:
Видео загрузили, теперь посмотрим что с его параметрами:
Вот тут может быть проблема, так как не во всех видео единый формат, тут пришлось поделить на 1001, так как указанная частота 23976/1001:
Грузим наш видос:
Смотрим как сильно апскейлится наше видео:
Создадим метод для записи видео:
И начнём покадрово обрабатывать и записывать видео:
Теперь, если был звук в видео, надо его как-то вытащить. Поможет с этим ffmpeg. Сохраним его в отдельный mp3-файл:
И потом возьмём созданное видео и добавим в него звук:
Всё! Спустя 1 час 30 минут очередная серия Evangelion обработана.
Colab
Ну, а если вам в падлу разбираться с кодом, и вы хотите просто посмотреть на качество улучшения, всегда можете воспользоваться Colab:
- Colab Demo for Real-ESRGAN;
- Colab Demo for Real-ESRGAN (anime videos).
А ещё совсем недавно выложили portable-версии:
Играйтесь, улучшайте аниме и кидайте свои результаты в комментарии и подписывайтесь на наш Telegram-канал, там мы чаще делимся своими экспериментами и новостями.
Обожаю современных ученых.
- Эй нам привезли суперкомпьютер
- Давай переведем Евангелион в 4к.
полезай в ебаный компьютер
Классика!
Комментарий недоступен
Это не современные учёные, а все учёные. А что учёные не люди что-ли? Так ещё и доступ к дорогому оборудованию имеют, так что...
Комментарий недоступен
Синдром утенка какой-то. Ламповость - понятие субъективное конечно, но сейчас, когда у многих 4к телевизоры или даже мониторы смотреть 480р больно. Если хочется Ламповость сохранить, то это надо на элт мониторе ещё и желательно с VHS кассеты смотреть