MacOS 10.14 Mojave 安装caffe记录
做毕设需要用到caffe,尝试在自己电脑上安装,过程中发现安装caffe还是有不少坑的,特此记录。主要参考https://zhuanlan.zhihu.com/p/46930024
安装依赖
首先需要更新xcode(暂时是10.12)。
假设你已经在mac上安装了homebrew,根据caffe的官方指南,我们需要安装一些依赖:
1 | brew install -vd snappy leveldb gflags glog szip lmdb |
跟官方指南不一样的是homebrew已经取消了science这个tap,所以使用如下的命令来安装hdf5 和 opencv:
1 | brew install hdf5 opencv |
这一步,有可能需要更新gcc,其中提示需要CLT:The bottle needs the Xcode CLT to be installed.
首先确认xcode中clt已经安装:
然后运行brew config
,查看brew中是否有clt的配置。如果显示CLT: N/A
,那么运行xcode-select —install
。设置好CLT后,继续安装依赖。
因为新版本的boost, boost-python和旧版本有兼容性问题[1], 我们使用homebrew 所提供的boost@1.59版本 来代替最新版本的boost:
1 | brew install boost@1.59 boost-python@1.59 |
这一步应该没什么问题
至于protobuf,实测在3.6.1版本上也不能正确编译,而homebrew带其他版本太旧,这里我们从source编译protobuf的3.5.1版本:
1 | cd ~/Downloads |
这里,我按照它的做法安装protobuf,然而在import caffe时会出现ImportError: No module named google.protobuf.internal
最后还是选择使用anaconda管理:conda install protobuf
用的是3.6.1版本,并没有出现错误。
之前的编译没用opencv,没法计算图片均值。于是重新编译了一次。事实证明protobuf3.6.1果然没法编译。
设置python版本
依赖安装完了,现在我们对所需要用到的python版本进行设置,因为据说caffe在python3的表现并不是很好很容易出bug,这里我们使用的是anaconda的虚拟环境来构建一个python2.7的版本,并且安装相关依赖:
1 | conda create --name py27 python=2.7 |
这一步,因为我用的已经是anaconda2,应该可以略去。保险起见还是创建了这样一个环境。重新编译证明,这步的确可略去</span>
配置caffe
现在开始装caffe。
1 | cd ~ |
其次需要在Makefile.config里做一些调整:
1 | 1. 取消CPU_ONLY前面的注释 |
这一步,注意修改ANACONDA_HOME
为自己的anaconda路径。如果使用opencv,使用brew安装后修改INCLUDE_DIRS
以及LIBRARY_DIRS
下面贴一个我的配置:
1 | ## Refer to http://caffe.berkeleyvision.org/installation.html |
编译
一切就绪,就可以编译了:
1 | cd ~/caffe |
这一步,有可能以下问题:
1.import caffe Segmentation fault: 11
原因是caffe用的python和系统默认的不符,建议使用ananconda的python,然后在caffe的Makefile.config
中设置python为anaconda的python。具体使用哪一个python可以使用which python
查看。
可以看到在两个环境下默认的python是不同的。
2.ImportError: No module named google.protobuf.internal
在py27环境下,使用anaconda安装protobuf。如果是手动编译的protobuf,需要进到protobuf目录下python文件夹,运行python setup.py install
3.ImportError: No module named caffe
python的搜索路径中没有caffe。在~/.bash_profile中添加export PYTHONPATH=~/caffe/python:$PYTHONPATH
成功
如果import caffe没有问题,那么caffe就安装成功了。