记得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;
dobrew 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,提示我这个
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,结果如下图,应该没什么问题了。
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的环境配置。比如这样:
很明显有问题,为啥Libraries还是2.7.10,和Interpreter版本根本不匹配,照理说我在Makefile.config修改了应该生效呀。这里先不管了,我直接修改build/CMakeCache.txt吧。
修改的地方截图如下:
修改完毕,然后重新make all -j8,就可以了。
最后make pytest也通过了。
9 复现NeuralStyle
既然安装好了caffe,那么使用caffe,复现下NeuralStyle吧。
这里只放出最后的成果,模型用的googlenet。