chainerでcaffe model dataを使っているサンプルコードを試す

この記事を試した時のメモ。
Chainerで入力画像の最適化 - mktozkの日記

正直言って、この記事で何をやっているか分かっていない。。。

学習済みモデルデータ

https://github.com/pfnet/chainer.git

をTortoiseGitでチェックアウト。

Git for Windows

Gitでクローンしようとしたら、TortoiseGitでエラーが出た。

git for windows not found

Git for Windowsというのを入れていなかった。
git サーバ/ブラウザツールの構築方法

http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel

エラーその1

Chainerで入力画像の最適化 - mktozkの日記
に載っているコードを実行したら、
cuda.init(gpu) は無い、というようなエラーになった。
no attribute 'init'
というようなエラー。(メモし忘れた)
chainerを1.3.2から1.5.1にバージョンアップした。

Windowsにchainer 1.5.1を入れる - kubotti’s memo

警告その1

C:\Python2710\lib\site-packages\chainer\cuda.py:85: UserWarning: cuDNN is not enabled.
Please reinstall chainer after you install cudnn
(see https://github.com/pfnet/chainer#installation).
  'cuDNN is not enabled.\n'

NVIDIA cuDNN – GPU Accelerated Deep Learning | NVIDIA Developer
ユーザー登録した。
cuDNN v4 Library for Windows をダウンロード。
cudnn-7.0-win-x64-v4.0-rc.zip
を解凍したら、
cuda\bin\cudnn64_4.dll
cuda\include\cudnn.h
cuda\lib\x64\cudnn.lib
が出てきたので、検索で出てきた、
Windows上にChainer v1.5+CUDA+cuDNNを一番簡単に入れれる方法 - Qiita
の通り、
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5
にコピペ。

chainerをインストールし直さないといけないらしい。

cuDNN

chainerを入れ直したら、エラーになった。

略

    Executing cythonize
    Options: {'profile': False, 'annotate': False, 'linetrace': False, 'no_cuda': False}
    Include directories: ['C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v7.5\\include', 'C:\\Python2710\\lib\\site-packages\\numpy\\core\\include']
    Library directories: ['C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v7.5\\bin', 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v7.5\\lib\\x64']

略


    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG "-IC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include" -IC:\Python2710\lib\site-packages\numpy\core\include -IC:\Python2710\include -IC:\Python2710\PC /Tpcupy\cuda\cudnn.cpp /Fobuild\temp.win-amd64-2.7\Release\cupy\cuda\cudnn.obj
    cudnn.cpp
    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\include\cuda_runtime.h : warning C4819: The file contains a character that cannot be represented in the current code page (932). Save the file in Unicode format to prevent data loss
    c:\program files\nvidia gpu computing toolkit\cuda\v7.5\include\cuda_runtime_api.h(1974) : warning C4819: The file contains a character that cannot be represented in the current code page (932). Save the file in Unicode format to prevent data loss
    cupy\cuda\cudnn.cpp(2718) : error C2660: 'cudnnAddTensor' : function does not take 8 arguments
    cupy\cuda\cudnn.cpp(3798) : error C2660: 'cudnnSetConvolutionNdDescriptor' : function does not take 6 arguments
    cupy\cuda\cudnn.cpp(4926) : error C2660: 'cudnnConvolutionBackwardFilter' : function does not take 10 arguments
    cupy\cuda\cudnn.cpp(5145) : error C2660: 'cudnnConvolutionBackwardData' : function does not take 10 arguments
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\BIN\\amd64\\cl.exe' failed with exit status 2
    
    ----------------------------------------
pip install -U chainer -vvvv

というコマンドを試してもダメだった。

Download cuDNN v4 Release Candidate (December 10, 2015), for CUDA 7.0 and later.
をダウンロードしたのがいけなかったっぽい。

Download cuDNN v3 (September 8, 2015), for CUDA 7.0 and later.
をダウンロードして、
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5
に上書き。
dllの名前が
cudnn64_70.dll
で、cuDNN v4と違っていた。
pip install chainer
でうまくインストールできた。

Chainerで入力画像の最適化 - mktozkの日記
のコードを実行して、警告が出なくなった。

出力結果

記事では、動物の画像を入力して、最適化された画像?にしているようだったので、
Google画像検索で適当にマンドリルの画像を取ってきて、54行目あたりの、
image_path変数に画像のパスを設定した。
result.pngの結果がこれ↓。

f:id:kubotti:20151227153608p:plain

cuDNNが入っていないときは真っ黒な画像だったけど、それっぽい画像になった。
でもこの画像がどういう意味を持っているのはわからない。。
PyCharmのデバッグモードで動かしたら、固まった。
普通に(Debugでなくて)RunするとPython.exeがメモリを2400MBくらい使っていた。