Как сделать цветное изображение черно-белым
Как сделать черно-белое фото цветным на онлайн-сервисе Сolourise
Программисты и аналитики сингапурской компании GovTech запустили проект Сolourise на основе искусственного интеллекта для колоризации классических старых фотографий. Команда поставила себе цель – создать изображения с правдоподобными цветами. Но никто не сможет дать гарантии, что новая фотография в точности отображает фактическое положение дел на снимке. Надо сказать, что колоризация является активно изучаемой областью. Можно вспомнить хотя бы раскрашенные в России классические черно-белые фильмы, получившие вторую жизнь. Идеальным результат быть не может – одни фотографии лучше поддаются обработке, а другие – хуже. Нравится новое фото тоже не всем.
Создатели сервиса гарантируют, что загруженные пользователями фотографии не будут предоставляться третьей стороне. Немного расскажем о том, как появился на свет этот интересный сайт.
Ручная колоризация фотографии является очень трудоемким процессом. Специалисту необходимо сперва детально изучить исторический, культурный и географический контекст работы и подобрать соответствующие требуемые цвета. Затем черно-белое фото раскрашивают с помощью программ. Чаще всего это обычный Photoshop. Такова очень упрощенная схема. Аналогично свои задачи решает и компьютерная программа. Она должна идентифицировать объекты на черно-белом фоне и определить для них приемлемый цвет с учетом прошлого опыта. Затем происходит раскраска.
Команда из Сингапура использовала методику глубокого обучения Generative Adversarial Networks (GAN). В нее входит одна нейронная сеть с миллионами параметров, пытающаяся предсказать значения цвета для разных черно-белых пикселей на основе особенностей изображения и другая, пытающая определить фотореалистичность сгенерированных цветов по сравнению с аналогичными фотографиями. Модель продолжает самообучение до тех пор, пока генератор создает «поддельные» цвета.
Для обучения модели был использован набор из 500 тысяч старых доступных фотографий и множество графических процессоров NVIDIA V100. Для улучшения результатов была задействована открытая библиотека изображений от Google. Это помогло обработать части тела, с которыми оригинальная модель плохо работала: руки, ноги, трудно идентифицируемые конечности. Помощь Google увеличила и скорость обучения.
Первоначально модель работала на локальном кластере внутри офиса – доступ к ней имела лишь команда разработчиков. Чтобы результат был виден всем, потребовалось веб-приложение, через которое сервис мог бы получать запросы снаружи. В качестве облачного провайдера была выбрана платформа Google. Она позволяет защититься от атак, хранить и кэшировать статический контент, балансировать и распределять нагрузку.
Этап окрашивания требует значительных вычислительных мощностей и занимает около 3 секунд. Задачей постановки запросов в бэкенд занимается NGINX-сервер. Он может попросить пользователя повторить попытку позже, если частота входящих запросов превышает скорость работы внутренних служб. Ключевым моментом архитектуры является автоматическое масштабирование виртуальных машин в зависимости от объема трафика. Это позволяет экономить средства, так как дополнительные мощности активируются только в случае запроса на них.
Сервис Colourise хорошо себя показал на изображениях с высоким разрешением, на которых значительную часть фотографии занимают люди. Хорошо справляется и с пейзажами. Итоговые изображения выглядят правдоподобно, если на них есть объекты, присутствующие в обучающем наборе. Модель правильно определяет их и раскрашивает нужным образом.
А вот если на фотографии оказывается нечто нераспознанное, может получиться забавный эффект окклюзии. В компьютерном зрении это важная проблема, связанная с трудностями идентификации частично показанных объектов.