Генеральный директор проекта neuro.love Денис Ширяев поделился удачными практиками и алгоритмами для восстановления и улучшения качества старых фильмов. Для самостоятельных экспериментов требуются базовые знания Abode Premiere или After Effects, но результат того стоит!
Пример одной из работ команды:
Подготовка материала
Самое главное – это подготовка материала к работе. К сожалению, не все видеозаписи хорошо сохранились, особенно если им 100 и более лет. Например, если взять материал с Теодором Рузвельтом на острове Пеликан в 1915 году, то даже вся мощь ИИ не поможет. Никаких чудес после улучшения не произойдёт:
Зато вот такой исходник прекрасно подходит для реставрации:
Для работы ИИ требуются детали, потому что алгоритму нужно «видеть» чёткую картинку, нюансы присутствующих в ней объектов и т. д. Другими словами, большое количество деталей помогает ИИ понять, что можно «дорисовать» в кадре для улучшения его качества.
Восстановите фактический FPS, автоматически удалив повторяющиеся кадры
Настоящий вау-эффект получается благодаря сглаживанию движения. Преобразование изображения в формат 60 кадров в секунду делает людей в документальном фильме намного более реалистичными.
Сто лет назад камеры снимали фильмы со скоростью 14-18 кадров в секунду. Затем телевизионное вещание происходило с частотой 24 кадра в секунду. А потом пришла эра интернета. В результате почти все старые фильмы, оцифрованные сегодня, не имеют в своих метаданных фактической частоты кадров.
Вот пример того, как выглядит фильм с частотой 30 кадров в секунду:
А вот как выглядит версия с восстановленным FPS с 20 кадрами в секунду:
На первый взгляд разница небольшая, верно? А вот и нет!
Версия с 30 кадрами в секунду содержит много дублированных кадров. Есть несколько способов искусственно задать 30 кадров в секунду. Мы будем использовать самый популярный — дублирование кадров. Итак, в нашем материале каждый кадр продублирован 2 или 3 раза:
Это не критично, если вы просто зритель, но критично для ИИ, если нам в конечном итоге нужно получить 60 кадров в секунду. Например, вот Мэрилин Монро при 60 кадрах в секунду. Почувствуйте разницу — она выглядит такой «настоящей»:
Шумоподавление
После удаления дубликатов кадров можно эффективно убрать шум. Для этого можно использовать плагин Neat Video. У него почти понятный интерфейс, по нему много учебных пособий и он является эффективным инструментом для уменьшения шума. Плагин платный и стоит 130$. если вы решите его купить, ознакомьтесь с кратким руководством по его использованию:
Шумоподавление — сложная задача, требующая отдельной статьи. Но рекомендуем разделить фильм на сцены и применить разные профили шумоподавления к каждой сцене.
После шумодава изображение будет выглядеть так:
Уже лучше, так что двигаемся дальше.
Устраните мерцание
Одна из проблем, которая была у старых камер, называется «мерцание». Она была вызвана механическими проблемами в устройстве и настройке камеры. Каждый кадр получал разное количество света из-за разной длины выдержки.
Выглядит мерцание так:
Чтобы убрать мерцание, можно использовать плагины FlickerFree (149$) или GBDeflicker (5$).
Выполните Deblur
Deblur — изменение размера отснятого материала до реального масштаба.
Это самая «ненаучная» часть урока. Исходный материал может быть любого размера, от 128p до 2, 4 и так далее K. Проблема в том, что «плотность информации» в кадрах или «насыщенность данными» может быть при этом достаточно низкой.
Почему этот шаг важен? Когда мы просим ИИ дорисовывать кадр (для увеличения масштаба фотографии или кадра видео), нам нужно передать ИИ как можно больше деталей. Это важно, потому что алгоритмы апскейла (о том, как они работают, вы можете прочитать здесь) требуют детальных шаблонов пикселей, которые можно было бы перерисовать.
Взгляните на эту фотографию ночной рыбалки на Гавайях, сделанную в 1948 году:
А вот другая версия той же картинки:
Здесь размер исходного изображения увеличен в 4 раза, из-за чего появилось «размытие» и другие проблемы. Никаких новых деталей не было добавлено, потому что было выполнено только «изменение размера» и не задействован искусственный интеллект. Эта проблема постоянно возникает со старыми кадрами, доступными в интернете.
Даже если у вас есть доступ к исходному материалу и к сканирующему оборудованию, вы можете сканировать исходный материал практически в любом разрешении (даже в 16K). Однако объём данных все равно будет ограничен, а плотность информации будет относительно низкой.
Но решение простое. Нужно менять размер кадра, на глаз оценивая чёткость краёв объектов.
Это выглядит примерно так:
(подход, правда, ненаучный, но он работает)
Лучше сделать несколько прогонов, прежде чем реальный размер отснятого материала будет восстановлен.
Итак, кадры почти готовы. Теперь можно перейти к последним нескольким шагам и отшлифовать видео.
Стабилизация
Этот шаг уменьшит «дрожание камеры» и является необязательным. Существует дюжина методов стабилизации изображения, возьмём самый простой — Warp Stabilization.
Вот руководство:
Но вам решать, насколько «хардкорным» способом вы хотите добиться стабилизации. Итог будет выглядеть примерно так:
Применение ИИ
Когда предварительная обработка будет завершена, можно переходить к использованию искусственного интеллекта для улучшения изображения. Можно использовать разные инструменты:
Решения с открытым исходным кодом или коммерческие варианты
Вам потребуется мощный ПК с современной видеокартой (как вариант — облачный сервер) и некоторые технические навыки.
Чтобы сделать апскейл (перевод видео из меньшего разрешения в большее) можно использовать BasicVSR++ с открытым исходным кодом или платное ПО Topaz Video Enhance (200 $).
Для генерации 60 кадров в секунду — DAIN или Flowframes.
Для раскрашивания — Deoldify (разработчик больше не поддерживает репозиторий).
Чтобы выполнить реставрацию лица – приложение Remini.
Есть и другие приложения, но здесь перечислены те, которые были лично протестированы автором.
Улучшение с помощью neuro.love
Neuro.love предлагает решение для обработки мультимедиа с помощью ИИ. Для работы нужно загрузить исходное видео сюда :
И выбрать, какие фильтры AI вы хотели бы применить:
Например, применим Upscale к 4K, 60 FPS, восстановление лица и раскрашивание. Поскольку исходный материал немного ускорен, можно применить небольшое замедление.
Прежде чем рендерить весь отснятый материал, сделаем предварительный рендеринг и убедимся, что качество демо удовлетворительное.
Примерно через 20 минут получится вот такое видео:
Использовать ли раскрашивание — решать вам. Иногда с художественной точки зрения стоит оставить чёрно-белый вариант.
И вот, наконец, видео готово:
Что скажете? Приемлемый результат?
Что ещё интересного есть в блоге Cloud4Y
→ Малоизвестный компьютер SWTPC 6800
→ Сделайте Linux похожим на Windows 95
→ Бесплатные книги, полезные для IT-специалистов и DevOps
→ WD-40: средство, которое может почти всё
→ Игры для MS-DOS с открытым исходным кодом
Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем только по делу.