Нейросеть научили в реальном времени превращать наброски в фотографии

Американские и британские разработчики создали приложение, в котором пользователь может сделать набросок и сразу же получить изображение, созданное нейросетью на его основе. Алгоритм состоит из двух частей, одна из которых дорисовывает набросок, а вторая превращает дорисованную картинку в фотографию. Разработка будет представлена на конференции ICCV 2019, статья о ней опубликована на arXiv.org.

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

Разработчики под руководством Эли Шехтман (Eli Shechtman) из Adobe Research создали приложение, которое в реальном времени самостоятельно дорисовывает набросок и превращает его в синтезированную фотографию. Приложение состоит из двух окон и вспомогательных кнопок. В первом окне пользователь рисует набросок, а во втором видит созданное нейросетями изображение. Для начала пользователь выбирает класс объекта, к примеру, ананас, и алгоритм сразу же выдает типичный для него набросок. После начала рисования нейросеть постоянно обновляет набросок, дополняя часть, нарисованную пользователем.

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

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

Помимо публикации статьи о разработке авторы также опубликовали на GitHub исходный код приложения для Linux и macOS, а также краткую документацию.

Любопытно, что существует и обратный проект, превращающий фотографии в наброски. В прошлом году австралийский инженер создал картонную камеру, которая после нажатия кнопки снимает фотографию, преобразует ее в набросок, а затем сразу же печатает на встроенном термопринтере.

Григорий Копиев