Раскрашивание чёрно-белых фото силами нейронной сети

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

Satoshi Iizuka, Edgar Simo-Serra и Hiroshi Ishikawa из университета Васэда, одного из самых престижных ВУЗов Японии, представили работу, в которой наглядно продемонстрировали возможности по распознаванию и раскрашиванию изображений практически любого разрешения. Результаты есть нагляднее всего можно оценить в тридцатисекундном видео из публикации:

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

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

1) На вход подаётся изображение, которое нужно раскрасить.
По заявлению авторов, оно может быть любого размера, но если он отличается от 224x224 пикселя, то подсеть функций глобального уровня получит не оригинальное изображение, а его копию, приведённую к нужному разрешению. While our model is able to process images of any size, it is most efficient when the input images are 224 × 224 pixels, as the shared low-level features layers can share outputs. Note that when the in- put image size is of a different resolution, while the low-level fea- ture weights are shared, a rescaled image of size 224 × 224 must be used for the global features network.

2) Сеть пытается определить, что же изображено на изображении, чтобы не использовать те цвета, которых не может быть на фотографии. В противном случае лица людей могут оказаться цвета травы, а остров в воде получит цвет морской волны

Сравнение результатов работы разных нейронных сетей, раскрашивающих изображения Сравнение результатов работы этой нейросети с представленными ранее в 2016 году работами: Gustav Larsson, Michael Maire, Gregory Shakhnarovich и Richard Zhang, Phillip Isola, Alexei A. Efros

3) После выявления всех особенностей изображения, его, наконец, раскрашивают. Получившийся результат увеличивают (если требуется) до необходимого разрешения, используя метод ближайших соседей и предъявляют на выход.
Совершенно замечательные результаты, на мой взгляд получаются, если подсунуть обученной сети изображение, которое вообще не должно быть цветным. Например вот фотография нашумевшей кометы Чурюмова-Герасименко в цвете :)

Фотография кометы Чцрюмова-Герасименко до и после обработки нейросетью

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

Neural Network-based Automatic Image Colorization

У него есть ограничения и не стоит нагружать его чрезмерно, он ведь работает только для доказательства возможностей сети. А для тех, кто хочет глубже погрузиться в тему или использовать сеть на полную мощь, исходный код, конечно же, доступен на GitHub'е

Дополнительно:

За сим всё ;)