Создавайте рисованные эскизы с помощью нейронной сети Sketch-RNN

Вы не можете научить старую собаку новым трюкам, но, может быть, вы можете научить нейронную сеть рисовать изображение кошки? На днях, просматривая всегда интересный Репозиторий нейронных сетей Wolfram, я наткнулся на маленькую жемчужину. Нейронная сеть, скромно названная Sketch-RNN, утверждала, что может рисовать кошек, собак, тромбоны, ветряные мельницы и множество других животных и объектов. Это я должен был попробовать!

Чтобы нарисовать эскиз, эта страница Sketch-RNN предложила мне скопировать и вставить большой кусок кода Wolfram Language. Это сработало очень хорошо, но я хотел иметь единственную функцию, чтобы скрыть всю эту сложность. Поэтому я написал простую ResourceFunction, чтобы сделать именно это.

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

DrawSketch = ResourceFunction[
 "user:arnoudb/DeployedResources/Function/DrawSketch"
]

С помощью этой ресурсной функции я смог попытаться нарисовать свое первое животное:

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

Все наброски имеют элемент случайной генерации, поэтому вы можете набросать 25 кошек, и все они будут выглядеть уникально!

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

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

Возможности здесь безграничны, и довольно весело попробовать их все. Я не вижу в этом никакого практического применения, кроме, может быть, вдохновения дошкольников рисовать определенные объекты, предоставляя им много-много примеров для копирования. Надеюсь, вам понравилась эта глупая маленькая история, и, если вы хотите узнать больше о языке Wolfram Language, ознакомьтесь с моим недавним постом под названием Изучение Wolfram, от нуля до героя. В нем есть отличный набор указателей на ресурсы для обучения этому языку программирования! 😻🍍