设为首页 收藏本站
查看: 1037|回复: 0

[经验分享] 【记录】在MAC上安装caffe

[复制链接]

尚未签到

发表于 2017-7-5 14:29:18 | 显示全部楼层 |阅读模式
  ---恢复内容开始---
  最近尝试在MAC(OS X 10.11 El Capitan)上安装Caffe 以及Python接口遇到了一些问题但是官方安装教程上并没有提出这些问题的解决办法搜索了很久(主要在于Python接口上) 终于找到了解决办法
  其实Caffe的安装分两步:安装依赖+编译源码
  首先是安装依赖:
  【必要依赖】:
  官方推荐用homebrew来安装:

brew install -vd snappy leveldb gflags glog szip lmdb
# 添加science源来安装 OpenCV 和 hdf5
brew tap homebrew/science
brew install hdf5 opencv

或者使用Anaconda Python这个工具包含了大量的Python工具包来解决以上依赖问题而且安装新的软件包也特别容易。如果用Anaconda Python的话HDF5已经包含其中了 可以略过。并且opencv这里有两行需要改一下:

brew edit opencv

然后找到跟下面两行类似的改成如下(改变的他Python路径用Anaconda的Python而不是系统自带的)

  -DPYTHON_LIBRARY=#{py_prefix}/lib/libpython2.7.dylib
-DPYTHON_INCLUDE_DIR=#{py_prefix}/include/python2.7

然后是BOOST和BOOST-Python 安装这个主要是为了之后Python接口的编译

# with Python pycaffe needs dependencies built from source
brew install --build-from-source --with-python -vd protobuf
brew install --build-from-source -vd boost boost-python
  BLAS部分:网上有人说系统自带的不稳定推荐换成MKL但是我没有换也是可以用的。
  Python接口:从Github上把Caffe下载下来解压后用命令行进入其中的Python文件夹执行以下命令来安装Python的依赖:

for req in $(cat requirements.txt); do pip install $req; done
  用MAKE指令来编译:
  在编译之前我们需要修改make.config的几个地方
  首先将make.config.example的.example后缀删除
  然后将CPU_ONLY := 1 的注释去掉(删除#)因为我的电脑是AMD的显卡没法使用CUDA所以无法进行GPU加速
  然后就是后面的Python路径,用Anaconda Python的话将下面的注释去掉:

ANACONDA_HOME := $(HOME)/anaconda
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
  这个地方一定要注意路径正确 按照自己机器的配置来。
  接下来就可以MAKE了

make all
make test
make runtest
make pycaffe
  如果没有报错并且运行完runtest之后看到了一路绿色pass那么恭喜你安装完了这个时候他的CPP接口是可以用的但是Python不一定
  将caffe/python路径放入你的PYTHONPATH中注意/path/to/caffe/python是你caffe的地址,注意更改。

export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
  在命令行中进入Python尝试import caffe 如果不报错那么恭喜你Python接口也可以正常使用。
  遇到的报错:


  • 如果运行import caffe的时候提示 no module  那么说明你的PYTHONPATH有问题 注意更改
  • 如果遇到了segmentation fault 那很有可能是你系统里也有多个版本的Python并且编译和运行的时候不是一个版本(通常是boost-Python链接的Python是系统自带Python而不是anaconda)。这个时候可以在编译的时候强制他们都用同一个Python。用otool -L指令来检查:

$ brew info boost
...
$ otool -L /usr/local/Cellar/boost/1.57.0/lib/libboost_system.dylib # this is one of the libs that caffe links against
...
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0)
...
$ brew info boost-python
...
$ otool -L /usr/local/Cellar/boost-python/1.57.0/lib/libboost_python.dylib
...
/usr/local/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0)
  注意其中的boost和boost-python的版本和路径需要更改。
  我在Github上发现还有另一种解决方法,首先查看_caffe.so:

    otool -L python/caffe/_caffe.so
       如果他没有链接到你的anaconda Python上那么用下面的命令强制他链接上去就不会有segmentation fault的错误啦:

    install_name_tool -change "libpython2.7.dylib" "$HOME/anaconda/lib/libpython2.7.dylib" python/caffe/_caffe.so
Reference:

  •   Caffe offical installation
  •      Github:Theory of Building Caffe on OS X
  •      Github Issue#591



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-390910-1-1.html 上篇帖子: MAC的睡眠模式介绍 下篇帖子: C# 获取MAC地址
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表