ちょっと前から世間(ディープラーニング界隈)を賑わせている PaintsChainer に Windows 環境でチャレンジしてみました。
これは線画を入力として与えるといい感じに着色してくれるものです。
コードおよび学習済みモデルの公開を行ってくれた作者の方に感謝しつつ、手元で試していきたいと思います。
なお、ディープラーニングの内容については全くの初心者なので、何が起こっているのかさっぱりだったりします。
Python インストール
https://www.continuum.io/downloadsから Windows 用 anaconda をインストールします。ここでは Python 3.6 Version を選択しました。
しかし、あとで OpenCV との組み合わせで問題になったので、3.5.2 の環境で作業する必要がありました。
そのため、以下のコマンドで 3.5.2 の環境を作成します。
conda create -n py35 python=3.5.2 activate py35
もしかしたら anaconda の選択で 3.5 系を選んでおけば良かったのかもしれません。
CUDA 関連
快適なレスポンスがほしい場合には CUDA を使用します。もし CPU で実行するのであれば CUDA 関連は飛ばしてもらって大丈夫です。
まず CUDA 8.0 のインストールを行います。
https://developer.nvidia.com/cuda-downloads
このページから環境に合わせた CUDA のパッケージをダウンロードします。結構容量があるので時間がかかるかもしれません。
ダウンロードが完了したらインストールします。Visual Studio の環境がないと警告が出ますが無視してインストールしました。
cuDNN のインストール
https://developer.nvidia.com/cudnn
NVIDIA が配布している cuDNN をダウンロードします。登録が必要ですが、有料の登録ではありません。
登録してしばらくするとメールが来て有効化するようなタイプです。
現在ダウンロードしたものは cuDNN 5.1 でした。Windows 版の zip を適当なディレクトリに展開します。
先ほどの CUDA をインストールしたフォルダにこれらのファイルの中身をコピーしていきます。
デフォルトだと、 “C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0” になっていると思います。
この中に、cudnn を展開してできた bin,include, lib のフォルダをコピーします。
場所が Program Files 以下なので、コピーの際には管理者権限が必要になります。
cupy インストール
cupy のインストールの前に “Microsoft Visual C++ Build Tools” をインストールします。
これは、 http://landinghub.visualstudio.com/visual-cpp-build-tools からダウンロードが可能です。Visual Studio がインストールされている環境ではこの作業は不要です。
スタートメニューから Anaconda プロンプトを開きます。そして、以下のコマンドで cupy をインストールします。
pip install cupy
chainer のインストール
CUDA 関連を飛ばしてきた人はここから再開です。
あるいは CUDA をインストールしてここまで手順を追ってきた人は、1度 python のコンソールを閉じましょう。
再び anaconda のコンソールを開いて、 python の環境は 3.5 を有効化して、以下のコマンドで chainer をインストールします。
activate py35 pip install chainer
ここで chainer までインストールが終わったので、 この先は PaintsChainer のための準備を整えていきます。
OpenCVのインストール
PaintsChainer は OpenCV を使います。
OpenCV は以下のコマンドでインストールします。
conda install --channel https://conda.anaconda.org/menpo opencv3
PaintsChainer のインストール
PaintsChainer はこちらで公開されています。 https://github.com/pfnet/PaintsChainer
感謝しつつ git で取得します。git がない場合には zip でダウンロードして適当な場所に展開します。
展開した後、 cgi-bin/paint_x2_unet ディレクトリに models フォルダを作成します。
そしてこの中に、 http://paintschainer.preferred.tech/downloads/ から取得できる以下のファイルをダウンロードして配置しておきます。
- liner_f
- unet_128_standard
- unet_512_standard
そして早速サーバーを起動します。
python server.py
もし CPU で実行させる場合には以下のようにします。
python server.py -g -1
サーバーは localhost:8000 で起動するようになっているので、
“serving at localhost : 8000” という出力を確認したらブラウザでこのアドレスにアクセスします。
以下のようなページが表示されたらひとまず動作しています。
あとは適当な線画を入力してみましょう。
設定変更とか
外部からの接続のことを考えるとデフォルト設定ではつながらないと思います。
起動時のオプションに、”–host IPアドレス –port 8080″ などと追加設定することで、待ち受けるインターフェースの指定が可能となっています。
補足
Windows 版で上記の手順通りにやると現時点では肌色となってほしい部分で青みがかかった画像ができあがってくると思います。
これは BGR – RGB のチャンネル反転が起きているのが原因のようです。
同じような構築手順で、 Ubuntu で試したときには発生していませんでした。
これをなんとかするには、 cgi_exe.py, img2imgDataset.py のファイルを編集します。
img2imgDataset.py で cv2.COLOR_BGR2YUVを使うように変更したり、 cgi_exe.py では cv2.COLOR_YUV2BGR を使用するように変更しました。
ひとまずはこれで Windows 版で正常な色として動き始めました。
うまく行かない場合
自分が出遭った事例を紹介します。
nvccへのパス
python のコンソールで nvcc とタイプして見てください。
そんなファイルは無いと怒られるような場合には、 CUDA のツールキットに対してパスが設定されていません。
cuDNNのインストール確認
パスは通っているのにという場合には、https://devtalk.nvidia.com/default/topic/969047/cuda-8-vs2015-corecrt-h-error/?offset=7 このスレッドで紹介されているものに該当しているのかもしれません。
実行時のエラー
いざ変換をというときにエラーが出ました。
RuntimeError: `nvcc` command returns non-zero exit status. command: ['nvcc', '--preprocess', '-Xcompiler', '/wd 4819', '-m64', 'C:\\Users\\xxxx\\AppData\\Local\\Temp\\tmpumm0tvw0\\kern.cu']
こんなメッセージが出てました。しかしよくよく見てみると後続に以下のような文字が.
Cannot find compiler 'cl.exe' in PATH\r\n"
Include,Lib らは前の掲示板で見たとおりに設定していたのですが、まさかコンパイラを要求されるとは。
VisualStudio が入っているからと BuildTools のインストールを飛ばしたのが仇となった事例でした。
対策は以下のようにして環境変数のセットバッチを呼び出してしまいました。
"%VS140COMNTOOLS%vsvars32.bat"
まとめ
うまい人が書いた線画かつ基本が人なものはうまく着色されているように感じました。逆に絵心のない人が書いたイラストチックなものは、赤黒く着色されて不気味なものになりました。ラフよりちゃんとした線画を入力として与えないと綺麗な画像に仕上がらない印象です。
ディープラーニング面白そうですね。以下の本たちが評判よさそうな感じです。ここから始めるといいのかもしれません。
[amazonjs asin=”4873117585″ locale=”JP” title=”ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装”]
[amazonjs asin=”4274219348″ locale=”JP” title=”Chainerによる実践深層学習”]
噂では TensorFlow も勢力を伸ばしてきているとか聞きました。日本語による記事や解説がやや少ない印象ですが・・・。
補足
こちらの試した環境です。
- Windows10 (x64)
- CUDA 8.0
- Python 3.5.2