Создавайте рисованные эскизы с помощью нейронной сети Sketch-RNN
Вы не можете научить старую собаку новым трюкам, но, может быть, вы можете научить нейронную сеть рисовать изображение кошки? На днях, просматривая всегда интересный Репозиторий нейронных сетей Wolfram, я наткнулся на маленькую жемчужину. Нейронная сеть, скромно названная Sketch-RNN, утверждала, что может рисовать кошек, собак, тромбоны, ветряные мельницы и множество других животных и объектов. Это я должен был попробовать!
Чтобы нарисовать эскиз, эта страница Sketch-RNN предложила мне скопировать и вставить большой кусок кода Wolfram Language. Это сработало очень хорошо, но я хотел иметь единственную функцию, чтобы скрыть всю эту сложность. Поэтому я написал простую ResourceFunction, чтобы сделать именно это.
Эти функции ресурсов хороши тем, что в основном представляют собой куски кода, которые автоматически загружаются из Интернета:
DrawSketch = ResourceFunction[ "user:arnoudb/DeployedResources/Function/DrawSketch" ]
С помощью этой ресурсной функции я смог попытаться нарисовать свое первое животное:
Хорошо, в результате получился скорее Пикассо, чем Рембрандт, но, очевидно, он правильно передает сущность кошки. Предположительно, с улучшенной нейронной сетью и более продвинутыми данными обучения это может пойти намного дальше.
Все наброски имеют элемент случайной генерации, поэтому вы можете набросать 25 кошек, и все они будут выглядеть уникально!
Всего с помощью этой изящной функции вы можете нарисовать 114 животных и объектов. Я решил покатать их всех. Многие предметы узнаваемы мгновенно, а некоторые более загадочны:
Вы можете получить больше удовольствия от этого, изменив исходную функцию DrawSketch и добавив в смесь случайные цвета и толщину линий. Вот один пример, который я сделал с ананасами:
Возможности здесь безграничны, и довольно весело попробовать их все. Я не вижу в этом никакого практического применения, кроме, может быть, вдохновения дошкольников рисовать определенные объекты, предоставляя им много-много примеров для копирования. Надеюсь, вам понравилась эта глупая маленькая история, и, если вы хотите узнать больше о языке Wolfram Language, ознакомьтесь с моим недавним постом под названием Изучение Wolfram, от нуля до героя. В нем есть отличный набор указателей на ресурсы для обучения этому языку программирования! 😻🍍
- На основе Sketch-RNN, обученного на данных QuickDraw из Wolfram Репозиторий нейронных сетей
- Ссылка: Д. Ха, Д. Эк, Нейронное представление эскизов, arXiv: 1704.03477 (2017), доступно по адресу https://github.com/tensorflow/magenta-demos/tree/master/sketch-rnn- js