Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
sxiii
7 лет назад

[УЧЕБНИК] Собираем открытый проект Neural-Style - обработка ваших фотографий нейронными сетями в стиле Prisma, но при помощи открытого кода! [МАНУАЛ]

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

Посмотрел я на этого бота (он постоянно выдавал на любую фотку сообщение: извините, бот перегружен, попробуйте позже), и подумал: а зачем?

Animation

[УЧЕБНИК] Собираем открытый проект Neural-Style - обработка ваших фотографий нейронными сетями в стиле Prisma, но при помощи открытого кода! [МАНУАЛ]

Есть же открытый код для работы с нейронными сетями и обработкой изображений, лежит на гитхабе:

https://github.com/jcjohnson/neural-style

Дай, думаю, попробую собрать под Manjaro (почти Arch) и OpenCL, а заодно мануал напишу (среди поддерживаемых ОС упоминаются: Fedora, Ubuntu, Arch, Elementary OS и CentOS).

Чтобы собрать Neural Style, понадобится научный фреймворк для работы с OpenCL/CUDA для Lua, называется он Torch, а также понадобится LoadCaffe - модуль для загрузки моделей в вышеуказанный фреймворк. Ниже, в инструкции, я постарался охватить все этапы установки всех зависимостей.

Требования

  • Современный компьютер с CUDA (видеокарты nVidia) или OpenCL (видеокарты AMD) - теоритически можно рендерить и на процессоре, но это дооооолго
  • Несколько свободных гигабайт на диске
  • Одна из поддерживаемых ОС: Ubuntu, Fedora, Arch, CentOS, Elemetary OS (на другие тоже можно поставить, но все этапы придётся проходить вручную)
  • Около часа времени

Инструкция по установке находится в файле INSTALL.md, но если вам лень читать, вот адаптированная мною инструкция для ubuntu/debian (должно работать и на более старых, чем 17.04, версиях):

Установка Neural Style под Ubuntu 17.04

.1. Ставим зависимости:
curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
.2. Ставим ещё зависимости:
sudo apt install build-essential libreadline-dev libprotobuf-dev protobuf-compiler
.3. Клонируем Torch:
git clone https://github.com/torch/distro.git ~/torch --recursive
.4. Ставим Torch:
cd ~/torch; ./install.sh
.5. Обновляем .bashrc, чтобы Torch нашёлся без перевхода в сеанс или перезагрузки:
source ~/.bashrc
.6. Ставим LoadCaffe:
luarocks install loadcaffe
.7. Скачаем репозиторий neural style в домашнюю папку и зайдем в него.

cd ~/
git clone https://github.com/jcjohnson/neural-style.git
cd neural-style

.8. Теперь нам нужно установить предварительно обученные модели. Вот так:
sh models/download_models.sh
Учтите, некоторые из них по 100, а некоторые - по 500 мб. Так что процесс займет некоторое время.

.9. а) Если у вас видеокарта nVidia, то практически всё готово (возможно, вам также нужно убедиться что установлена CUDA, все нужные драйвера/обёртки и компоненты к ним), и можно попробовать запустить процесс.

.9. б) Если у вас видеокарта AMD, с более общим и универсальным языком OpenCL, придётся ещё чутка попотеть.

git clone --recursive https://github.com/hughperkins/distro -b distro-cl ~/torch-cl
cd ~/torch-cl
bash install-deps
./install.sh
source ~/torch-cl/install/bin/torch-activate

Возможно, эти шаги для обладателей "красных" видеокарт (radeon) могли заменить полностью шаги 3 и 4 (то есть 3 и 4 можно было пропустить), но я не уверен. Поэтому пусть будет так :)

Как собрать под Arch / Manjaro

В целом, процесс такой же, за исключением установки зависимостей (в арче у вас получится их поставить автоматически, в manjaro же надо открыть файл install-deps и поставить их вручную либо отредактировать скрипт).

Кроме того, вам нужно поставить из AUR сам по себе OpenCL - пакет называется opencl-amd:
yaourt -A opencl-amd

Если у вас вдруг не установлен yaourt (в arch для этого надо вручную добавить французский репозиторий), очень советую поставить. В манджаре йогурт уже есть в репах пакмана: sudo pacman -S yaourt.

Запускаем процессинг

Давайте для начала положим в папку neural-style 2 файла: один, например, с небоскрёбом, такой:

Skyscraper

А второй, например, с яблоками, такой:

Apples

Попробуем стилизовать небоскрёбы под картину с яблоками при помощи наших драгоценных нейронных сетей и, конечно же, CUDA/OpenCL!

Картинку с небоскрёбом мы назовём, как бы вы думали? skyscraper.jpg, ну а с яблоками просто painting.jpg. Всё готово для запуска. Поехали:

CUDA:

th neural_style.lua -style_image painting.jpg -content_image skyscraper.jpg -backend cunn

OpenCL:

th neural_style.lua -style_image painting.jpg -content_image skyscraper.jpg -backend clnn

Спустя пару минут (у меня одна карта Radeon RX 480) я получил вот такую иллюстрацию:

NewYork

На самом деле, в папке оказалось 10 иллюстраций, с разным уровнем смешивания. Решил сделать из них gif-анимацию

Animation

Разумеется, при помощи neural-style вы можете также разложить видео по кадрам, обработать его в нужном вам стиле и склеить обратно в единую "ленту". Вопрос вычислительной мощности и времени (а также написания скрипта ;).

Захотелось ли вам провести свои эксперименты с нейронными сетями и иллюстрациями? Попробуете ли вы пройтись по данному учебнику? Пишите в комментариях любые вопросы и вообще всё что касается тем обучения нейросетей и графического процессинга.

Надеюсь, вам было интересно.
Всегда ваш,
айтишник-линуксоид-графоман
Den Ivanov aka SXIII


Кинорецензии Краудсписок Презентации Аналитика
СПО Криптовалюты Linux Скрипты

52
877.202 GOLOS
На Golos с January 2017
Комментарии (0)
Сортировать по:
Сначала старые