Генеральный директор проекта 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.

Вот руководство:

Но вам решать, насколько «хардкорным» способом вы хотите добиться стабилизации. Итог будет выглядеть примерно так:

Применение ИИ

Когда предварительная обработка будет завершена, можно переходить к использованию искусственного интеллекта для улучшения изображения. Можно использовать разные инструменты:

Решения с открытым исходным кодом или коммерческие варианты

Вам потребуется мощный ПК с современной видеокартой (как вариант — облачный сервер) и некоторые технические навыки.  

  1. Чтобы сделать апскейл (перевод видео из меньшего разрешения в большее) можно использовать BasicVSR++  с открытым исходным кодом или платное ПО Topaz Video Enhance (200 $).

  2. Для генерации 60 кадров в секунду — DAIN или Flowframes.

  3. Для раскрашивания — Deoldify (разработчик больше не поддерживает репозиторий).

  4. Чтобы выполнить реставрацию лица – приложение Remini.

Есть и другие приложения, но здесь перечислены те, которые были лично протестированы автором. 

Улучшение с помощью neuro.love

Neuro.love предлагает решение для обработки мультимедиа с помощью ИИ. Для работы нужно загрузить исходное видео сюда :

И выбрать, какие фильтры AI вы хотели бы применить:

Например, применим Upscale к 4K, 60 FPS, восстановление лица и раскрашивание. Поскольку исходный материал немного ускорен, можно применить небольшое замедление.

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

Примерно через 20 минут получится вот такое видео:

Использовать ли раскрашивание — решать вам. Иногда с художественной точки зрения стоит оставить чёрно-белый вариант. 

И вот, наконец, видео готово:

Что скажете? Приемлемый результат?


Что ещё интересного есть в блоге Cloud4Y

→ Малоизвестный компьютер SWTPC 6800

→ Сделайте Linux похожим на Windows 95

→ Бесплатные книги, полезные для IT-специалистов и DevOps

→ WD-40: средство, которое может почти всё

→ Игры для MS-DOS с открытым исходным кодом

Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем только по делу.

Комментарии (17)


  1. psycho-coder
    18.05.2022 16:23
    +1

    Прогрэсс сложно отрицать, но имхо пока-что это «танцующий медведь».


    1. Ivnika
      18.05.2022 16:44

      ПрогрЭсс - о да! :D


      1. psycho-coder
        18.05.2022 16:57

        Долго думал как правильно, надо было в словарь посмотреть)


  1. nickolas059
    18.05.2022 16:46
    +3

    Актер в сцене с поездом и шпалами нереально рисковал


    1. lair
      18.05.2022 16:54
      +6

      Если мне память и зрение не изменяют, это фильм "Генерал" Бастера Китона с Бастером Китоном, который делал много рискованных трюков. Вот вам подборочка: https://www.youtube.com/watch?v=frYIj2FGmMA


  1. artemisia_borealis
    18.05.2022 17:15
    +4

    Результат интересный, но зачем раскрашивать? Почему не оставить Ч/Б или сепию.
    Восстановить оригиналы, убрав «изгрызенность» временем, это хорошая идея, но привносить свои улучшайзинги — это выглядит очень маркетологически.
    Когда авторы делали свои фильмы, они (может, и хотели бы теоретически цвета) знали, что это будет Ч/Б (сепия) картинка со своими выразительными возможностями и акцентами, с выставлением света, наконец. Не надо лепить цвет там, где он не нужен и не задумывался.

    А вообще-то
    Кино погубили две вещи: это появление звука и появление цвета.


    1. INSTE
      18.05.2022 17:23
      +3

      Заголовок спойлера
      Так 4k и 60fps тоже самое сделали, превратив кино в мыльную оперу в окне.


    1. alex103
      19.05.2022 06:14
      -1

      ну да, ну да..

      Ну посмотрите "Аватар" Кэмерона в ч/б и без звука...

      :-)


      1. gscdlr
        19.05.2022 08:00

        Хорошая идея, посмотрю-ка "Интерстеллар" с ч/б фильтром, мьютом и субтитрами. Должно быть круто.


  1. Coppermine
    18.05.2022 17:22
    +6

    Я очень хотел пройтись по словам "реставрация" и "восстановление", но это очень хорошо сделали до меня. Но даже если мы забили на достоверность и нужна просто красивая картинка, то всё по-прежнему плохо. Я вижу как людей буквально размазывает по кадру, как за ними тянутся шлейфы и как деформируются подвижные объекты. Я вижу как лицо телесного цвета становится синим и обратно. Самое печальное, что таких материалов становится всё больше...


    1. Moskus
      19.05.2022 06:34
      +2

      Более того, обработка, которая может действительно считаться реставрацией (устранение мерцания, виньетирование) получается всё ещё не очень. Зато вовсю дорисовывают что угодно. Наткнуться на оригинал всё сложнее. Впрочем, это хорошо соотносится с тем, что люди делают выбор в пользу фактоидов, а не фактов. Правдоподобной фантазии вместо реальности.


  1. addewyd
    18.05.2022 17:30

    Зачем всё так сложно и дорого? Есть же avisynth.


  1. inferrna
    18.05.2022 21:06
    +2

    Шумодав мылит в тенях. В исходном видео сквозь шумы угадываются детали, в "очищенном" просто мыло мыльное. Ну и раскрашивание страдает - синюшные руки, например.


  1. DenisSDK
    18.05.2022 21:44
    +3

    Есть более бытовая задача

    Видосы, снятые на vhs и уже оцифрованные, улучшить до качества «снято на айфон»


  1. PereslavlFoto
    19.05.2022 00:19

    Все шаги, которые вы здесь рассказали, довольно понятная штука. Ну, вот разве что раскрашивание через ИИ несколько в новинку.

    Однако главная проблема не там, где вы её решили.

    ГРЯЗЬ И ЦАРАПИНЫ. Настоящая проблема здесь, особенно царапины. Что с ними-то делать? Для цветной плёнки уже придумали Digital ICE с его четырьмя цветами, и он хорошо определяет место царапины, однако весьма дурно закрашивает царапину. Приходится всё переделывать за ним. Ещё придумали мокрое сканирование, однако оно чудовищно трудоёмкая и дорогая штука.

    Итак, не знаете ли вы, как теперь убирают царапины с чёрно-белых кадров?

    Спасибо.


  1. LonerD
    19.05.2022 23:02
    +1

    "Раньше было лучше".

    А если серьёзно - результат неплох за одним исключением. Убирать зернистость - неблагодарное и ненужное дело, вместе с ней убирается и детализация, а картинка становится слегка "пластилиновой".


  1. melodictsk
    20.05.2022 07:23

    Надо понимать, что процесс тут автоматический. Нет цели сделать максимально качественно, а сделать максимально быстро и просто.