公式のpython on win10でPaintsChainer on CPUを動かす

pythonは使ってなかったけどPaintsChainerを手元で動かしたい！　という、あなたのための記事です。

#始める前に
コマンドラインとかわからん！　という向きにも導入して頂きたくWindows 64bit で動くPaintsChainer 環境をまとめてみました。
https://drive.google.com/file/d/0Bxi51MbdWHVhM2pZSi1LNl9XYnc/view

これと同じものをご自分で構築したい！　その場合はこの記事を読み進めましょう。

#win10にpython 3.5を入れる
手元の Windows 10 (64bit) にpythonを入れます。
pythonと言ってもいろいろあるのだけど、ここでは公式のpythonを使います。

公式サイト www.python.org からWindows版をダウンロードします。
いろいろ配布されていて迷いますね。私は python-3.5.3-amd64.exe を選択しました。

最新版の3.6でなく3.5を選択したのはblender 2.78に合わせたかったからなのだけど、3.6はnumpy（chainerが使うライブラリ）との相性が良くないみたいです。

ダウンロードしたら実行しましょう。

![python-101.png](https://qiita-image-store.s3.amazonaws.com/0/162238/b6e42fa2-8168-6f80-5ecc-0971c25f502b.png)
インストール位置を変更したいので（C:の容量が厳しいので）Customize installationを押します。

![python-102.png](https://qiita-image-store.s3.amazonaws.com/0/162238/a79fb5d5-6784-01fa-9f2c-cee6f257bd48.png)
オプションを選びます。最初は全部チェックが入っています。私は上記のようにしました。pipとpyは入れましょう。

![python-103.png](https://qiita-image-store.s3.amazonaws.com/0/162238/e9a0f505-3a7b-594a-06fb-b383d93c7d90.png)
さらにオプション。ここでは環境変数 (environment variables) にPythonを追加しておきます。インストール位置 (install location) はご自分の環境に合わせて編集しましょう。

![python-104.png](https://qiita-image-store.s3.amazonaws.com/0/162238/e9202e7c-32a9-5fb3-7102-5381659b2428.png)
完了しました！

# 黒い画面
おもむろにcmd.exeを実行します。あの黒い画面ですね！

![cmd-003.png](https://qiita-image-store.s3.amazonaws.com/0/162238/96edaac8-a930-f769-3cfe-792f00bf893f.png)
python (py) が応答することを確認しておきましょう。

# chainer opencv pillowを入れる
パッケージはpipというコマンドを使って入れます。
入れる必要があるのはchainer（主役）opencv-python（画像処理）そして pillow（画像処理）です。

wheelという仕組みのおかげで公式のpythonでもすんなり入ると思います。

```
E:\usr\src\PaintsChainer>pip install chainer
Collecting chainer
  Downloading chainer-1.20.0.1.tar.gz (1.2MB)
    100% |################################| 1.2MB 164kB/s
Collecting filelock (from chainer)
  Downloading filelock-2.0.7.tar.gz
Collecting nose (from chainer)
  Downloading nose-1.3.7-py3-none-any.whl (154kB)
    100% |################################| 163kB 109kB/s
Collecting numpy>=1.9.0 (from chainer)
  Downloading numpy-1.12.0-cp35-none-win_amd64.whl (7.7MB)
    100% |################################| 7.7MB 61kB/s
Collecting protobuf (from chainer)
  Downloading protobuf-3.1.0.post1-py2.py3-none-any.whl (347kB)
    100% |################################| 348kB 240kB/s
Collecting six>=1.9.0 (from chainer)
  Downloading six-1.10.0-py2.py3-none-any.whl
Requirement already satisfied: setuptools in e:\python35\lib\site-packages (from protobuf->chainer)
Installing collected packages: filelock, nose, numpy, six, protobuf, chainer
  Running setup.py install for filelock ... done
  Running setup.py install for chainer ... done
Successfully installed chainer-1.20.0.1 filelock-2.0.7 nose-1.3.7 numpy-1.12.0 protobuf-3.1.0.post1 six-1.10.0

E:\usr\src\PaintsChainer>pip install opencv-python
Collecting opencv-python
  Downloading opencv_python-3.2.0.6-cp35-cp35m-win_amd64.whl (22.1MB)
    100% |################################| 22.1MB 32kB/s
Requirement already satisfied: numpy>=1.11.3 in e:\python35\lib\site-packages (from opencv-python)
Installing collected packages: opencv-python
Successfully installed opencv-python-3.2.0.6

E:\usr\src\PaintsChainer>pip install pillow
Collecting pillow
  Downloading Pillow-4.0.0-cp35-cp35m-win_amd64.whl (1.5MB)
    100% |################################| 1.5MB 195kB/s
Collecting olefile (from pillow)
  Downloading olefile-0.44.zip (74kB)
    100% |################################| 81kB 1.7MB/s
Installing collected packages: olefile, pillow
  Running setup.py install for olefile ... done
Successfully installed olefile-0.44 pillow-4.0.0

E:\usr\src\PaintsChainer>pip list --format=columns
Package       Version
------------- -----------
chainer       1.20.0.1
filelock      2.0.7
nose          1.3.7
numpy         1.12.0
olefile       0.44
opencv-python 3.2.0.6
Pillow        4.0.0
pip           9.0.1
protobuf      3.1.0.post1
setuptools    28.8.0
six           1.10.0

```

すごいぞpip！

#PaintsChainerをCPUで動かす
NVIDIAのGPUがない環境ではCUDAが動かないので（AMDのでも頑張れば動くらしい…）CPUで動かします。
CPUを使うにはWebサーバを起動するときに -g -1 と指定します。

```
E:\usr\src\PaintsChainer>py server.py -g -1
GPU: -1
start
load model
serving at localhost : 8000
```

あとは http://localhost:8000/static をブラウザで開くと見慣れた画面になります！

#動くけど色がおかしい場合
実行結果の画像は作られるけど色がおかしくなる（赤と青のチャンネルが入れ替わる）場合はBGRをRGBに書き換える必要があります（計5箇所）。

```
in cgi_exe.py:
	change cv2.COLOR_YUV2BGR to cv2.COLOR_YUV2RGB
in img2imgDataset.py:
	change cv2.COLOR_BGR2YUV to cv2.COLOR_RGB2YUV
```

opencvのバージョンによるらしいのだけど、よくわかりません。

いづれにしても、手元で動くのは感動ものなので、お試しあれ。サーバが手元にあると、いちいち保存しなくて済むのも良い。