最近尝试在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接口也可以正常使用。

遇到的报错:

  1. 如果运行import caffe的时候提示 no module  那么说明你的PYTHONPATH有问题 注意更改
  2. 如果遇到了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:
  1.   Caffe offical installation
  2.     Github:Theory of Building Caffe on OS X
  3.      Github Issue#591

     
 

【记录】在MAC上安装caffe的更多相关文章

  1. 【mac上安装&配置&使用git】

    转自:https://www.jianshu.com/p/7edb6b838a2e 目录 安装git 创建ssh key.配置git 提交本地项目到GitHub 一.安装Git MAC 上安装Git主 ...

  2. mac上安装mongoDb以及简单使用

    年初粗略学习了下node,这好几个月没玩,突然发现已经忘完了,还是简单记录下基本知识,方便再次使用时资料查找. 一.mongoDb安装 在mac上安装了brew的情况下,可以直接执行命令 brew i ...

  3. Mac上安装配置Go语言,其实很简单(一)

    下载Go语言可以去:Go语言中文网 安装及自己选择是否修改GOPATH 下载下来后双击安装就好,使用 go version 查看安装版本: 在Mac上安装完成后,会自动设置一些环境变量,使用 go e ...

  4. 在Mac上安装Istio并使用,有丰富的监控Kiali、Grafana、Jaeger

    我最新最全的文章都在南瓜慢说 www.pkslow.com,文章更新也只在官网,欢迎大家来喝茶~~ 1 简介 之前在文章<服务网格Istio入门-详细记录Kubernetes安装Istio并使用 ...

  5. mac上安装lua

    一.背景 最近在操作redis的时候,有些时候是需要原子操作的,而redis中支持lua脚本,因此为了以后学习lua,此处记录一下 lua的安装. 二.mac上安装lua 其余的系统上安装lua步骤大 ...

  6. 在Mac上安装IntelliJ IDEA

    这篇文章旨在介绍如何在Mac系统上安装IntelliJ IDEA,至于IntelliJ IDEA的介绍和使用方法,大家另行查阅,本篇的文章不再详细阐述. 简短解说,IntelliJ IDEA是可以用来 ...

  7. Mac上安装brew

    用过ubuntu系统的都知道,上面有一个命令apt-get 很方便可以快速的安装很多软件 特别lamp环境 都是一键安装. 在mac上也有类似的命令 brew brew用法可以访问官网地址  http ...

  8. mac 上安装服务,查看服务,重启和关闭

    首先了解下的Mac的 homebrew ,官网:https://brew.sh/index_zh-cn.html 简单的说: Homebrew 能干什么? 答:使用 Homebrew 安装 Apple ...

  9. Mac上安装brew 包管理工具

    Mac 上的包管理工具对于开发者来说是一件非常方便的工具,能够有效的对包进行管理. 所以这篇博客就来简单的讲一下brew 的安装和一些基础命令. brew 全称叫做Homebrew . 1. 首先来说 ...

随机推荐

  1. 开源库CImg 数据格式存储之二(RGB 顺序)

    在上一篇博客中已经初步说明了GDI和CImg数据的存储格式感谢博友 Imageshop 评论说明 CImg的说明文档中已有详细说明(详见上篇博客说明) CImg的数据格式确实是RRRGGGBBB顺序存 ...

  2. 【模拟赛】BYVoid魔兽世界模拟赛 解题报告

    题目名称(点击进入相关题解) 血色先锋军 灵魂分流药剂 地铁重组 埃雷萨拉斯寻宝 源文件名(.c/.cpp/.pas) scarlet soultap subway eldrethalas 输入文件名 ...

  3. 【索引】Volume 0. Getting Started

    AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 0. Getting Started 10055 - Hashmat the Brav ...

  4. Android中的Apk的加固(加壳)原理解析和实现

    一.前言 今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理.现阶段.我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk, ...

  5. linux 屏幕亮度调整命令

    我的Fujitsu S7211的笔记本屏幕显示在Ubuntu 10.04不如在Vista下明亮,一直以为是驱动的问题.后来从老外的博客中,发现了这个亮度其实可以调节. 2种方法: 1. 调节屏幕对比度 ...

  6. [转] tomcat结合nginx使用小结

    相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了 ...

  7. [转] boost库的Singleton的实现以及static成员的初始化问题

    http://www.cnblogs.com/kex1n/archive/2011/04/05/2006194.html effectie c++的条款4中提到: (global对象,定义在names ...

  8. Android NDK 环境搭建 + 测试例程(转)

    懒得废话一大堆概念,关于ADT.NDK的概念要是你不懂,怎么会搜到这里来?所以你只需要根据下面的步骤来,就可以完成NDK环境搭建了. 步骤:(假设你未安装任何相关开发工具,如果已经安装了,就可以跳过) ...

  9. RxJava 教程-1 简介 原理 线程控制 变换

    简介 RxJava 是什么? RxJava 在 GitHub 主页上的自我介绍是 RxJava is a Java VM implementation of ReactiveX: a library ...

  10. Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas

    Android应用程序开发之图片操作(一)——Bitmap,surfaceview,imageview,Canvas   1,Bitmap对象的获取 首先说一下Bitmap,Bitmap是Androi ...