2017年11月16日 (木) | Edit |
chainerを使ってAI的なアルゴリズムで写真をゴッホ風の絵画にするっていうヤツがあるんですけど動かすまでに結構苦労しました。
まず、「caffe」っていうのをインストールしておく必要があります。このcaffeのコンパイルでまずつまづきます。コンパイラがエラーを吐くので一々対応しないといけない。caffeのソースをダウンロードします。
make clean
make all
make test
make runtest
で[PASS]と表示されるまでの道のりがハンパないです。ここまでたどり着いたらあとすこし。

make pycaffe
python
>>>import caffe
で何もエラーが出なければOKです。

これでやっとchainer-gogh.pyを実行できる環境が整いました。でもまだハードルがあります。

ダウンロードしたchainer-gogh.pyとmodels.pyは構文が古く、最新のpythonでは動いてくれません。
なので、chiner-gogh.pyの101行目と102行目の、「, volatile=Train」という文字列を削除し、その上の行に以下のセンテンスを書きます。
with chainer.using_config('enable_backprop', False):
で、これだけではまだエラーを吐きやがります。
次の行の頭にインデントをいれます(TABかスペース)。つまり次のようになります。

100 with chainer.using_config('enable_backprop', False):
101     mid_orig = nn.forward(Variable(img_orig))
102 with chainer.using_config('enable_backprop', False):
103    style_mats = [get_matrix(y) for y in nn.forward(Variable(img_style))]

で次にmodels.pyを修正します。
22行目の、「, train=True」を削除します。

あ、それと、「nin_imagenet.caffemodel」ってファイルをダウンロードして実行フォルダに置いておかないとエラー出します。

これで動きます。つーか、CPUのみでやる場合、時間がめちゃくちゃかかりますな。
時間を短縮する方法は、GPUの演算能力を使うことですが、CUDAの導入とかcaffeのコンパイルエラーへの対応とかさらにハードルが上がります。AIって言っても単なるアルゴリズムみたいな気がしなくもないですよね・・・。