Передача произвольного стиля в браузере













Что это?

Это - реализация алгоритма передачи произвольного стиля(arbitrary style transfer), выполняемая только в браузере, путем использования JavaScript-библиотеки TensorFlow.js. Как и все алгоритмы передачи стиля с помощью нейронных сетей, нейронная сеть пытается изображение содержания(контент; Content; обычно фотография) "нарисовать" в стиле другого изображения стиля (стиль; Style; painting; обычно живопись/картина).

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

Передача произвольного стиля(arbitrary style transfer) работает вокруг этого ограничения, используя отдельную сеть стиля(style network), которая обучается разбивать любое(any) изображение на 100-мерный вектор(100-dimensional vector), представляющий его стиль. Этот вектор стиля(style vector) затем поставляется в другую сеть, сеть преобразователя(transformer network) , вместе с с изображением содержания, чтобы произвести финальное стилизованное изображение содержания.

Я написал сообщение в блоге, более подробно объясняющее этот проект.

Действительно ли мои данные безопасны? Можете ли вы увидеть мои картины?

Ваши данные и картины никогда не покидают Ваш компьютер! Фактически, это является одним из основных преимуществ выполнения нейронных сетей в Вашем браузере. Вместо того, чтобы забирать на сервер Ваши данные, мы отправляем *Вам*(*you*) и модель(model) *и* код(code) выполнения модели. Затем они выполняются в Вашем браузере.

Каковы все эти различные модели?

Исходный документ стандарта использует исходную модель Inception-v3 в качестве сети стиля(style network), занимающую ~36.3MB, когда она портирована для браузера в виде рабочей модели FrozenModel.

Чтобы сделать эту рабочую модель меньшим размером, была использована модель MobileNet-v2, чтобы дистиллировать знание из предварительно обученной модели Inception-v3 сети стиля. Это привело к сокращению размера рабочей модели почти в 4 раза, с ~36.3MB до ~9.6MB, за счет потери некоторого качества.

Для сети преобразователя(transformer network), исходный документ стандарта использует исходную модель, используя простые слои свертки(plain convolution layers). Когда она портирована для браузера в виде рабочей модели, то эта модель занимает 7.9 МБ и она ответственна за большинство вычислений во время стилизации.

Чтобы сделать модель сети преобразователя(transformer network) более эффективной, большая часть простых слоев свертки(plain convolution layers) была заменена отделимыми сверткам с благоразумной глубиной(depthwise separable convolutions). Это уменьшило размер рабочей модели до 2.4 МБ, при решительном улучшении скорости стилизации.

Этот демонстрационный пример позволяет Вам использовать любую комбинацию моделей, принимая в качестве значения по умолчанию модель MobileNet-v2 сети стиля(style network) и сеть преобразователя(transformer network) с отделимыми свертками(separable convolutions).

Насколько велики загружаемые мной модели?

Дистиллированная сеть стиля - ~9.6MB,в то время как сеть преобразователя с отделимыми свертками - ~2.4MB, что в общей сложности ~12MB. Так как эти модели работают с любым стилем, то Вам требуется загрузить их только один раз!

Как работает комбинация(объединение) стиля?

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

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

Действительно ли код является кодом с открытым исходником?

Да! Код размещен на Github.

Уважение:

Этот демонстрационный пример был разработан Reiichiro Nakano но, возможно, не был бы сделан без следующих авторов:

В заключение, я хотел бы получить известие от заинтересованных людей в создании набора люкс инструментов для мастерского манипулирования изображениями, отчасти подобного продукту Magenta Studio, но для изображений. Пожалуйста информируйте, если Вы планируете создать/выпустить!