Пару недель назад на Geektimes публиковался материал о том, что нейронные сети научились окрашивать черное-белые фото. Нейронные сети давно уже умеют многое, не только работать с фотографиями. Но это, вероятно, одна из наиболее показательных демонстраций возможностей сетей. Еще более показательной является «кастомизация изображений» ИИ DeepDream от Google, хотя получаемые изображения являются несколько… психоделическими, скажем так.

Теперь же нейронную сеть научили окрашивать черно-белые фильмы. Об этом сообщил пользователь mar_cnu. Соответствующий инструмент по расцвечиванию черно-белых фильмов создан именно его стараниями. И хотя результат нельзя назвать идеальным, все довольно неплохо.

В качестве исходного материала он выбрал трейлер старого французского фильма от 1964 года. Вот исходный фрагмент:



Разработчик объяснил свой выбор тем, что в трейлере есть все, что нужно — джунгли, река, люди, дома, дороги. Вот, что получилось после обработки видео:



Как видим, результат не идеальный, как и говорилось выше. Но одной из причин этого может быть само исходное видео. Оно нечеткое, как и все фильмы тех времен, зачастую на «картинке» все сливается, поэтому логично, что и у программы возникают затруднения.

Сделано все это было следующим образом:

1. Найдено исходное видео;
2. Исходник конвертируется при помощи вот этого сервиса;
3. Запускаем скрипт

for file in video/*
do
echo "$file"
th colorize.lua "$file" «color-${file%.jpg}.png»
done

4. ffmpeg -i «color-frame%04d.png» -c:v libx264 colorvideo.mp4
5. ffmpeg -i blackandwhitevideo.webm audio.mp3
6. 6) ffmpeg -i colorvideo.mp4 -i audio.mp3 -c:v libx264 -c:a copy -strict


Для сервиса, как верно заметили пользователи, самым сложным заданием является реализовать плавный переход между отдельными кадрами. Если поставить видео на паузу, часто удается «поймать» кадр с почти идеальными цветами. Но вот осуществить плавный переход между кадрами — это отдельная сложная задача.

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


  1. tormozedison
    28.04.2016 22:14
    -3

    Раньше, чтобы «оцветнить» чёрно-белое изображение на экране телевизора, использовали плёнку-светофильтр с плавным переходом цветов по вертикали. Теперь, наоборот, искусственно омонохромливают изображение на экранах устройств с iOS и Android штатными средствами этих ОС.


    1. Maxmaxmaximus
      01.05.2016 17:29

      Нет.


  1. Beholder
    28.04.2016 22:42
    +3

    Да хватит уже врать, никакой это не ИИ. Ну да, есть там какая-нибудь нейронная сетка, которая пытается что-то угадать по десяткам или сотням заранее загруженных образцов. Причём получается у неё это так себе. ИИ, если был бы, рассуждал логически, что во что покрасить.


    1. Kanut79
      29.04.2016 09:50
      +13

      Это так называемый «слабый ИИ», то есть формально всё верно :)

      Кроме того как бы нам не хотелось верить во что-то другое, но наш мозг это грубо говоря тоже в общем-то всего лишь «нейронная сетка, которая пытается что-то угадать по десяткам или сотням заранее загруженных образцов». :)


      1. QWhisper
        29.04.2016 11:58
        +3

        Это кстати хорошо заметно, когда взаимодействуешь с очень невнятно говорящим человеком. По мере набора информации, качество распознавания речи возрастает. :)


        1. ra3vdx
          29.04.2016 20:27

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

          И действительно, как Вы заметили, всё зависит от количества обработанной информации. В качестве примера приведу эпизод из детства — современные (по тем временам) фильмы показывали по польским каналам и мы, жители приграничного района, смотрели именно их (ни интернета, ни VHS тогда не было). Надо ли говорить, что польским языком мы владели на очень приличном уровне?


      1. Mii
        01.05.2016 15:43

        Ваш — да!


  1. NikitosZs
    29.04.2016 00:25
    +1

    Синие и зелёные лица, ярко вспыхивающие рукава и многое другое…


    1. link0ln
      29.04.2016 14:50
      +1

      ну… чуть лучше, чем никак, уже что-то…


  1. DROS
    29.04.2016 00:29
    +15

    VHS-style


  1. KvanTTT
    29.04.2016 01:50

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


    1. Meklon
      29.04.2016 18:19
      +1

      Я не могу представить видео как трёхмерный параллелепипед. Вы бы еще музыку как тессеракт попросили вообразить ((


      1. KvanTTT
        29.04.2016 18:32
        +1

        Все просто — картинка двухмерная, а время является дополнительной осью.


      1. Sadler
        29.04.2016 18:40

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


    1. Keyten
      01.05.2016 03:05

      Интересно, а почему не обучать тоже на видео?


  1. Drakoninarius
    29.04.2016 10:54

    а в чем принципиальная разница между оцвечиванием изображений и видео? учитывая что видео, по сути, последовательность изображений.


    1. Kanut79
      29.04.2016 10:57

      Ну если они сначала разбивают видео на кадры, потом расцвечивают, а потом снова делают из этого видео, то разницы никакой :)


      1. Drakoninarius
        29.04.2016 11:11
        -2

        Врятли они это делают как-то иначе, емнип все ПО для монтажа\постобработки видео при рендере обрабатывает видео именно покадрово.


        1. Sadler
          29.04.2016 16:42
          +5

          Как раз следует загонять в нейросеть последовательность кадров, а не один кадр, это сильно снижает ошибку. Говорю потому, что сам активно занимаюсь нейросетями, особенно их приложением к графике и видео. Потому работа в этой статье в значительной мере проведена халтурно: при корректной реализации проблемы «плавного перехода между кадрами» либо не существовало бы вовсе, либо это бы менее бросалось в глаза.


    1. Artima
      04.05.2016 12:42

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


  1. stepik777
    29.04.2016 20:08

    Уже есть несколько нейросетей для колоризации изображений. Какой-то чувак с помощью ffmpeg разбил видео на кадры, пропустил через одну из этих нейросетей и собрал обратно, и это теперь новость? Вот если бы кто-нибудь сделал нейросеть, изначально ориентированную на видео, это другое дело, она могла бы использовать информацию сразу с нескольких кадров, чтобы определить в какой цвет нужно красить тот или иной объект.


  1. QtRoS
    30.04.2016 23:25
    +1

    Не хочется обижать авторов, но заявление слишком громкое. Пока фактически достигнут уровень «Растительность окрашена в зеленый цвет».


  1. psman
    01.05.2016 21:36
    +1

    image пока как то так