DeepLearning
Caffe

WindowsでCaffeを使う:環境構築

More than 3 years have passed since last update.

画像認識におけるDeepLearningはCaffeがデファクトスタンダードとなりつつありますが、現状では公式にLinux環境しかサポートされていません。本格的にDeepLearningに取り組むならLinux環境を用意するのが良いでしょうが、Windows環境で使う手もあります。Windows環境しかない方にはお手軽にDeepLearningを試すことができ、Windowsメインで開発される方にとってはDeepLearningをWindowsアプリに組み込むこともできます。

本記事では非公式で公開されているWindows版Caffeの使用方法を解説します。数回に分けて解説を行う予定で、今回は環境構築について書きます。

Caffe公式ページでも紹介されていますが、シンガポール国立大学の方がWindows版CaffeをGitHubに公開しています。

https://github.com/niuzhiheng/caffe

大体のことはREADMEに書いてますが、環境構築手順を以下にまとめます。


準備するもの


必須


  • Windows 64-bitマシン

  • Visual Studio 2012

  • CUDA toolkit 6.5

  • その他依存関係(ここからダウンロード)


推奨


  • GPU

※GPUはなくても動作しますが、CPUモードだとWindows版Caffeのバグで学習がうまくいかない場合があるみたいです。


インストール手順


1. Visual Studio 2012のインストール

64bit版のVisual Studio 2012インストーラーを入手し、インストールします。


2. CUDA toolkit 6.5のインストール

ここから64bit版のCUDA toolkit 6.5をダウンロードし、インストールします。

最新版のCUDA toolkit 7.0がリリースされていますが、Caffeはバージョンの整合性に厳しいので6.5を入れておいた方が無難でしょう。

(7.0での動作は未確認です)


3. プロジェクトのダウンロード

上記のGitHubのページのDownload Zipボタンを押してプロジェクトをダウンロードし、任意のフォルダに解凍します。ここで展開先のフォルダ名を"caffe"にすると何故かビルドできないのでご注意ください。


4. 依存関係のダウンロード

準備項目にも記載しましたが、ここからダウンロードして、プロジェクトのルートディレクトリに解凍します。

解凍したフォルダと同名のフォルダがルートディレクトリにも存在していますが、そのまま統合します。


5. ビルド

./build/MSVCにあるソリューションファイルMainBuilder.slnを開き、プロジェクトを立ち上げます。ターゲットのプラットフォームをx64に指定します。

./toolsに様々なツールに相当するcppファイルがありますが、ビルドしたいツールのcppファイル名をMainCaller.cpp内でインクルードします。

デフォルトでは学習を行うtrain_net.cppが指定されていますので、このままビルドすれば学習機能を持ったツールが作成されます。

ビルドが成功したら./binにMainCaller.exeが吐かれています。

MainCaller.cppをデフォルトのままでビルドすれば、MainCaller.exeは学習ツールとして動作します。

非常に面倒ですが、他のツールもMainCaller.cpp内のインクルードを変えて逐一ビルドする必要があります。全て、MainCaller.exeの名前で吐かれるので、実行ファイルの名前をツールごとに変えておきましょう。(train_net.exe等)


MNISTサンプルで学習してみる

MNISTという手書き文字のデータセットが用意されてますので、手書き文字識別器の学習を行ってみましょう。詳しいことは次回の記事で解説しようと思いますので、ここでは機械的な手順に留めておきます。

前述のビルドで、MainCaller.cppにtrain_net.cppを指定してビルドを行った前提で以下の手順を踏みます。


  1. コマンドライン上で./examples/mnistにカレントディレクトリを移します。

  2. get_mnist_leveldb.batを実行し、データセットをダウンロード・解凍します。mnist-train-leveldb、mnist-test-leveldbというフォルダが作成されていればデータセットの用意は完了です。

  3. GPUがない場合は、lenet_solver.prototxtを開き、solver_modeの項目をGPU→CPUに変更します。これでCPUモードで学習が行われます。

  4. train_lenet.batを実行し、学習を開始します。Iteration 100, loss = ~ のように学習経過が表示されていきます。

  5. 学習が完了したら識別モデルファイルlenet_iter_10000が出力されます。

環境構築の解説は以上になります。

次回はサンプルデータセットを用いたチュートリアルを解説します。