XcodeでCaffeをデバッグして研究します。

3014 ワード

まず記録して、後から整理します。
XcodeでCaffeをデバッグして研究します。
XcodeでCaffe Debug and Explorer Caffe in Xcodeをデバッグして研究します。http://coldmooon.github.io/2016/03/18/debug_and_learn_caffe/
1、caffeコンパイルはここを参考にします。
Mac 10.12+XCodeコンパイルcaffe(GPU加速含む)http://blog.csdn.net/hanlin_tan/articale/detail/53365480
//   ,    ,        ,  
$ mkdir build
$ cd build/

//   CUDA     
$ cmake -DCPU_ONLY=ON ..
$ make

2、xcodeのデバッグエラー
1、スクリプトのダウンロードエラー
./data/cifar10/get_cifar10.sh: line 9: wget: command not found
Unzipping...

$ brew install wget

2、xcodeのコンパイルでエラーが発生しました。
/util/mkl_alternate.hpp:14:10: fatal error: 'cblas.h' file not found
#include 


$ brew install openblas

// brew        ,         ,  include, lib
$ ln -s ../Cellar/openblas/0.2.19_1/include/ openblas

ln -s ../Cellar/openblas/0.2.19_1/lib/libblas.dylib libblas.dylib
ln -s ../Cellar/openblas/0.2.19_1/lib/libopenblas.dylib libopenblas.dylib
ln -s ../Cellar/openblas/0.2.19_1/lib/liblapack.dylib liblapack.dylib
ln -s ../Cellar/openblas/0.2.19_1/lib/libopenblasp-r0.2.19.a libopenblasp-r0.2.19.a
ln -s ../Cellar/openblas/0.2.19_1/lib/libopenblas.a libopenblas.a
ln -s ../Cellar/openblas/0.2.19_1/lib/libopenblasp-r0.2.19.dylib libopenblasp-r0.2.19.dylib
ld: library not found for -lopenblas

/usr/local/include/openblas
3、cifar 10_quick_sover.prototxtなどの修正
http://www.jianshu.com/p/d5b4160f02d2
Xcode Using cusom working dictoraryは、CaffeLearning/dataディレクトリを含む。
// cifar10_quick_solver.prototxt     
net: "./cifar10_quick_train_test.prototxt"
snapshot_prefix: "data_cifar10_quick"
solver_mode: CPU

//  cifar10_quick_train_test.prototxt 
        ;  :
mean_file: "./mean.binaryproto"
XcodeでCaffeのC++プログラムをコンパイルしてデバッグします(Caffeソースコードではありません)。
Copile and Debug Caffe C++appication in Xcodehttp://coldmooon.github.io/2015/08/14/compile_caffe_cpp/
まず、caffeのインストールプロセスはglogflagflagProtobuf leveldb snappyのこれらの依存ライブラリが必要です。これらの依存ライブラリの呼び出しは、Makefileに必ず存在します。Makefileの182行で発見されました。
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5

# handle IO dependencies
USE_LEVELDB ?= 1
USE_LMDB ?= 1
USE_OPENCV ?= 1

ifeq ($(USE_LEVELDB), 1)
    LIBRARIES += leveldb snappy
endif
ifeq ($(USE_LMDB), 1)
    LIBRARIES += lmdb
endif
ifeq ($(USE_OPENCV), 1)
    LIBRARIES += opencv_core opencv_highgui opencv_imgproc

    ifeq ($(OPENCV_VERSION), 3)
        LIBRARIES += opencv_imgcodecs
    endif

endif
PYTHON_LIBRARIES ?= boost_python python2.7
WARNINGS := -Wall -Wno-sign-compare

これは、caffeに必要な各依存ライブラリがLIBRIIESという変数に格納されていることがわかる。caffeがexamplesをコンパイルする過程は必ずLIBRIIESという変数に関係があります。ですから、これからはLIBRIIESというキーワードを専門に検索すればいいです。426行で発見されます。
LDFLAGS += $(foreach librarydir,$(LIBRARY_DIRS),-L$(librarydir)) $(PKG_CONFIG) \
        $(foreach library,$(LIBRARIES),-l$(library))
PYTHON_LDFLAGS := $(LDFLAGS) $(foreach library,$(PYTHON_LIBRARIES),-l$(library))