所用で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
に置く必要があります。