Скажу відразу, я не експерт, а червонооких-любитель (дисклеймер) і у мене стоїть для деяких домашніх справ поряд з Win10 в режимі dualboot полюбився LinuxMint 18-й версії, яка заснована на недавно вийшла Ubuntu 16.04. Використовуючи, по суті, 16.04, я зіткнувся з низкою труднощів. Так що, даний пост, крім перекладу мануала, буде доповнений фіксами для 16.04 систем в хронологічному порядку.
Всі номери, які наведені в пості - або посилання на вирішення тих чи інших проблем, або посилання на офіційні джерела використовуваних скриптів і продуктів.
Не сперечаюся, можу десь костилять. Якщо так - поправте, тільки скажу спасибі.
Отже, із заліза є:
* Linux Mint 18 x64 (на основі Ubuntu 16.04).
Щоб не набирати пароль від учеткі після використання команди sudo в терміналі - вніс свого користувача в конфіг (/ etc / sudoers) це:
epicmorg ALL = (ALL) NOPASSWD: ALL
Де epicmorg - ім'я мого профілю. У вас - ваше. Це далеко не найбезпечніше рішення. не впевнені - не робіть це.
Тепер, відкривши інструкцію гітхабе слідуємо кроків, як встановити neural-style на Ubuntu.
Крок 1. Встановлення torch7
Відкриваємо термінал від свого користувача і пишемо:
(Перехід в свій домашній каталог)
(Скачування скрипта install-deps і виконання його в терміналі bash для установки залежностей, які необхідні при установці torch)
У мене при установці install-deps не знайшов libqt4-core і libqt4-gui і скрипт благополучно виплюнув помилку. Погуглити, знайшов відповідь на as ubuntu, що на 16.04 вони іменуються libqtcore4 і libqtgui4, які поставив окремо.
sudo apt-get install libqtcore4 libqtgui4
Після чого, install-deps скрипт поставився без помилок.
До речі, якщо у вас не варто git - поставте його командою, а заодно і cmake:
sudo apt-get install git cmake
Налаштовувати в даному випадку не треба, піде "з коробки".
Далі нас якраз просять склоніровать репозиторій torch з гітхаба:
Після чого переходимо в склонірованную папку з torch і починаємо компіляцію
При компіліяціі (виконання install.sh) у мене випадали помилка, що не найден readline.h. Відповідь знайшов на stackoverflow - виявляється, не вистачає пакета libreadline-dev.
sudo apt-get install libreadline-dev
Після запуску install.sh ще раз - компіляція пройшла успішно.
Перший скрипт встановлював все залежності для torch і це може зайняти у вас якийсь час. Другий сценарій фактично встановлює Lua і сам torch, а також редагує файл .bashrc так, щоб torch додається в змінну $ PATH.
Далі ми повинні оновити змінні оточення командою:
Для перевірки встановився чи torch виконую комману th в консолі.
Для виходу - пишу exit, тисну enter і підтверджую вихід клавішею y.
Крок 2. Встановлення loadcaffe
Loadcaffe - це модуль, що завантажує моделі Caffe в Torch. Залежить він від Гуглівского Protocol Buffer library. Тому, спочатку треба встановити їх:
sudo apt-get install libprotobuf-dev protobuf-compiler
Після - можна спокійно встановити loadcaffe:
luarocks install loadcaffe
Крок 3. Установка самої neural-style.
Тепер нам треба скопіювати репозиторій з гітхаба самої нейромережі. виконуємо:
(Перехід в свій домашній каталог)
(Клонування сховища зі neural-style)
(Перехід в завантажену папку)
Далі нам необхідно завантажити моделі попередньо навченої нейронної мережі:
Тепер у нас є можливість запускати neural-style в режимі процесора за допомогою команди:
th neural_style.lua -gpu -1 -print_iter 1
(В аргументі -gpu значення -1 означає, що gpu не використовується. А значення від 0 і вище - нумерація встановлених gpu, але про це пізніше).
Якщо все працює правильно, ви повинні побачити вивід на зразок цього:
Крок 4. Налаштування CUDA.
Як вірно зауважив тов. @ Landgraf132. можна було обійтися установкою пакета nvidia-cuda-toolkit:
sudo apt-get install nvidia-cuda-toolkit
Але я цього не знав, так що, пішов більш складним шляхом. А саме, з сайту nvidia скачаел run-файл для 15.04 (важить близько гігабайти!) В домашню директорію.
Далі в терміналі запускаємо установку:
(Перехід в свій домашній каталог)
sudo sh cuda_7.5.18_linux.run
(Запуск установника в командному режимі)
У файлі містяться драйвери для дисплея, CUDA toolkit і cuda samples (перімери). На всі запитання щодо шляхів установки - відповів yes, крім драйвера для дисплея (вже стоїть) і CUDA sample, тому що вони нам не знадобляться.
(Як показала практика. Нам потрібен gcc версії 4.8 (який у мене вже стояв в системі), так як версія CUDA 7.5 сумісна тільки з ним)
Після установки в мануалі радять перезавантажитися. Після успішного ребута, перевірив що все добре з допомогою команди в терміналі:
Крок 5. Встановлення CUDA backend для torch
Все просто. У терміналі виконуємо:
luarocks install cutorch
luarocks install cunn
Для перевірки, чи правильно встановилося виконуємо:
th -e "require 'cutorch'; require 'cunn'; print (cutorch)"
Випало в консоль щось схоже як в інструкції:
Тепер можна запускати нейросеть в режимі GPU:
(Перейшли в каталог з мережею)
th neural_style.lua -gpu 0 -print_iter 1
Знову ж - висновок в консоль як в інструкції.
Крок 6. Додаткова установка cuDNN.
cuDNN бібліотека від NVIDIA, яка ефективно реалізує багато з операцій (наприклад, згортка і об'єднання), які зазвичай використовуються в глибокому навчанні.
Після реєстрації в якості розробника NVIDIA, скачав необхідний архів cudnn-7.5-linux-x64-v5.1-rc.tgz в домашню директорію.
Розпакування і установку проводив так:
tar -xzvf cudnn-7.5-linux-x64-v5.1-rc.tgz
sudo cp cuda / lib64 / libcudnn * /usr/local/cuda-7.*/lib64/ sudo cp cuda / include / cudnn.h /usr/local/cuda-7.*/include/
Так само мені знадобилося скопіювати файли libcudnn * в шлях, який прописаний у мене в змінну LD_LIBRARY_PATH. (Без цього не запускалося). Дізнатися шлях можна зробивши:
У мене це було: / home / epicmorg / torch / install / lib
sudo cp cuda / lib64 / libcudnn * / home / epicmorg / torch / install / lib
Після треба поставити плагін cuDNN для torch:
luarocks install cudnn
Тепер нейросеть можна використовувати разом з cuDNN:
/ Neural-style th neural_style.lua -gpu 0 -backend cudnn
І так, cuDNN доступна тільки для режиму GPU.
Тепер можна балуватися нейромережею.
Крок 7. Перевірка на ділі.
Скрипт для пробного запуску:
th neural_style.lua -gpu 0 -backend cudnn -style_image
Підставляти місце image1 стиль, а image2 - фото. шляху до світлин можна вказувати як повні, так і відносні.
Я взяв з прикладу на гітхабе brad_pitt.jpg і golden_gate_starry.png.
th neural_style.lua -gpu 0 -backend cudnn -style_image golden_gate_starry.png -content_image brad_pitt.jpg
Якщо дуже стисло і без подробиць, то алгоритм такий:
1. На диску 1 (умовно) поставив Win10.
2. Є другий диск - диск 2 (умовно).
3. Захотілося поставити другу вісь. Втомився від ubuntu, вирішив спробувати Mint. Оскільки win10 64-бітна і встановлена в режимі uefi (виглядає в биосе), то linux брав 64х бітний. Mint x64 тільки uefi-сумісний. Те що мені треба.
4. Записав на флешку.
5. Завантажився (як раніше з live cd) в Mint з usb. Графіка, звук, інтернети - все що треба для знайомства є.
Якщо боїтеся щось поламати - просто побалуйте з live usb, без установки. Або встановлюйте в віртуальну машину.
6. Вибрав установник на пк. Встановив на диск2, вибравши в опціях розширений режим (в простому режимі пропонується знести вінду і замість неї поставити).
7. Після закінчення встановлення системний завантажувач grub2 сам обнраружіл що у мене крім "люнікса" на компі є винда.
При включенні пк показується меню з вибором системи, яку хочу включити. Це все потім можна налаштувати - який пункт вибирати, що загрожують автоматично і через скільки секунд.
Якщо встановити спочатку лінукс, потім вінду - там треба буде танцювати, судячи з Гуглу. Але я так ніколи не ставив.
4,5,6 необов'язкові кроки. вони потрібні для донастройки мережі під cuda.
запустив. і в терміналі відбуваються якісь ітерації.
там для перевірки на працездатність. якщо проходять - значить працює.
я намагаюся перетворити зображення
які команди використовували?
Тут. в розділі updating пишуть Please do NOT use any of: luarocks install nn.
це окремий десятеро. torch з окремою установкою. трохи несумісний з даними постом. хоча, якщо подумати можна адаптувати під opencl.
просте використання на процесорі:
th neural_style.lua -gpu -1 -style_image
зображення що створиться - з'явиться в тойже папці де і вхідні.
можете вказати куди зберігати зображення. буде в форматі png.