Python
CUDA
DeepLearning
VisualStudio2013
Caffe

WindowsでLet's DeepLearning! (VS2013+caffe+CUDA7.5+cudnn5.1)

More than 1 year has passed since last update.

WindowsでもDeepLearningがやりたい

DeepLearningのフレームワークといえば、CaffeやTensorflow、Chainerなどが有名ですが、これらはWindowsをサポートしていないものが多く、これまでUbuntuで環境構築をしていました。(ChainerはWindowsでも動きます)
でもやっぱりWindowsでもやりたい。
というわけでCaffeをWindowsでできないかと試行錯誤した結果、なんとかビルドできたので記しておきます。

といっても特に難しいことはなく、Windows版のCaffeは公式のページからGithubのレポジトリへのリンクがあるので、そのREADMEに従えばビルドできます。
https://github.com/Microsoft/caffe

ただ上の手順だと、cudnn3あるいはcudnn4じゃないといけなかったり、詳細な説明がなかったり…

自分はcudnn5.1が使いたいので、CaffeのWindowsブランチをForkしてcuDNNv5向けに変更を加えたリポジトリを使います。
変更箇所は以下の通りです。

・include\caffe\layers\cudnn_relu_layer.hpp
・include\caffe\layers\cudnn_sigmoid_layer.hpp
・include\caffe\layers\cudnn_tanh_layer.hpp
・include\caffe\util\cudnn.hpp
・src\caffe\layers\cudnn_conv_layer.cu
・src\caffe\layers\cudnn_relu_layer.cu
・src\caffe\layers\cudnn_relu_layer.cpp
・src\caffe\layers\cudnn_sigmoid_layer.cu
・src\caffe\layers\cudnn_sigmoid_layer.cpp
・src\caffe\layers\cudnn_tanh_layer.cu
・src\caffe\layers\cudnn_tanh_layer.cpp

https://github.com/yuzsh/caffe

実行環境

  • Windows10
  • VisualStudio2013 (2015はCUDAが対応していないためできません)
  • CUDA7.5
  • cudnn5.1 (v3やv4でも良い)
  • Python2.7 (自分はanacondaで)

準備

リポジトリのクローン(場所はお任せします)
Windows版のブランチをダウンロードします。

git clone -b windows https://github.com/yuzsh/caffe.git

caffeのルートディレクトリに移動して、プロパティファイルをコピーしておく。

cd caffe
copy .\windows\CommonSettings.props.example .\windows\CommonSettings.props

各種ライブラリのインストール方法は省略しますが、
CUDAやcudnnはNVIDIAの公式ページからインストールしてください。
PythonはAnacondaを使うと便利です。

またPythonモジュールで、numpy、scipy、matplotlib、scikit-image、protobufが必要となるのでインストールが必要です。自分は以下のようにしました。

activate anaconda2
conda install -y numpy scipy matplotlib scikit-image pip
pip install protobuf

CommonSettings.propsの編集

.\windows\CommonSettings.propsを開きます。VisualStudioで開くと見やすいでしょう。
確認するところは、

CommonSettings.props
<CpuOnlyBuild>false</CpuOnlyBuild> //デフォルトはfalse GPU使えない人はtrueに
<UseCuDNN>true</UseCuDNN> //デフォルトはtrue GPU使えない人やなくてもいい人はfalseに
<CudaVersion>7.5</CudaVersion> //CUDAのバージョン
<PythonSupport>true</PythonSupport>  //Python使うのでtrueに デフォルトはfalse
<MatlabSupport>false</MatlabSupport>  //Matlab使うか 今回使わないのでfalse(デフォルト)
<CudaArchitecture></CudaArchitecture>  //デフォルトではいろいろ書いてあるけど、最近のアーキテクチャ使ってる人は空に(GTX1080など)
<CuDnnPath> path to your cudnn </CuDnnPath> //$(CuDnnPath)\cuda\include となるように
<PythonDir>C:\Anaconda3\envs\anaconda2</PythonDir>  //Pythonのパス

ちなみにDebugモードのときはPythonはfalseにしないとPython27_d.libがないためエラーになります。

これが終わったら、今度はプロジェクトの設定で「警告をエラーとして扱う:No」に変更するのですが、自分のリポジトリをクローンした場合はすでにやってあるので大丈夫かと思います。

ビルド

あとはcaffe.slnファイルを開いて、ソリューションのビルド。
結構時間かかります。
ビルドが無事完了すると、Build\x64\Release(またはBuild\x64\Debug)に、exeとdllが作成されます。

PATHの設定

環境変数PYTHONPATHに<caffe_root>\Build\x64\Release\pycaffeを追加します。
ちなみにwindowsでの環境変数の取り扱いは、RapidEEが便利です。

動作確認

コマンドプロンプトを開き、pythonを立ち上げ、import caffe がエラーなく通ればインストール完了。
また、\Build\x64\Releaseに移動してcaffe.exeを実行して使い方のメッセージが表示されれば問題なくEXEが生成されていることが確認できます。

補足ですが、MNISTなどのサンプルはシェルスクリプトで書かれているため、これを実行できる環境やソフトを準備する必要があります。
自分はgitを入れるときに設定していました。

以上となります。
Ubuntuよりも簡単にできた気がします。

ちなみにchainerはpip install chainerだけでインストールできます。