Нейронные сети могут делать много разных вещей. Они могут понимать наши голоса, распознавать изображения и переводить речь, но знаете ли вы, что еще они умеют рисовать? Изображение сверху демонстрирует некоторые сгенерированные результаты применения нейронного рисования.
Сегодня я собираюсь познакомить вас с тем как это делается. Прежде всего, убедитесь, что у вас обновленная копия Ubuntu (14.04 — та, что использовал я). Вам необходимо иметь несколько гигов свободного пространства на жестком диске и в оперативной памяти, хотя бы не менее 6 GB (больше оперативки для больших выводимых разрешений). Для запуска Ubuntu как виртуальной машины, вы можете использовать Vagrant вместе с VirtualBox.
Убедитесь, что у вас установлен git. Чтобы скачать и установить git, просто откройте терминал и выполните:
$ sudo apt-get install git
Шаг 1: Установите torch7
Torch — это фреймворк для научных вычислений с широкой поддержкой алгоритмов машинного обучения. Torch является главным пакетом Torch7, где определены структуры данных для многомерных тензоров и математические операции для них. Дополнительно, он предоставляет много утилит для доступа к файлам, сериализации объектов произвольных типов и другие полезные утилиты.
Запустите эти команды в терминале (вам может понадобиться использовать для них sudo):
$ cd ~/
$ curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-deps | bash
$ git clone https://github.com/torch/distro.git ~/torch --recursive
$ cd ~/torch; ./install.sh
Теперь нам надо обновить наши переменные окружения, запустите:
$ source ~/.bashrc
Шаг 2: Установите loadcaffe
Выполните в терминале:
$ sudo apt-get install libprotobuf-dev protobuf-compiler
$ luarocks install loadcaffe
Либо, если у вас возникают проблемы, попробуйте так:
$ git clone git@github.com:szagoruyko/loadcaffe.git
$ ~/torch/install/bin/luarocks install loadcaffe/loadcaffe-1.0–0.rockspec
Шаг 3: Установите neural-style
Это torch-реализация спецификации Нейронный Алгоритм Художественного Стиля Леона А. Гатиса, Александра С. Эккера и Маттиаса Бетге. Спецификация представляет алгоритм для комбинирования контента одного изображения со стилем другого изображения, используя сверточные нейронные сети.
Сначала склонируйте neural-style с GitHub:
$ cd ~/
$ git clone https://github.com/jcjohnson/neural-style.git
Далее, скачайте модели нейронной сети:
$ cd neural-style
$ sh models/download_models.sh
Шаг 4: Запускаем
Теперь убедитесь, что у вас есть хотя бы 6 GB оперативной памяти (если вы используете виртуальную машину, убедитесь, что выделили достаточное количество памяти для нее). Затем проверьте, работает ли нейронный стиль с помощью этой команды:
$ th neural_style.lua -gpu -1 -print_iter 1
Заметьте, что вы выполняете это в режиме CPU, выполнение в режиме GPU выходит за рамки данной статьи.
Чтобы увидеть инструкции о том, как использовать нейронный стиль, запустите:
$ th neural_style.lua ?
Теперь давайте выполним тестовую команду, чтобы убедиться, что нейронные стили работают. Для начала убедитесь, что вы находитесь в директории нейронных сетей, если вы следовали всем инструкциям выше, вы должны быть в ~/neural-network, теперь запустите:
th neural_style.lua -style_image examples/inputs/starry_night.jpg -content_image examples/inputs/golden_gate.jpg -gpu -1 -image_size 256
Заметьте, я ввел меньший размер изображения, чтобы обработка закончилась быстрее. Когда команда завершится, выходной файл, со стандартным именем out.png, будет расположен в той же директории.
Результат
golden_gate.jpg
starry_night.jpg
out.png