結構前にUbuntuにCaffeをインストールしました。
Windows版がある!!
会社でWindows上で動作するDeepLearning環境はないか?という質問を受けて、調べることになりました。
その過程でCaffeがWindowsで動作するように、Microsoftがgithubで開発を行っていることを知りました。
CNTKがあるのに、Caffe?って思いましたが、Windowsシステムに開発者を集めるための一環としては、既にDeepLearningの世界ではそれなりの地位があるCaffeを使えるようにすることは非常に意義があるでしょう。
Windows向けのCaffeは個人デベロッパーがWindows向けにCaffewフォークして開発していました。
個人ではなく、巨大組織が開発にコミットするのは非常に心強いです。
(上述の個人フォークは一年前に開発が止まっています。)
インストール
マニュアルがあるので、それを見ながらインストールしていきます。
トップページにあります。
CNTKのインストールといくつかかぶっていますのでサクサク行きましょう。
ソースコード
Githubからクローンします。
コマンドでもいいですし、TortoiseGitやSourceTreeのようなGUIクライアントでも良いです。
設定ファイルの準備
ビルドに必要な設定ファイルです。
クローンしたフォルダを
1 | copy <caffe_root>\windows\CommonSettings.props.example caffe_path>\windows\CommonSettings.props |
CUDA
7.5をインストールします。
環境に応じたインストーラをダウンロードしてください。
NVIDIA CUDA Deep Neural Network library (cuDNN)
cuDNN v3またはcuDNN v4をインストールします。
ダウンロードのために、事前に登録しておく必要があります。登録はすぐにできるわけではないので、余裕を持って行っておきましょう。
CUDAインストール後、環境変数CUDA_PATHが設定されますが、そこにcuDNNをコピーします。
または、CommonSettings.propsの24行目にあるCuDnnPath ノードにcuDNNへのパスを追記します。
展開したzipの構成が、D:\Works\Lib\NVIDIA\cudnn-4.0\cuda\binのようになっているなら、下記のようになります。
D:\Works\Lib\NVIDIA\cudnn-4.0
また、cuDNNを無効にすることもできます。CommonSettings.props内のUseCuDNN ノードのtrueをfalseに変更します。
下記のようになります。
1 | <UseCuDNN>false</UseCuDNN> |
Python
まず、Caffe Python ラッパーをビルドするために、CommonSettings.props内のPythonSupportノードのfalseをtrueに変更します。
下記のようになります。
1 | <PythonSupport>true</PythonSupport> |
次に、Miniconda 2.7をインストールします。64-bitと32-bitがあるので、適切なインストーラを実行してください。
マニュアルにはAll Userと書いてありますが、特に気にする必要はないでしょう。
お好みの場所に。
環境変数への追加は必須なので、最初のオプションはチェックします。
2つめのオプションはなくても良いです。
インストール完了後、Minicondaへのパスが環境変数PATHに追加されます。
さらに、PythonのインストールディレクトリをPythonDirノードに記述します。
これはgithubのマニュアルにも書いていないので注意です。デフォルトでC:\Miniconda2になっているので、そこにインストールしたなら気にする必要はありません。
1 | <PythonDir>C:\Program Files\Miniconda2\</PythonDir> |
最後に、管理者権限で実行したコマンドプロンプトから下記のコマンドを実行します。
1 | conda install --yes numpy scipy matplotlib scikit-image pip pip install protobuf |
必要なパッケージのダウンロードとインストールが実行されます。
少し時間がかかりますが、コーヒーでも飲んで待ちましょう。
最後に、Pythonを使って後述のビルドを実行した後、使用するために、下記のどちらかを実行します。
- PythonPath環境変数に \Build\x64\Release\pycaffe へのパスを通す
- \Build\x64\Release\pycaffe\caffe を \lib\site-packages にコピー
個人的には、後者がおすすめです。環境変数を汚したくないので。
シンボリックリンクでも貼って、常にsite-packagesがcaffeフォルダを参照するようにしましょう。
コマンドは下記です。
1 | mklink \lib\site-packages\caffe \Build\x64\Release\pycaffe\caffe /D |
MATLAB
MATLABを私は持っていませんので、マニュアルの説明だけです。
Caffe MATLAB ラッパーをビルドするために、CommonSettings.props内のMatlabSupportノードのfalseをtrueに変更します。
下記のようになります。
1 | <MatlabSupport>true</MatlabSupport> |
さらに、MATLABのインストールディレクトリをMatlabDirノードに記述します。
1 | <MatlabDir>C:\Program Files\MATLAB\R2014b</MatlabDir> |
最後に、MATLABを使って後述のビルドを実行した後、使用するために、
- MATLABの検索パスに生成したmatcaffeフォルダーを追加
- \Build\x64\Releaseをパスに通す
を実行します。
ビルド
Visual Studio 2013でビルドします。
\windows\Caffe.slnを開いてビルドしましょう。
もしくは、下記のコマンドをコマンドプロンプトから実行することで、Visual Studioを立ち上げることなくビルドできます。
1 | cd \windows\Caffe.sln |
かなり時間がかかります。
ビルド完了後、\Build\x64\Releaseにcaffe.exeが生成されています。
ビルド終了後も生成されていない場合は、Build.logを確認して、エラーに対処してください。
ちなみに、caffeには様々な依存ライブラリ (boost、glog、hdf5、LevelDB、OpenCV等) がありますが、それらの依存関係はNuGetで解決しています。
まとめ
環境構築が終わりましたので、次回はモデルを使用して、学習をしてみたいと思います。