Ученые из Беркли создали нейронную сеть, раскрашивающую черно-белые фото в максимально реалистичные цвета

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

Когда только появилась система Google TensorFlow (об этом событии мы писали в декабре), Райан Даль был восхищен тем, насколько качественно с ее помощью можно раскрашивать черно-белые изображения. Результаты были впечатляющими, особенно учитывая, насколько ограничены были ресурсы.

Теперь команда из университета Калифорнии в Беркли использовала подобную технику, чтобы достичь результатов, в 20% случаев неотличимых от настоящих. Звучит не очень впечатляюще, но все же это большой шаг вперед по сравнению с предыдущими попытками.

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

Чтобы получить новые цвета, эта сеть обучается так, чтобы уметь оценивать, насколько велика вероятность того или иного цвета.

Другая проблема состоит в том, что пиксели в большинстве природных сцен выходят ненасыщенными из-за больших площадей неяркого цвета. Яркие цвета, как правило, есть только в небольших точках, и, как следствие, цвета выходили размытыми. Нейронная сеть не спешит экспериментировать с оттенками, считая размытые цвета абсолютной нормой. Решение состоит в том, чтобы распределить веса в функциях потерь по резкости цвета – чтобы выдать резкости цвета больший приоритет, чем насыщенности.

Нейронная сеть инициализировалась из существующей сети, обученной на распознавание, а затем обучалась предсказывать цвет пикселя с использованием 1,3 миллионов изображений из ImageNet. Как было отмечено, можно получить хорошие образцы для обучения, просто сделав любое цветное фото черно-белым.

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

Чтобы понять, насколько хорошо сеть справляется с задачей, был проведен эксперимент: людям показывали фотографии-оригиналы, а затем раскрашенные сетью, и предлагалось выбрать изначальную. В 20% случаев за изначальную фотографию принимали результат работы сети. Вероятно, порой реальность оказывалась просто недостаточно яркой:

И, наконец, метод попробовали на нескольких классических фотографиях. Пожалуй, самыми впечатляющими получились раскраски фотографий Анселя Адамса:

Интересно отметить, что Адамс часто пользовался красным фильтром, чтобы сделать синий на своих фотографиях темнее, чем в действительности.

На самом деле сеть справилась не всего лишь на 20% – сравнение с истиной вышло уж слишком строгим. Все же результаты работы достаточно хороши, чтобы применять эту нейронную сеть в реальных задачах.

Источник: I Programmer