complex small world

どうしようもない日々の追想

Caffe Installation on OS X 10.12 (&Matcaffe)

所用でcaffeを動かす必要が発生したため。

  • Mac OS Sierra 10.12.1 / OpenBLAS / Matlab 2015b (NO Cuda / NO Python)
  • 実施日時2017/1/3
  • あくまで以下の自分の踏んだ道であり、他にベターなインストール方法があるのかもです。

基本的なインストールとMakefile.configについて

まずCaffe公式を参考に。terminalからbrewを使って以下をインストール。

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

また、今回はPython環境を使わないので以下のみ。

$ brew install protobuf boost

BLASはOpenBLASを使うことにした。 (但し、2時間ぐらいインストールに時間がかかった・・・)

$ brew install science/openblas

次に最新のmasterのCaffeをダウンロード、好きなディレクトリに展開。 makefile.config.exampleをコピーしてmakefile.configを生成し、 makefile.configを修正。具体的に修正したのは以下のポイント。

CPU_ONLY := 1
CUSTOM_CXX := /usr/bin/clang++
BLAS := open

openblasのフォルダも指定してあげる。自分の場合は以下にありました。

BLAS_INCLUDE := /usr/local/Cellar/openblas/0.2.18_2/include
BLAS_LIB := /usr/local/Cellar/openblas/0.2.18_2/lib

あとはmatlab関連を追記

MATLAB_DIR := /Applications/MATLAB_R2015b.app
INCLUDE_DIRS := /usr/local/include
LIBRARY_DIRS := /usr/local/lib $(MATLAB_DIR)/bin/maci64 /usr/lib

CaffeのMakeと発生したエラーについて

ここでようやく、terminalでcaffeのフォルダに移動し、以下のmakeを実施。

$ make all 
$ make test

は通ったけど、make runtestでエラー発生。

dyld: Library not loaded: libcaffe.so.1.0.0-rc3 ... libcaffe.so.1.0.0-rc3のエラーは色々報告されているようですが。 よくよく確認するとそもそもmatlab側の> mex -setupが死んでいた。。matlabのmex側の問題のようなので、ここを参考にmatlabのmexoptをアップデート。ちなみにアップデートするファイル(clang++_maci64.xml)には、MacOS X 10.12 = Sierraに対応した記述がなかったので追記。ただ、それでもmake runtestで同じエラーが出る。

そこでC++コンパイルしたいので、matlabからそう指定してあげた。具体的には以下をmatlabのコンソールでタイプ。

> mex -setup C++

その後 Terminalから以下が通りました。

$ make runtest
$ make all matcaffe

またmatlabはterminalから起動しないとcaffeが上手く動かないようです。参考

$ export DYLD_INSERT_LIBRARIES=/usr/local/opt/libtiff/lib/libtiff.5.dylib
$ /Applications/MATLAB_R2015b.app/bin/matlab

Matlabのコンソール上で以下が通れば、matcaffeが使えるとおもわれます。

> addpath('./matlab');
> caffe.set_mode_cpu();

ちなみにcaffe/matlab/demoファイル内のclassification_demo.mを動かすには、ここののcaffe modelをダウンロードし、caffe/models/bvlc_reference_caffenetに置く必要があります。