Перейти к материалам
истории

Google научил машину рисовать детские рисунки. Вот как это работает

Источник: Meduza

Участник команды Google Brain Дэвид Ха опубликовал рассказ о том, как ему и его коллегам удалось научить искусственный интеллект рисовать примитивные рисунки — такие получаются у детей, когда они берут в руки фломастер. «Медуза» коротко рассказывает о работе исследователей и ее возможных сферах применения.

Как это работает

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

В случае с программой sketch-rnn, которую описывает Дэвид Ха, в качестве входящих данных использовались примитивные рисунки, сделанные от руки, — в частности, кошек и свиней. Нейросеть учили преобразовывать входящий рисунок в вектор, состоящий из ряда чисел — а затем из этого вектора воссоздавать исходное изображение.

Потом исследователи начали вносить искажения во входящий вектор — это научило программу не «слепо» копировать рисунок человека, а пытаться создать свой рисунок, сохранив при этом свойства оригинала. На этом рисунке можно увидеть, как компьютер рисовал кошек вслед за человеком:

Google Brain

Насмотревшись на кошек, программа научилась неплохо в них разбираться. Когда ее просили повторить нечто абсурдное, вроде головы животного с тремя глазами, sketch-rn рисовала похожий рисунок, но с двумя глазами. Когда машине показали зубную щетку, она попыталась превратить ее в кошку — но сохранить черты щетки.

Google Brain

То же самое сработало и на рисунках свиней: исследователям не удалось провести алгоритм ни десятиногим животным, ни грузовиком (в последнем случае получилась свинья, похожая на грузовик).

Google Brain

Поскольку работа ведется с векторами, над входящими рисунками можно ставить необычные опыты. Например, складывать и вычитать части животных!

Первая строчка: кошка плюс тело. Вторая строчка: свинья минус тело.
Google Brain

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

Google Brain

Зачем это нужно

Поскольку на каждую помеху во входящем векторе алгоритм реагирует новым рисунком, художники смогут очень быстро создавать наборы из схожих, но уникальных набросков. Достаточно дать программе пример.

Google Brain

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

Google Brain

Еще sketch-rnn можно заставить дорисовывать рисунки за человека. На изображении ниже красным показано то, что нарисовали люди, а остальными цветами — дорисованное программой. Причем одни и те же наброски она способна превращать в разные объекты. И сколько угодно раз.

Google Brain

Наконец, важное свойство рисунков, полученных алгоритмом, связано с форматом входящих данных. Дело в том, что ей передавали не наборы пикселей, формирующих тот или иной рисунок. Ей передавали информацию о том, как нужно двигать ручкой по полотну, чтобы получить каждое изображение. Поэтому и в ответ она выдает такие же сведения: векторные иллюстрации от sketch-rnn можно использовать, например, чтобы учить людей рисовать.

Еще несколько примеров рисунков, сделанных программой
Google Brain

Султан Сулейманов