В предыдущей статье мы с вами знакомились, а кто-то освежал в памяти, с тем, как мы научили машин понимать нашу речь. Сейчас сложно удивить программой или роботом, который может вести разговор с человеком. Но что если человек скажет роботу «нарисуй мне закат на морском берегу»? Сможет ли робот понять это и нарисовать? Теперь сможет. Благодаря разработкам Xiaodong He (не будем переводить имя, дабы его не исковеркать) и его команде исследователей искусственного интеллекта. Как работает их творение и можно ли открывать картинную галерею с работами данной программы, мы узнаем далее. Поехали.
Кратко о сути
Если утрировать, то программа работает по принципу «я рисую, то что мне говорят». Вы говорите «фиолетовый чайник с длинным носиком», а программа пиксель за пикселем пытается максимально точно изобразить данную информацию, другими словами, визуализировать ваши слова. Для этого ей необходимо, в первую очередь, понимать, что вы говорите, потом определить самые важные слова — векторы, на базе которых можно строить предположения касательно необходимого варианта изображения.
Xiaodong He говорит об этом так: «…Если вы воспользуетесь Bing и поищите птичку, вы получите картинку птички. Но в нашем случае, картинка создается компьютером, пиксель за пикселем, с нуля… Данные птицы могут не существовать в реальном мире — они будут примером представления компьютера о птицах…»
Данный проект не стал первым для Xiaodong He и его коллег. Прежде они занимались разработкой системы ИИ CaptionBot, которая автоматически создавала описания для фотографий. Также была и SeeingAI — система, отвечающая на вопросы человека касательно фотографии. По словам исследователей, последняя очень подошла бы для слепых и слабовидящих людей.
Основой проекта «художника по запросу» является совокупность двух систем: Generative Adversarial Network (GAN) — генератор изображений и discriminator (дискриминатор) — модуль, критически анализирующий качество полученного изображения.
Еще одной важной составляющей данной системы стало математическое вычисление и выражение внимания человека. Когда мы видим какой-то объект, мы обращаем внимание, пусть и подсознательно, на определенные его внешние характеристики. Так же и когда нам говорят про какой-то объект. Нам говорят про лимоны, мы видим овальные небольшие желтые фрукты. Мы не представляем персики. Это происходит в нашем мозге, автоматически. Что касается машины, тут нужно ее мозг запрограммировать так, что бы он работал хоть немного как человеческий. А мы знаем, что машина понимает лучше всего язык чисел — математику, потому исследователи и преобразовали такое явление, как внимание, в математические формулы. А теперь подробнее о каждой из составляющих системы.
Attentional Generative Network GAN
По словам исследователей их система GAN отличается от подобных вниманием к деталям. Обычная GAN воспринимает все предложение (например, «фиолетовый чайник с длинным носиком») как единый вектор, которому надо следовать при визуализации. В случае с разработкой наших героев, уделяется внимание отдельным словам, которые становятся векторами визуализации для отдельных участков изображения. Проще говоря, программа рисует не всю картинку сразу, а разделяет на кусочки (как пазлы) и рисует каждый из них отдельно.
Чтобы простыми словами объяснить как работает математическая система, давайте представим, что наше предложение (описание для изображения) это формула, а слова — переменные.
Схематическое изображение алгоритма программы
Каждое из слов является важным вектором, то есть оно определяет в каком направлении будет мыслить программа. Для начала система должна выбрать самые значимые слова. Система пытается сопоставить слова и отдельные участки будущего изображения. Например, синяя птица с черным клювом — если рассматривать слово «черным», то оно касается именно клюва — отдельного участка изображения.
Определив вектор каждого из слов, программа собирает всю информацию в виде матрицы, которую потом начинает реализовать в виде изображения.
В качестве примера исследователи предлагают рассмотреть 4 запроса разного характера (картинка выше).
Рассмотрим первые три изображения птицы. Как видно, они сильно отличаются по качеству и детализации. Дело в том, что первый кадр (размытый и неточный) это результат генерации изображения при анализе всего предложения, как единого вектора. На втором кадре нашу птичку уже лучше видно, поскольку предложение было разделено на отдельные слова (векторы), которые позволили уточнить некоторые детали (например, black eyering — черный глаз).
Ниже показаны те же изображения, но с выделением отдельных участков, соответствующих определенным словам, генерацией которых и занимается программа, для дальнейшего их сопоставления в единое целое. Самые последние кадры демонстрируют какие именно слова в описании будущего изображения программа посчитала самыми важными.
В данном сете представлены результаты генерации изображений при выделении из предложения двух самых значимых слов-векторов (black + white, red + yellow, blue + red).
представлены на изображении выше. «Пушистый черный кот, плавающий на поверхности озера» практически неразличим, хотя само озеро изображено очень хорошо. Такая же ситуация и с дорожными знаками. Однако второе изображение вышло практически точным («красный двухъярусный автобус, плавающий на поверхности озера»). Единственное это не автобус, а катер или яхта.
Результаты таких экспериментальных запросов подтверждают лишь то, что системе еще предстоит многому научиться. В частности, необходимо постоянно пополнять базу знаний системы. Дабы она знала как выглядит тот или иной предмет. Однако, не смотря на все неточности и огрехи в сгенерированных изображениях, данная система поражает. Спектр ее применения довольно широк: от помощи в дизайне интерьеров вплоть до создания анимационных фильмов исключительно за счет прочтения сценария. Также в сопряжении с системой распознавания лиц программа генерации изображений может послужить и для правоохранительных органов, например при составлении фоторобота подозреваемого.
В данной статье были описаны основные принципы и суть программы генерации изображений посредством их описания. Для более голубиного ознакомления с математической составляющей работы алгоритма программы вы можете скачать соответствующий доклад исследователей
— Это очень трудно — писать картины? — Это либо легко, либо невозможно. (Сальвадор Дали)
Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас:Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4 RAM).