记得2015年在mac系统上安装过一次caffe,非常顺利,但是最近群里许多同学反映mac安装caffe出现了各种问题,同时我也在帮助别人安装caffe的时候也遇到了一些坑,不再像以前这么顺利了。估计与操作系统,caffe升级有关。
今晚我重新装了一遍caffe,记录下了整个安装过程,希望对各位同学有用。
mac os 版本:10.11.4
xcode 版本: 7.2

1. 安装Homebrew

homebrew是一个包管理器,是用来安装各种包的安装器。安装方法也很简单,直接看主页吧。http://brew.sh。

2. 安装cuda,xcode

这个也不需要我多说了,cude官网https://developer.nvidia.com/cuda-downloads。
xcode直接在app store里面安装。
安装好了之后在bashrc里面将下面两行添加进去,注意版本号的区别,我这里是7.0的版本,现在已经出了7.5的版本了,建议添加之前ls看看有不有这个目录。

export PATH=/Developer/NVIDIA/CUDA-7.0/bin:$PATH
export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA-7.0/lib:$DYLD_LIBRARY_PATH

3. 各种依赖

这个也很简单,在命令行复制下面的语句执行即可。

for x in snappy leveldb gflags glog szip hdf5 lmdb homebrew/science/opencv;
do
    brew uninstall $x;
    brew install --fresh -vd $x;
done
brew uninstall --force protobuf; brew install --with-python --fresh -vd protobuf
brew uninstall boost boost-python; brew install --fresh -vd boost boost-python

4. 下载caffe修改配置

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

5. 安装caffe

mkdir build
cd build
cmake -DCPU_ONLY=ON ..

6. 继续安装

make all -j8

开始遇到一些坑了。
①提示我没有装hdf5,之前我的语句是有安装的,不过既然提醒我没有,那就再装一遍吧。

brew install hdf5

②提示cblas.h没有。安装brew install openblas,然后brew link openblas –force
③接着make all -j8,提示我这个
20160512关于mac安装caffe的记录
vecLib没有,这个的修改下CMakeCache.txt文件,不过改之前大家养成好习惯ls看看有不有这个目录
/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Versions/Current/Headers

//vecLib include directory
vecLib_INCLUDE_DIR:PATH=/System/Library/Frameworks/vecLib.framework/Headers

改为

//vecLib include directory
vecLib_INCLUDE_DIR:PATH=/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Versions/Current/Headers

7 The Last

最后make all -j8 结束,就make runtest,结果如下图,应该没什么问题了。
20160512关于mac安装caffe的记录

8 Pycaffe安装

因为make all是相当于已经执行过了make pycaffe的。但是我这里将

export PYTHONPATH=/Users/ericxu/gitproj/caffe/python:$PYTHONPATH

加入到bashrc里面之后,在python中执行import caffe,报错,错误为segmentation fault :11。
为了解决这个问题,也查询了许多资料。其中比较有意思的如下:
1. http://blog.csdn.net/huangynn/article/details/50898661
2. http://www.jeepshoe.org/989268822.htm
3. https://github.com/BVLC/caffe/issues/591
最后得出一个结论就是,python配置的问题。具体体现在下面两点:
1. caffe目录下面的文件Makefile.config里面有段话:

NOTE: this is required only if you will compile the python interface.

这个就是需要修改的地方,其中PYTHON_LIB和PYTHON_INCLUDE特别关键,需要根据自己机器的python环境修改。一般来说有3种python环境,系统自带,brew安装,Anaconda带的。我找到自己机器的python路径为:/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib和/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7,上述分别为lib和include。
2. 在安装caffe的时候,需要执行cmake ..,然后系统会输出python的环境配置。比如这样:
20160512关于mac安装caffe的记录
很明显有问题,为啥Libraries还是2.7.10,和Interpreter版本根本不匹配,照理说我在Makefile.config修改了应该生效呀。这里先不管了,我直接修改build/CMakeCache.txt吧。
修改的地方截图如下:
20160512关于mac安装caffe的记录
20160512关于mac安装caffe的记录
20160512关于mac安装caffe的记录
修改完毕,然后重新make all -j8,就可以了。
最后make pytest也通过了。

9 复现NeuralStyle

既然安装好了caffe,那么使用caffe,复现下NeuralStyle吧。
这里只放出最后的成果,模型用的googlenet。
20160512关于mac安装caffe的记录
20160512关于mac安装caffe的记录
20160512关于mac安装caffe的记录