Как сделать себе призму

Наконец-то я нашел время и добрался до нашумевшего алгоритма нейро-стилизации, разработанного Леоном Гатисом, Александром Эккером и Матисом Бетге.

Если вы пришли за картинками, то вот они, а инструкция, как сделать себе призму – ниже.

Как алгоритм просчитывает изображения, расписано тут.





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

По мнению алгоритма, Моне вполне мог бы вдохновляться хрущевками.

А вот здесь из-за отсутствия текстуры у изображения-стиля результат малозаметен. Привет трипофобам!

Тюнинг автомобилей алгоритму пока тоже не доверишь, но использовать это как скетчи можно уже сейчас:

И из меня ЗИЛ не получился:

А вот лакшери-алгоритму все отлично удается, Призма и Малевич – не забудьте добавить немного VIP для iOS: ⚜⚜⚜

Также я попробовал сделать обратное сливание – leprosorium.ru в dirty.ru, интерфейсы пока лучше нейронному алгоритму не показывать:

Дальше больше. Попытка сделать из Windows 95 – iOS 7:

И попытка сделать из iOS 7 - Windows 95:

Хотя себя я успешно стилизовал в интерфейс microsoft office 2003:

Алгоритм отлично справляется с имитацией стиля художника (что не новость), вот пример копирования стиля Diliago:

Так по мнению алгоритма Илья бы меня нарисовал

Также алгоритм прекрасно адаптирует палитру художника – так выглядела бы Саша, нарисуй ее Enze. Ну, по мнению роботов.

Но тонкие линии алгоритм конечно не скопирует:

Здесь за основу стиля взята работа пользователя dirty.ru – Theromorphe: Да и в целом – доминирующий цвет палитры стиля легко «захватывает» все изображение.

А так меня нарисовал бы Покрас Лампас по мнению роботов:

А так – Валера The Watt:

Это результат терраформации Марса, или что-то похожее:

А это я - планетка:

Кстати о планетах, вот это результат применения пениса на планету Земля. Покрыл телесными тонами, так сказать, но не особо впечатляет:

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

Примеряем игры: Немного GTA Обложка карты игры hearthstone

Сделать Саграда Фамилия из Сити у меня тоже не получилось, увы.

Зато получилось сделать ковер из карты мира, причем это, наверное, мой любимый эффект теперь.

Это точно стоит включить куда-нибудь в веселую обработку фото для всех.

Изображения, где вокруг основной композиции заливка, сильно ломаются, но смотрится это круто:

А вот что бывает, если применить московские пробки на Бора-Бора:

А это – если на Москву:

Советские мультики не особо зашли, как мне кажется, но я просто мало их знаю:

Ночная Москва получилась довольно странной:

Miller time?

Вот, например, все помнят Пескова и его часы за какую-то там сумму, так они выглядят вместе. Фактурно.

Или вот:

Однотипная текстура ложится довольно стремно, лучше брать что-то сложнее:

Вода тоже плохо ложится на изображение:

А вот небо мне понравилось, гармонично вышло:

Ну и небесный ЗИЛ вышел будто в чьих-то мечтах:

Но с красным такое не получилось, почему – без понятия, нужно спрашивать того, кто писал алгоритм:

Могу сказать, что сиськи тоже плохо применились на мою фотографию. Сисько-рая не вышло.

А вот картины алгоритм прекрасно переносит на фотографии:

Кстати, алгоритм не сможет сделать из вас викинга, я проверил. Никакого +200 к брутальности:

Зато можно сделать волосатый iOS 7:

Или волосатый взрыв:

Или волосатого меня:

Или всякое:

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

Ради интереса покажу процесс преобразования одной фотографии после 1000 обработок:

Ну и вишенка для ценителей:

Как же мне сделать себе призму?



Дисклеймер: я вообще менеджер, поэтому скорее всего здесь много сделано криво, но как могу.

Навыки программирования для этого вообще не нужны, но нужны базовые знания терминала.

Есть два решения – одно бесплатное, другое стоит небольших денег. Рассказывать я в основном буду про платное решение на AWS, потому что оно обрабатывает одну фотографию минут 15, а бесплатное с Docker – 4 часа.

Docker образ

Если вам повезло так же как и мне и вы владелец макбука, то вам придется делать все вычисления на CPU, это значительно медленнее, чем на компьютерах с видеокартой NVIDIA (ключевое слово для поиска CUDA), но если вы вдруг считаете, что это ваш вариант – то вот ссылка на докер образ.

docker pull kchentw/neural-style

И далее по инструкции выше. Запускать обработку вам нужно будет с командой в стиле:

th neural_style.lua -gpu -1 -style_image /path/your_style.jpg -content_image /path/your_photo.jpg -image_size 500 -num_iterations 1000

Изменять размер фото не советую, время обработки растет геометрически.

Образ на Amazon EC2 с GPU

UPD. 19 июля 2016. После появления этой инструкции кто-то пошел и удалил образ который мы весело использовали, поэтому я пересоздал образ в Ирландии. Если вы настраивались до 19 июля, то вот файл который поменялся и который вам нужно изменить, регион остался тот же
Инструкция для мака

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

Прежде всего нужно зарегистрироваться или войти в aws.amazon.com. Откройте IAM - Users, создайте там пользователя и сохраните Access Key ID и Secret Access Key.

После этого нажмите на имя вашего пользователя, откройте вкладку Permissions и нажмите там на Attach Policy, в которой нужно выбрать AdministratorAccess и нажать Attach Policy. Ура, вы админ у себя в хозяйстве (на самом деле так делать плохо и грубо, но вам ведь поиграться, да?).

Далее откройте ссылку EC2 консоли – обратите внимание, очень важно чтобы у вас вверху справа была выбрана Ирландия, сервера в США иногда слишком заняты, и бывает что стоят от 6 долларов в час. В Ирландии можно договориться за 0,65$ и ниже. Мы используем в конфиге 0,65, меняется это в файле neural-style.tf.

В левом меню выберите Key Pair и создайте ключ для доступа к вашей EC2 консоли, файл с расширением *.pem сохраните, он нужный – сразу после того, как сохраните его, сделайте ему chmod 400 файл.pem в терминале. Пока AWS консоль можно отложить.

С помощью brew (если вы не знаете что это, то тут инструкция) установите себе terraform – brew install terraform

Далее нужно сделать в какой-нибудь вашей пустой папке: git clone https://github.com/DenisSergeevitch/neural-style-art-project.git. Это среда для разворачивания архитектуры, написанная на Terraform, где я уже прописал все настройки, включая образ для разворачивания.

После скачивания зайдите папку tf и создайте файл terraform.tfvars с содержимым:

После этого нужно сделать в этой же папке terraform apply, дальше роботы за вас отправят заявку на аренду инстанса, и если такая возможность есть – всё развернут. Учтите, с этого момента начинается аренда сервера, а значит первый час пошел. Если вы хотите все прекратить сейчас и сразу, введите terraform destroy, ну или когда вам удобно все прекратить там.

Если все прошло без ошибок, запустите terraform show, если там что-то появилось с IP адресом – вы на верном пути. Поле public_ip = здесь.ваши.числа.повсюду вам нужно записать куда-нибудь в блокнот.

Вернитесь в AWS, откройте в левой колонке Security Groups и создайте группу для SSH доступа, где inbound и outbound разрешены для всех (опять же, это ведь просто поиграться, да?).

В левом меню нужно выбрать Instances и, выбрав в списке что-то в стиле i-f1284a7b, нужно выбрать Actions > Networking > Change Security Groups. Оставьте галку у SSH доступа и примените. Это нужно делать каждый раз после terraform apply. Фух, теперь вы можете подключиться к инстансу.

На этой же странице нажмите Connect, где в поле example будет команда, которую нужно выполнить в терминале, типа такой (важно заменить root на ubuntu, ip_сервера возьмите из блокнота): ssh -i /адрес_вашего_ключа.pem [email protected]_сервера

Если все прошло хорошо – вы на сервере, ура.

Команда scp -r -i /путь_до/ключа.pem /путь/папки/с/вашими/фото [email protected]_сервера:/home/ubuntu/neural-style/ скопирует ваши картинки для обработки в папку /home/ubuntu/neural-style/.

Для начала обработки картинок зайдите в cd home/ubuntu/neural-style/ и выполните там th neural_style.lua -print_iter 1 -gpu 0 -backend cudnn -cudnn_autotune -style_image /home/ubuntu/neural-style/файл_стиля.jpg -content_image /home/ubuntu/neural-style/ваше_фото.jpg -image_size 600 -num_iterations 1000

Если все прошло удачно, начнется процесс обработки изображений.

Для скачивания изображений используйте команду вида: scp -i /путь_до/ключа.pem /путь/папки/с/вашими/фото [email protected]_сервера:/home/ubuntu/neural-style/*.png /ваша/папка/

Имейте в виду, файлы будут перезаписываться, если встретятся с таким же именем.

Когда вы закончите играться с фото, обязательно сделайте terraform destroy в папке /tf/ на клиентской машине, иначе обеднеете

Destroy занимает пару минут, рекомендую его дождаться.

Пожалуй все, на самом деле все проще чем кажется, AWS и Терраформ удобный и быстрый инструмент разворачивания инстансов. Хэв фан, пацаны.

Кстати, за 8 часов баловства с EC2 я заплатил примерно 4$, что вполне посильно.

P.S. Если у вас что-то не работает, вы можете написать мне в фейсбуке, а я вам с радостью помогу:


Возможные ошибки

1) Если при terraform apply у вас возникаю ошибки, убедитесь, что вы находитесь в Ирландии и ключ создавали именно там (для каждого региона нужен свой ключ).

2) Если th neural_style.lua выдает ошибки, попробуйте в параметре -image_size прописать 500, а не 600 – иногда алгоритму не хватает памяти даже на AWS.

3) Я игрался и все перестало работать.
У меня теория, что там где-то течет память, поэтому каждые 10 часов я бы рекомендовал пересоздавать инстанс.

4) Terraform apply не рабоатет спустя неделю, а все работало – 19 июля 2016 года, после появления этой инструкции кто-то пошел и удалил образ в Ирландии который мы весело использовали. Если вы настраивались до 19 июля, то вот файл который поменялся и который вам нужно изменить

5) Не работает спустя неделю, появляется такая ошибка:
Цены на аренду серверов сейчас выше чем 0,65$ в час, попробуйте подождать, или поднимите цену выше. Но в любом случае, придется зайти сюда и сделать так, прежде чем делать Terraform apply еще раз:

Если вы разработчик

Если вы разбираетесь в вебе и у вас есть время и желание, было бы здорово сделать для удобства web интерфейс для этого образа;

Если вы разбираетесь NN и у вас есть и время, и желание, было бы здорово автоматически сохранять куда-нибудь математические модели после первичной обработки стиля, это значительно бы ускорило обработку фотографий впоследствии. Если такое вообще возможно;

Было бы здорово скармливать алгоритму массивы файлов для обработки, а то если руками, нужно следить постоянно, что закончилась обработка и пора начать новую.

Денис Ширяев

Это место всегда проблема. В общем я делаю вещи – некоторым они нравятся, некоторым нет.

Москва http://shir-man.com

Subscribe to Привет, я Денис!

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!