Google научил машину рисовать детские рисунки. Вот как это работает
Участник команды Google Brain Дэвид Ха опубликовал рассказ о том, как ему и его коллегам удалось научить искусственный интеллект рисовать примитивные рисунки — такие получаются у детей, когда они берут в руки фломастер. «Медуза» коротко рассказывает о работе исследователей и ее возможных сферах применения.
Как это работает
Чтобы научить искусственный интеллект выполнять какую-то операцию, нужно дать ему как можно больше примеров. Если данных окажется достаточно, программа найдет закономерности и подстроит свои алгоритмы так, чтобы выдавать нужный результат.
В случае с программой sketch-rnn, которую описывает Дэвид Ха, в качестве входящих данных использовались примитивные рисунки, сделанные от руки, — в частности, кошек и свиней. Нейросеть учили преобразовывать входящий рисунок в вектор, состоящий из ряда чисел — а затем из этого вектора воссоздавать исходное изображение.
Потом исследователи начали вносить искажения во входящий вектор — это научило программу не «слепо» копировать рисунок человека, а пытаться создать свой рисунок, сохранив при этом свойства оригинала. На этом рисунке можно увидеть, как компьютер рисовал кошек вслед за человеком:
Насмотревшись на кошек, программа научилась неплохо в них разбираться. Когда ее просили повторить нечто абсурдное, вроде головы животного с тремя глазами, sketch-rn рисовала похожий рисунок, но с двумя глазами. Когда машине показали зубную щетку, она попыталась превратить ее в кошку — но сохранить черты щетки.
То же самое сработало и на рисунках свиней: исследователям не удалось провести алгоритм ни десятиногим животным, ни грузовиком (в последнем случае получилась свинья, похожая на грузовик).
Поскольку работа ведется с векторами, над входящими рисунками можно ставить необычные опыты. Например, складывать и вычитать части животных!
Исследователи взяли два вектора — один для головы кошки, а другой для тела свиньи — и дали программе промежуточные значения. В ответ она изобразила трансформацию: у кошки отросли тело, хвост, лапы и пятачок.
Зачем это нужно
Поскольку на каждую помеху во входящем векторе алгоритм реагирует новым рисунком, художники смогут очень быстро создавать наборы из схожих, но уникальных набросков. Достаточно дать программе пример.
Можно воспользоваться и тем, что нейросеть, которую учили только на рисунках кошек или свиней, будет везде видеть кошек или свиней. Если нарисовать несколько стульев и попросить программу повторить, та попытается изобразить кошек той же формы — произойдет то же, что со свиньей-грузовиком.
Еще sketch-rnn можно заставить дорисовывать рисунки за человека. На изображении ниже красным показано то, что нарисовали люди, а остальными цветами — дорисованное программой. Причем одни и те же наброски она способна превращать в разные объекты. И сколько угодно раз.
Наконец, важное свойство рисунков, полученных алгоритмом, связано с форматом входящих данных. Дело в том, что ей передавали не наборы пикселей, формирующих тот или иной рисунок. Ей передавали информацию о том, как нужно двигать ручкой по полотну, чтобы получить каждое изображение. Поэтому и в ответ она выдает такие же сведения: векторные иллюстрации от sketch-rnn можно использовать, например, чтобы учить людей рисовать.
«Медуза» — это вы! Уже три года мы работаем благодаря вам, и только для вас. Помогите нам прожить вместе с вами 2025 год!
Если вы находитесь не в России, оформите ежемесячный донат — а мы сделаем все, чтобы миллионы людей получали наши новости. Мы верим, что независимая информация помогает принимать правильные решения даже в самых сложных жизненных обстоятельствах. Берегите себя!