Mac OS X EI 10.11安装caffe注意点

os x ei用了很久,一直没能将caffe安装成功,之前一直使用theano和keras,所以没仔细处理每个问题细节。

今天仔细看了所有问题,最终终于安装成功。下面记录几个注意点:

1、homebrew

一定要使用homebrew管理各种插件,否则会非常蛋疼。caffe依赖的library包括snappy leveldb gflags glog szip lmdb opencv hdf5

brew install -vd snappy leveldb gflags glog szip lmdb
brew tap homebrew/science
brew install hdf5 opencv
新版的homebrew都会进行识别,特别注意的是,如果之前有过手动安装,可能会带来冲突,这里大部分冲突homebrew会识别,但可能存在漏网的,尤其是opencv,如果之前安装过3.0,这里用homebrew安装2.4,或者用anaconda安装过2.4等等,都会导致冲突,在编译link的时候,就很可能报类似

ld: can't map file, errno=22 file '/usr/local/cuda'
//上面具体可能是一个opencv的错误,例如
cv:cv::imread(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int) 未定义引用
//又或者是
cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)’未定义的引用

这个问题解决了很久,最终是,将所有其他版本的opencv全部卸载(包括anaconda),使用homebrew安装后重新link

2、openblas

同样使用homebrew安装openblas,但是这里单独提出来,是因为,可能由于cmake版本的问题,openblas的依赖无法获得,这里我是直接在cmakelist里进行了一些修改:

cmakelist的依赖检查在如下内容

# ---[ Dependencies
include(cmake/Dependencies.cmake)
在该文件下找到blas的检查,我是直接在apple里进行了修改,如果是linux系统,可能会同样遇到cmake版本的问题,类似修改即可:

# ---[ BLAS
if(NOT APPLE)
  set(BLAS "Atlas" CACHE STRING "Selected BLAS library")
  set_property(CACHE BLAS PROPERTY STRINGS "Atlas;Open;MKL")

  if(BLAS STREQUAL "Atlas" OR BLAS STREQUAL "atlas")
    find_package(Atlas REQUIRED)
    include_directories(SYSTEM ${Atlas_INCLUDE_DIR})
    list(APPEND Caffe_LINKER_LIBS ${Atlas_LIBRARIES})
  elseif(BLAS STREQUAL "Open" OR BLAS STREQUAL "open")
    find_package(OpenBLAS REQUIRED)
    include_directories(SYSTEM ${OpenBLAS_INCLUDE_DIR})
    list(APPEND Caffe_LINKER_LIBS ${OpenBLAS_LIB})
  elseif(BLAS STREQUAL "MKL" OR BLAS STREQUAL "mkl")
    find_package(MKL REQUIRED)
    include_directories(SYSTEM ${MKL_INCLUDE_DIR})
    list(APPEND Caffe_LINKER_LIBS ${MKL_LIBRARIES})
    add_definitions(-DUSE_MKL)
  endif()
elseif(APPLE)
  SET(BLAS "OpenBLAS")
  SET(OpenBLAS_VERSION "0.2.18")
  SET(OpenBLAS_INCLUDE_DIRS /usr/local/Cellar/openblas/0.2.18_2/include)
  SET(OpenBLAS_LIBRARIES /usr/local/Cellar/openblas/0.2.18_2/lib/libopenblas.dylib)

  include_directories(SYSTEM ${OpenBLAS_INCLUDE_DIRS})
  list(APPEND Caffe_LINKER_LIBS ${OpenBLAS_LIBRARIES})
  #find_package(vecLib REQUIRED)
  #include_directories(SYSTEM ${vecLib_INCLUDE_DIR})
  #list(APPEND Caffe_LINKER_LIBS ${vecLib_LINKER_LIBS})

  #if(VECLIB_FOUND)
    #if(NOT vecLib_INCLUDE_DIR MATCHES "^/System/Library/Frameworks/vecLib.framework.*")
      #add_definitions(-DUSE_ACCELERATE)
    #endif()
  #endif()
endif()

如果使用vecLib,貌似会出很多问题,之前一直坑在这里,可能的原因是10.11版本的问题,没细深究,但网上给出的方案全部不可行,所以选择openblas。

3、 python依赖

在caffe的python目录下(或者build完后的python目录下)有一个requirements.txt记录了python的依赖,直接用pip安装即可

for req in $(cat requirements.txt); do pip install $req; done


其他的问题都是细节的小问题了,如果上面的都没问题安装好的话,cmake之后就可以make all了。

最后一个小问题就是,目标build在build目录下的install文件夹下,bin需要添加环境变量,python目录建议是直接copy到python对于的site-packages下,mac下可能会出现找不到._caffe这个module,原因是python不加载dylib文件,解决方法是将python目录下的_caffe.dylib文件直接修改为_caffe.so文件就可以了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值