Torchのリアルタイム画風変換を試す(環境構築)
Nov 6, 2017 · othersMachineLearning
リアルタイム画風(スタイル)変換といわれる、ディープラーニングを使って画像の画風(雰囲気)を変換する技術を実際に試すまでの手順のメモ
利用するアルゴリズムの元の論文はこちら
Github上での実装:fast-neural-style
この記事では環境構築まで。実際の実行はこちら
この実装ではニューラルネットワークがTorch
で実装されているので、動作環境はUbuntu
かmac
である。今回は、Ubuntu
上で実際にオリジナルのモデルのトレーニングまでを試してみる
なおトレーニング済のモデルを使って画風変換をするだけなら、mac
でも特に問題ない。今回はモデルのトレーニングも試したかったので、GPUが使えるUbuntu
を選択した(今のMacBookProのGPUはRadeonに変わってしまったので・・・)ちなみにWindows10上でのUbuntu
も試してみたが、ものすごく動作が遅くてダメだった(原因は不明)
Ubuntuのインストール
インストールの詳細方法は他に詳しいところがたくさんあるので割愛するが、ポイントは以下の2点
- バージョン:Ubuntu 16.04 LTS
- ストレージ容量:80GB程度
(OS 20GB + データ 60GB)
今回は、日本語版をダウンロードしてインストールしたが、結局、言語は英語で利用しているので本家のものでも良いと思われる
(言語が日本語だとエラーメッセージも日本語になってしまってググった時に情報が見つかりにくい)
ストレージは特にCUDA
関連が容量を使うので注意。また、トレーニング用のデータセットもトータルで30GB近くある。SSDの様に容量が限られている場合は、インストールするパーティションは20GB程度にしてデータセットは別HDDに置くなり、データセットの作成を別PCで行い、生成されたデータを持っていく方法もあり(その場合、データ用は30GB程度でOK)
インストール後の設定
アップデートを実施
sudo apt update sudo apt upgrade sudo apt autoremove
SSH接続できる様にする
sudo apt-get install openssh-server
今回はmacからSSH経由で操作したかったので上記を実施。直接、Ubuntuのデスクトップから操作する場合は不要
ちなみに、macからはターミナルとCyberDuckで接続している。 先にCyberDuckからSFTP接続すると鍵の許可とかもしてくれるし、ファイルを見たり転送したり書き換えできるので便利。以降はmac上から操作している
Torch
のセットアップ
基本的には公式の手順通り
Gitのインストール
sudo apt install git
Torchのインストール
git clone https://github.com/torch/distro.git ~/torch --recursive cd ~/torch; bash install-deps; ./install.sh source ~/.bashrc
luarocksのセットアップ
luarocks install image luarocks list
動作確認
th
と実行して の様な画面になればOK。
exit
で抜ける
トラブルシューティング
基本は順番通りにすればエラーは出ないはずだが、./install.sh
で
error: more than one operator "==" matches these operands:export
の様なエラーが出ることがある。その場合は、
export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"
としてから再度実行すれば良い
ただ、恐らく先にCUDAの新しすぎるバージョンを入れると発生する様なので、通常は遭遇しないはず
fast-neural-style用のセットアップ
基本的にはreadmeの手順通り
- 必要なパッケージをインストール
luarocks install torch luarocks install nn luarocks install image luarocks install lua-cjson
CUDAのインストール
公式のCUDA Toolkit Downloadのページをブラウザで開く
「Linux」 - 「x86_64」 - 「Ubuntu」 - 「16.04」 - 「deb[network]」を選択
右上の「download」からファイルをダウンロード
※現時点(2017⁄11)では、http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
というURL。以降はこのURLを前提とする以下のコマンドを実行
sudo dpkg -i cuda-repo-ubuntu1604_9.0.176-1_amd64.deb
指定するファイル名がダウンロードしたファイル名と一致しているか注意
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
公式通りのURLだと
https
がエラーになるので、http
でアクセスしているのがポイントsudo apt-get update
エラー出る場合はトラブルシューティング参照
sudo apt-get install cuda
cuDNNのインストール
- 公式のNVIDIA cuDNNをブラウザで開いて「Download」をクリック
- ログインする(ユーザ登録が必須)
- 画面の指示通りに承諾をしていく
- 「
Download cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0
」を選択 - 「
cuDNN v5.1 Library for Linux
」をダウンロードする
v5系かつtgz方式を選択すること
(Debの方はマニュアル通りにしてもうまくコピーされなかった) ダウンロードしたファイルを解凍する
tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
指定するファイル名がダウンロードしたファイル名と一致しているか注意
以下のコマンドを実行
sudo cp cuda/include/cudnn.h /usr/local/cuda/include sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn.h sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
パスを設定する(bashの場合)
echo export CUDNN_PATH="/usr/local/cuda/lib64/libcudnn.so.5" >> ~/.bashrc source ~/.bashrc
Luaのモジュールをインストールする
luarocks install cudnn
ここまででひとまず最低限の環境はできた状態
トラブルシューティング
CUDAのインストール時に
E: Problem executing scripts APT::Update::Post-Invoke-Success 'if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi'
E: Sub-process returned an error code
という様なエラーが出る場合は、
cd /tmp && mkdir asfix
cd asfix
wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb
wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
sudo dpkg -i *.deb
とすると、OK