67
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DeepLearningフレームワークCaffeをCPU modeでMacにインストールする方法

Last updated at Posted at 2015-07-04

※この情報は2015/07/04のものです、Caffeは非常に更新速度が早いため現在動作するかは分かりません。

Caffeとは

最近話題のDeep Learningのオープンソースなフレームワークです。
カリフォルニア大学バークレー校の院生が作り始めたそうです、凄い!
公式ホームページはこちら、C++、PythonやMATLABで使えるので得意な方を選んで使えます。
更新が非常に早いので最新の情報を追ってみると面白そうです。
ここから画像分類のデモが見られるので、気になる方は試してみてください。

Caffeを使おうと思った背景

Deep Learningを勉強し始めた当初は関数型言語だし普段使っているからScalaでDeep Learningやる!とか甘い考えで色々試していましたが、ある時画像処理や機械学習のライブラリ、フレームワークがPythonなどの言語と比較して圧倒的に少ないことに気が付いてしまいました。がっつり自前で0からNeural Networkを設計、構築するというよりはとにかく動かしてみたかったのでとりあえず公式ドキュメントや日本語での情報が比較的多いCaffeを使うことにしました(ググればサンプルコードとかがたくさん出てくる)。さらにCaffeは基本的にはGPUを使用しますが、CPU_ONLYのオプションもきちんと用意されているのでMacBookPro 13inchで強力なGPUが無い自分にも扱えて嬉しい!

しかしCaffeは環境構築が大変という噂もあり、何か簡単な方法がないかと調べているとDocker HubにCaffe構築済みというありがたいコンテナ達を見つけて、あるじゃんやった、と思っていましたがCPU modeのコンテナのほとんどのものは最終更新日が何ヶ月も前!どうせなら最新版使いたいよ!ということで自分のローカル環境で構築しようと決めました。Pythonで使いたいのでPyCaffe(Pythonでimport caffe)ができるようになるまで頑張ります。

ローカル環境

  • マシン: MacBook Pro 13inch(Early 2015)
  • CPU: 3.1 GHz Intel Core i7
  • メモリ: 16 GB 1867 MHz DDR3
  • OS: OSX Yosemite 10.10.4

CaffeをbuildしてPythonでimportするまでの道のり

Caffeを使うのに必要なもの

  • CUDA(今回はCPU modeなのでいらない)
  • BLAS(Macには標準で入っているので特にやることなし)
  • OpenCV(画像処理系のライブラリ、homebrewで入れられる)
  • protobuf, szip, glog, gflags, hdf5, leveldb, snappy, lmdb (homebrewで割と簡単に入れられる)
  • python, boost, boost-python (PyCaffeするのに必要、これもhomebrewで割と簡単に入れられる)

結構有りますがほとんどのものはhomebrewが入っていれば一気にインストールすることができます。

手順

MacにはPythonが元から入っているけどバージョンが古いみたい(buildでうまくいかなくなることが多い?)なのでhomebrewで新しく入れる、今回は面倒なのでpyenvは使いませんでした(本当は使った方が絶対良い)。

brew install python

次、まとめてbrewで入れます!

brew install --fresh -vd snappy leveldb gflags glog szip lmdb
brew tap homebrew/science
brew install hdf5 opencv

今回はPyCaffeしたいのでこっちも一気に入れます。

brew install --build-from-source --with-python --fresh -vd protobuf
brew install --build-from-source --fresh -vd boost boost-python

次、Caffe本体をレポジトリからcloneしてきて、用意された雛形からMakefile.configを作成します。

git clone https://github.com/BVLC/caffe.git
cd caffe
cp Makefile.config.example Makefile.config

Makefileの一部を書き換えます。
MacのバージョンでBLASのpathが変わるのでBLAS_INCLUDEの部分のpathを下記のように変更します、二箇所あるので一応両方同じ書き換えをします。

BLAS_INCLUDE ?= /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers/

Makefile.configも何箇所か書き換えます。
まず上の方にあるCPU_ONLYをアンコメントします、これによりCPU modeのCaffeがbuildされるようになります。
次にPYTHON_INCLUDEPYTHON_LIBのpathを使っているpythonの方に下記のように変更します。

Makefile.config
CPU_ONLY := 1

PYTHON_INCLUDE := /usr/include/python2.7 \
        /usr/local/lib/python2.7/site-packages/numpy/core/include/

PYTHON_LIB := /usr/local/Cellar/python/{python version}/Frameworks/Python.framework/Versions/2.7/lib/

ここまででCaffeをbuildする準備は完了です、Caffeをbuildしてtestを走らせてみましょう。
-jはbuildの際の並列数です、多いと終わるのが早くなります。

make clean
make all -j4
make test -j4
make runtest

runtestがうまく通ればとりあえずはCaffeのbuildは成功です、次にこれをPyCaffeできるようにします。(Xcodeのバージョンによってmake testが失敗してしまうみたいですがmake allが通っていればテストを行わない事で次のステップに進めます。)

Caffe内のpython(caffe/python)フォルダに移動してPyCaffeに必要なライブラリをpipで一気に入れます。

cd python
for li in $(cat requirements.txt); do sudo pip install $li; done

次、PyCaffeをbuildします。

cd ../
make pycaffe
make distribute

下記のPYTHONPATHを.bashrcや.zshrcに書いておきます。

export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH

導入の手順はここまでです。source ~/.bashrcなどで読み込みした後Pythonのインタプリタでimport caffeをしてみてください、エラーが出なければ成功です!
homebrewのおかげで思ったよりも簡単にCaffeがインストールできました、本当に感謝ですね。
僕もまだCaffeいじり始めたばかりですが使い方が分かってきたらそれもそのうちまとめて記事にしたいと思いますのでよろしくお願いします。

何か問題点、改善点ありましたら教えてください。

67
66
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
67
66

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?