Игры с neural style transfer

Последний месяц для саморазвлечения в качестве сайд-проекта играюсь с neural style transfer – нейронные сети, переносящие стиль с картинки на картинку. Многие знают это как приложение Prisma. Видимо создатели тоже читают блог creativeai :)

Первая реализация появилась больше 8 месяцев назад и доступна на github jcjohnson/neural-style – она написанна на lua, всё замечательно, кроме того что работает она вечность (и жрёт почти бесконечность памяти). На Digital Ocean с 16 swap генерация картинки 450×200 заняла около 2 минут, сейчас уже не помню.

Все поменялось с выходом публикации “Perceptual Losses for Real-Time Style Transfer and Super-Resolution”, которая позволила на порядок ускорить время генерации картинок. По этой публикации сделали реализацию на python littlekobe/chainer-fast-neuralstyle. Для сравнения – на том же DigitalOcean так же картинка генерилась всего 8сек и уместилась в 4gb swap.

bridge-in-bristol

Мало того, на фоне хайпа пришла идея в голову(не без сторонней помощи) сделать чат бота для фейсбука – совсем недавно они аннонсировали API для этого на своей ежегодной конференции. Если так подумать то приложение Prisma не нужно вообще – всё это можно быть сделанно через бота. Нет смысла ставить ещё один эпп (я так думал). В итоге получилось то что получилось: QuickPrism.com, надеюсь ссылка ещё будет работать). Страница бота facebook.com/quickprisma

wp-1470671562252.jpg

Прототип бота сначала написал на nodejs, но потом быстро перенёс на spring boot/kotlin уже с нормальной очередью на mongodb и файлами на s3. Плюс всякие фишки для распознавания текста

Фейсбук хоть и выпустил бот платформу но неудосужился адаптировать мобильный вэб – юзеры из стран третьего мира видят совсем не «карусельку» с кнопками а тупо ненажимающийся блок текста, вместо картинки с кнопкой – кирпич. 

wp-1470672235351.png

В том же проекте откопал скрипт для процессинга видео с камеры в реальном времени, получилось вот забавно. Или вот популярная гифка(один из первых экспериментов) с моделью «Starry Night»:

cat-out-2

Используя тот же скрипт я сгенерил видяшку (по сути это видео разложенное на кадры, обработанное и склеенное обратно):

Я неверотяно доволен что удалось поиграть с этой штукой, посути относительно быстро получилось нахакать что то “вау” и конечно же я достаточно много узнал, пока ещё не очень глубоко о нейроных сетях, feature extraction, и прочих штуках.

К сожалению сейчас нет времени и ресурсов(а хорошие машинки тут очень нужны!) этим проектом, хотя есть приминений – дофига – как в b2c так и в b2b