Как черно-белую фотографию превратить в цветную: без ручной обработки (ИИ в деле!)

Шаг 5: Окрашивание видео

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

  1. Получить черно-белые кадры и загрузить их в подкаталог input_video/.
  2. Читать видео по одному кадру за раз
  3. Имея один кадр, применить то, что мы сделали для фотографии
  4. Имея раскрашенный кадр, сохраните его в другой подпапке: colorized_video_frames
  5. Закрыть окна OpenCv.

Давайте займемся настоящим делом:

Загрузите B_W_Video_Colorization.ipynb Зеркало из моего GitHub.

Первым тестом, который я сделал, был скаченый с Youtube ч/б фильм:

Для этого я использовал бесплатный инструмент: VidPaw.

Применяяя описанные выше шаги, в конце мы сохраним все окрашенные кадры в подпапке colorized_video_frames. Давай сделаем это:

1. Начните с определения файла, который должен быть окрашен (который должен находиться в папке input_video):

2. Определение путей, констант и переменных видео:

3. Загрузка и подготовка модели:

4. Разделение видео, показ кадр за кадром и применение модель:

Вышеуказанный цикл обычно занимает некоторое время. Например, процесс окрашивания этого видео (8 минут), имеющего около 14 000 кадров, занял у меня около 3 часов на MacBook Pro – 2,9 ГГц Core i7 с 16 ГБ 2133 МГц оперативной памяти.

5. После того, как у вас есть файлы с кадрами, вы должны “собрать” его заново, чтобы создать видео. Данная функция может это сделать:

Обратите внимание, что в зависимости от того, какой Video Controler установлен на вашем компьютере, кодек (*’MJPG’) должен быть изменен. Пожалуйста, ознакомьтесь с документацией OpenCV

В конце концов, это был бы опыт “проб и ошибок”.

Теперь он применяется только для того, чтобы применить функцию на окрашенных кадрах:

Полученное “сырое” видео можно посмотреть здесь:

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

Результат здесь:

Как сделать черно-белое фото цветным на онлайн-сервисе Сolourise

Программисты и аналитики сингапурской компании GovTech запустили проект Сolourise на основе искусственного интеллекта для колоризации классических старых фотографий. Команда поставила себе цель – создать изображения с правдоподобными цветами. Но никто не сможет дать гарантии, что новая фотография в точности отображает фактическое положение дел на снимке. Надо сказать, что колоризация является активно изучаемой областью. Можно вспомнить хотя бы раскрашенные в России классические черно-белые фильмы, получившие вторую жизнь. Идеальным результат быть не может – одни фотографии лучше поддаются обработке, а другие – хуже. Нравится новое фото тоже не всем.

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

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

Команда из Сингапура использовала методику глубокого обучения Generative Adversarial Networks (GAN). В нее входит одна нейронная сеть с миллионами параметров, пытающаяся предсказать значения цвета для разных черно-белых пикселей на основе особенностей изображения и другая, пытающая определить фотореалистичность сгенерированных цветов по сравнению с аналогичными фотографиями. Модель продолжает самообучение до тех пор, пока генератор создает «поддельные» цвета.

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

Первоначально модель работала на локальном кластере внутри офиса – доступ к ней имела лишь команда разработчиков. Чтобы результат был виден всем, потребовалось веб-приложение, через которое сервис мог бы получать запросы снаружи. В качестве облачного провайдера была выбрана платформа Google. Она позволяет защититься от атак, хранить и кэшировать статический контент, балансировать и распределять нагрузку.

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

Сервис Colourise хорошо себя показал на изображениях с высоким разрешением, на которых значительную часть фотографии занимают люди. Хорошо справляется и с пейзажами. Итоговые изображения выглядят правдоподобно, если на них есть объекты, присутствующие в обучающем наборе. Модель правильно определяет их и раскрашивает нужным образом.

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

Шаг 1: Lab Цветового Пространства

Обычно мы привыкли кодировать цветные фотографии с помощью модели RGB. Цветовая модель RGB является разновидностью цветовой модели, в которой красный, зеленый и синий свет суммируются различными способами для получения широкого спектра цветов. Название модели происходит от инициалов трех основных добавочных цветов: красного, зеленого, и синего. (red, green, blue)

Но моделью, которая будет использоваться в этом проекте, является “Lab.

Цветовое пространство CIELAB (также известное как CIE L*a*b* или иногда сокращенно просто “Lab” цветового пространства) – это цветовое пространство, определенное Международной комиссией по освещению (CIE) в 1976 году. Он выражает цвет как три числовых значения: L* для яркости и a* и b* для зелено-красных и сине-желтых компонентов цвета.

Цветовое пространство L * a * b * * было создано по теории противоположных цветов, где два цвета не могут быть одновременно зелеными и красными, или желтыми и синими. CIELAB был разработан таким образом, чтобы быть концептуально единообразным по отношению к цветовому зрению человека, означая, что одинаковое количество числовых изменений в этих значениях соответствует примерно такому же количеству визуально воспринимаемых изменений.

В отличие от цветовой модели RGB, цвет Lab предназначен для соответсвия человеческому зрению. Она стремится к единообразию восприятия, а ее L-компонент тесно связан с восприятием человека. Компонент L является именно тем, что используется в качестве входных данных для модели ИИ, то есть для оценки оставшихся компонентов “a” и “b”.

Как раскрасить картинку в фотошопе: простой гайд для новичков

Сразу хотим сказать, что этот метод потребует гораздо больше времени, чем предыдущий. Также здесь понадобятся минимальные навыки работы в Фотошопе, и чем их больше – тем красивее будет результат.

Загружаем снимок в Photoshop и создаем новый пустой слой. Далее используем инструмент «Быстрое выделение» и кликаем на объекты, которые собираемся перевести в один цвет.

Используйте клавишу Alt, чтобы снять выделение с ненужной области

Выбираем инструмент «Кисть», подбираем подходящий цвет и зарисовываем выделенные фрагменты.

Если хотите, чтобы оттенки были не слишком насыщенными, можете уменьшить непрозрачность и нажим кистиДля того, чтобы сохранить присутствие теней и цветовых переходов, измените способ наложения слоя на «Перекрытие»Так уже выглядит гораздо естественнее

Те же самые операции повторяем и с остальными объектами на фото. Напомним последовательность:

  • создаем новый слой;
  • выделяем фрагмент;
  • наносим нужный цвет;
  • изменяем режим наложения слоя.

Для удобства лучше каждый новый слой называть в соответствии с окрашиваемым фрагментом

Если обрабатывать края не слишком аккуратно, то это обязательно будет заметно и рисунок станет выглядеть неестественно. Рекомендуем воспользоваться функцией «Размытие по Гауссу» с небольшим радиусом, чтобы немного сгладить все несовершенства.В разделе «Фильтр» выберите пункт «Размытие», а затем – «Размытие по Гауссу». Дальше просто управляйте радиусом, пока не добьетесь органичного результата

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

Подводя итог, можно сказать, что сделать черно-белое фото цветным в Фотошопе гораздо труднее и дольше, чем с помощью онлайн-сервиса. Для сравнения скажем, что весь процесс у нас занял больше часа, хотя в Algorithmia все было бы готово уже через несколько секунд. Правда результат в Photoshop получается более органичным и предсказуемым, да и все моменты вы можете контролировать самостоятельно.

Пока что это все способы, позволяющие раскрасить черно-белое фото. Поэтому определяйтесь, что для вас важнее – оперативность или качество результата, и скорее используйте на практике все полученные советы!

С помощью приложения на смартфоне

Colorize (iOS)

Это платная программа, но первые три дня она доступна в виде пробной версии. Затем она стоит $4,99 в месяц. Это довольно высокая стоимость по сравнению с описанными ниже приложениями для Android. Тем более что существуют бесплатные веб-сервисы. 

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

Colorize Images (Android)

Это тоже платная программа, в которой первые 10 фотографий можно сделать цветными бесплатно. После этого требуется подписка. Поскольку программы используют тот же алгоритм обработки, что и описанная ниже MyHeritage, эту подписку сложно назвать привлекательным вариантом.

Если вы предпочитаете простоту использования смартфона вместо компьютера, можно заплатить за подписку на 8 часов. Также доступен вариант продолжительностью один месяц. Несмотря на одинаковый алгоритм обработки, результаты отличаются от MyHeritage. Colorize Images предлагает небольшое количество элементов управления. Таким образом, вы можете повлиять на процесс придания фотографиям цвета.

Тут есть два ползунка. Имеются подсказки по работе с этими ползунками, чтобы получать лучшие результаты для фотографий с разным контрастом и качеством изображения. Ползунок Render выдаёт более насыщенные результаты на низких настройках и более тонкие цвета на высоких. Auto Contrast Cutoff предназначается для снимков с низким уровнем контраста.

Качество итоговых снимков примерно на уровне MyHeritage, но цветность разных элементов различается.

Раскрасить черно-белое фото онлайн за один клик в Algorithmia

Для того, чтобы сделать картинку черно-белой онлайн созданы десятки интернет-ресурсов, а вот для обратной функции предусмотрен всего один – Algorithmia. Работа этого необычного сайта выстроена на практическом применении нейросетей. Помимо того, что он может переводить изображение из черно-белого в цветное, ему также под силу:

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

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

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

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

Процесс раскрашивания занимает приблизительно полминуты. Дальше нам предлагают оценить фотографию до и после.

Перемещайте сиреневый ползунок, чтобы увидеть результат изменений

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

––––– РЕКЛАМА –––––

Давайте сравним – слева представлен оригинал фото, которое мы обесцветили и загрузили на сайт, а справа – его раскрашенный вариант

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

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

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

Полуавтоматический метод при помощи PhotoShop Elements

Photoshop Elements 2020 предлагает возможность окрасить чёрно-белые фотографии при помощи автоматического, полуавтоматического и ручного методов. Доступ даётся в меню в разделе Enhance > Colorize Photo.

Результаты лучше, чем в приложениях на смартфоне и веб-сервисах. Предлагается четыре варианта окрашивания после автоматического. Качество итоговой фотографии может быть таким же, как в приложениях и веб-сервисах. Зато здесь можно использовать одну из заранее заданных настроек в качестве начальной точки и затем вносить изменения вручную.

При таком подходе необходимо использовать инструменты Selection Brush или Magic Wand, чтобы выбирать определённые части изображения и применять к ним цвета. Можно нажать на кнопку сброса, переключиться в ручной режим и окрасить изображение с нуля при помощи этого процесса.

Когда вы контролируете процесс самостоятельно, результаты могут получиться лучше, чем в сервисах и мобильных приложениях. При этом они всё равно не дотягивают до профессиональных программ вроде Photoshop. Зато при помощи Photoshop Elements 2020 с полуавтоматическим методом можно окрашивать фотографии за 5 минут.

Что дальше

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

Уделите внимание не точности раскрашивания, а стабильности переходов между отдельными кадрами. Или можете собирать большие изображения из мелких «лоскутков».

Можете раскрасить свои чёрно-белые изображения с помощью всех трёх описанных версий нейросети на FloydHub.

  • Для применения альфа-версии просто замените файл woman.jpg на свой файл с тем же названием (размером 400×400 пикселей).
  • Для бета-версии и полной версии добавьте свои картинки в папку Test, а потом выполните FloydHub-команду. Или можете загрузить их напрямую в Notebook в папку Test, прямо во время работы. Эти изображения должны быть строго 256×256 пикселей. Все тестовые картинки можете загрузить в цвете, они всё равно будут автоматически преобразованы в чёрно-белые.

Ручное окрашивание в Photoshop

Для получения максимально качественных результатов нужна программа Photoshop. В ней вы можете вручную наносить каждый цвет при помощи смешивания слоёв.

Результаты могут получиться превосходными. Правда, может потребоваться от 20 минут до более чем часа, если окрашивать фотографии вручную. Если вы готовы потратить столько времени, ниже будет описано, как это делается.

Создание цветных слоёв

Нажмите на иконку создания нового слоя внизу панели «Слои». Иконка выглядит как наполовину чёрный, наполовину белый круг. Выберите «Цветовой баланс».

Для этого цвета создаётся оттенок кожи. Красный выставили на + 20, зелёный на -20, синий на -65. Это создаст цвет по всему изображению, который затем будет обрабатываться и маскироваться. Закройте диалоговое окно «Цветовой баланс».

Примените стиль слоя

Правой кнопкой мыши нажмите на Color Balance 1 Layer и выберите опции смешивания. Левой кнопкой мыши нажмите на чёрную точку Underlying Layer и перетащите на значение 35. Удерживайте кнопку Alt и перетащите указатель на чёрную точку, установите значение 175.

Удерживая кнопку Alt, перетащите левую половину белой точки на 235 и нажмите OK. Это сделает смешивание цветов более эффективным.

Очистка цвета

Убедитесь, что прикреплённая к Color Balance 1 Layer маска активна и нажмите Ctrl для преобразования в чёрный и сокрытия цветов.

Нажмите на клавиатуре кнопку D, чтобы задать чёрно-белую цветовую палитру. Нажмите кнопку X для переключения между двумя цветами. Используйте кисть с плавной границей белого цвета на переднем плане для окрашивания. Если ошибётесь, переключись на чёрный и закрасьте ошибку. Выбирайте размер кисти по своему усмотрению.

Осторожно закрашивайте

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

Если вы закрасили что-то лишнее, пройдитесь по участку чёрным цветом.

Когда закрашивание закончено, нажмите правой кнопкой мыши на слой и выберите «Копировать стиль слоя», а затем создайте новый слой цветового баланса, задайте цвета. Прежде чем правой кнопкой мыши нажать на новый слой, выберите «Вставить стиль слоя».

Повторите и завершите

Для каждого нового создаваемого цвета нажимайте правой кнопкой мыши на слой и выбирайте «Вставить стиль слоя» для применения смешивания.

Это сэкономит время и сделает процесс менее утомительным, чем если каждый раз вручную применять стиль слоя. Когда изображение окрашено, если вы хотите сделать цвет более насыщенным, создайте слой Hue/Saturation Adjustment и установите насыщение между + 15 и + 30.

Альфа-версия

Альфа-версия

  • С помощью этой команды мы смонтировали на FloydHub публичный датасет:
    На FloydHub вы можете просматривать и использовать этот и многие другие публичные датасеты.
  • Включили Tensorboard с помощью команды
  • Запустили задачу в режиме Jupyter Notebook с помощью команды

Чему мы научились при работе над альфа-версией

  • Чтение исследовательских работ — тяжёлый труд. Но стоило обобщить ключевые положения статей, и штудировать их стало проще. Это также помогло включить в эту статью некоторые подробности.
  • Нужно начинать с малого. Большинство найденных нами в сети реализаций состояли из 2—10 тыс строк кода. Это сильно мешает получить представление об основной логике. Но если под рукой есть упрощённая, базовая версия, то легче читать и реализацию, и исследовательские работы.
  • Не надо лениться разбираться в чужих проектах. Нам пришлось просмотреть несколько десятков проектов по раскрашиванию изображений на Github, чтобы определиться с содержимым своего кода.
  • Не всё работает так, как задумано. Возможно, сначала ваша сеть сможет создавать только красный и жёлтый цвета. В первый раз мы для окончательной активации использовали функцию активации Relu. Но она генерирует только положительные значения, и поэтому синий и зелёный спектры ей недоступны. Этот недостаток удалось решить, добавив функцию активации tanh для преобразования значений по оси Y.
  • Понимание > скорость. Многие виденные нами реализации исполнялись быстро, но с ними трудно было работать. Поэтому мы решили оптимизировать наш код ради скорости добавления новых возможностей, а не исполнения.

Общее

Идея этого урока будет заключаться в разработке полностью автоматического подхода, который будет генерировать реалистичные цвета в черно-белых (B & W) фотографиях и видео. В оригинальной статье, авторы приняли глубинную неопределенность проблемы, представив ее в качестве задачи классификации с использованием классовой балансировки во время обучения для увеличения разнообразия цветов в результате. Подход искусственного интеллекта (ИИ) реализован в виде прямого прохода в СНС (“Свёрточная Нейронная Сеть”) / CNN (” Convolutional Neural Network”) во время тестирования и обучен работе с более чем миллионом цветных изображений.

Вот фотокарточка 1906 года, на которой показано одно из первых испытаний самолета Сантоса Дюмона “14-бис” в Париже:

И его цветная версия с использованием моделей, разработанных с использованием этой техники искусственного интеллекта:

Такая же техника может быть применена к старым видеозаписям. Здесь видеозапись черно-белой съемки города Рио-де-Жанейро, Бразилия, 1932 года:

И этаже версия, но уже в цвете:

Бета-версия

на FloydHub публичный датасетUnsplash

Выделитель признаков

Количество обработанных фильтрами изображений на каждом этапе.Уменьшаем размер в три этапа.

Чему научились

  • Сначала побольше экспериментов с небольшими сериями, а потом можно переходить к большим прогонам. У нас были ошибки даже после 20–30 экспериментов. Если что-то выполняется, ещё не значит, что оно работает. Баги в нейросетях как правило менее заметны, чем традиционные ошибки программирования. К примеру, одним из наших самых причудливых багов был Adam hiccup.
  • Чем разнообразнее датасет, тем больше коричневого будет в изображениях. Если в вашем датасете очень похожие изображения, то нейросеть будет работать вполне прилично без применения более сложной архитектуры. Но такая нейросеть будет хуже обобщать.
  • Формы, формы и ещё раз формы. Размеры картинок должны быть точными и пропорциональными друг другу в течение всей работы нейросети. Сначала мы использовали изображение в 300 пикселей, потом несколько раз уменьшили его вдвое: до 150, 75 и 35,5 пикселей. В последнем варианте потерялось полпикселя, из-за чего пришлось подставлять кучу костылей, пока не дошло, что лучше использовать двойку в степени: 2, 4, 8, 16, 32, 64, 256 и так далее.
  • Создание датасетов: a) Отключите файл .DS_Store, иначе он сведёт вас с ума. б) Проявите выдумку. Для скачивания файлов мы воспользовались консольным скриптом в Chrome и расширением. в) Делайте копии исходных файлов, которые вы обрабатываете, и упорядочивайте скрипты для очистки.
Поделитесь в социальных сетях:FacebookTwittervKontakte
Напишите комментарий