Mac OS X10.10 下安装caffe

Mac OS X10.10 下安装caffe

[email protected]

http://blog.csdn.net/surgewong

在Linux学习 Caffe【1】有一段时间了,也渐渐地对 Caffe 的框架有了一点认识。在 Linux 下学习 Caffe 的人很多,网上的参考资料也想对比较多。安装配置教程很多,出了问题都相对比较好解决。前两天老大弄了一台Mac 笔记本过来,叫我帮他在
Mac上安装 Caffe。穷屌丝以前没有玩过 Mac 笔记本,冲着对 Mac 的这份好奇,开始痛苦的安装之旅。

一、Mac下软件安装方式

习惯了Linux下的 sudo apt-get install XXXX 的软件安装方式,对 Mac下 brew install XXXX 很容易上手。不过之前对 Mac 几乎没有任何基础,要了解其中的一些特定术语,比如:formula,framework还是有些困难的。多用几次,就开始慢慢对其有些了解。brew 的方式安装是通过一个叫着 homebrew【2】
软件包管理工具来实现的。围绕 brew 的安装的常用命令有:

brew install XXXX          --> 安装软件包或者相应的库

brew uninstall XXXX         --> 卸载软件包或者相应的库

brew update              --> 更新 Homebrew自己

brew upgrade             -->  升级所有可以升级的软件(通过brew方式安装的)

brew list               -->  列出所有通过 brew 安装的软件

brew doctor              --> 诊断是否安装成功

brew edit XXXX            --> 编辑 XXXX (Formula)相应的软件配安装置文件

brew help               --> 列出常用命令

二、 安装 Caffe 必要的依赖

参考官方教程【3】,Caffe需要安装的内容有:

CUDA                     最好是 6.5 版本

BLAS                     可以通过ATLAS,MKL,OpenBLAS 提供

Opencv                   版本大于或等于 2.4

Boost                    版本大约或等于 1.5, 如有必要还需要提供 python 版本

glog, gflags, protobuf, leveldb, snappy, hdf5, lmdb

下面是非必需的:

Python                     Python 2.7  numpy 版本大于或等于1.7

Matlab                     提供 mex 编译器

三、CUDA 及 BLAS 的安装

1.
CUDA 的安装: Mac 下面 CUDA 的安装相比 Linux 要简单很多,直接下载【4】,然后直接双击,按照提示直接安装就可以,其他的相关设置可以参考文档【5】。

主要是需要设置 cuda 相关的路径,可以在 /etc/profile 中设置下面环境变量:

export PATH=/Developer/NVIDIA/CUDA-6.5/bin:$PATH

export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA-6.5/lib:$DYLD_LIBRARY_PATH

2.
Atlas 的安装: Mac 系统下面的 vecLib 框架(Accelerate Frame)本身就集成了 Atlas的实现,在编译Caffe的时候只需要指定相应头文件所在的目录就可以。

3.
OpenBlas 的安装: 使用 brew 安装 就可以。(直接使用brew安装可能有些问题,后面会介绍)

brew install  homebrew/science/openblas          ---> 直接安装

brew install --build-from-source homebrew/science/openblas     --> 通过编译源码安装

4.
MKL 的安装: Intel MKL 是一个商业化针对CPU优化的一个库,可以使用学生免费版,可以到intel官网【6】注册一个帐号,下载相应的mac版本的 MKL。

四、 OpenCV, glog, gflags, protobuf, leveldb, snappy, hdf5, lmdb 的安装

从Mac 10.9 开始 系统默认的C/C++ 编译器是 clang/clang++ 而不是 gcc/g++,相应使用的C++ 标准库是 libc++ (主要是针对 C++ X11)。在Caffe中很多依赖库主要是基于libstdc++ 库,所以使用默认编译选项时,很容易出现undefined
symbols for architecture x86_64
的错误。要解决这个问题,就不必须,保证其相应的依赖本身就是基于 libstdc++ 来编译安装的。

首先可以通过 brew 的方式来安装上述依赖,不过需要选择通过源码安装,并且在编译时选择使用 libstdc++库进行编译。使用这种方式可以通过编辑 相应的 homebrew formula。前面提到的 openblas 最好也通过该方式进行编译安装。对于每个需要安装的Homebrew formula:

    boost snappy leveldb protobuf gflags glog szip lmdb homebrew/science/opencv

使用 brew edit FORMULA(例如 brew edit boost) 加入相应的环境 ENV定义:

  def install
      # ADD THE FOLLOWING:
      ENV.append "CXXFLAGS", "-stdlib=libstdc++"
      ENV.append "CFLAGS", "-stdlib=libstdc++"
      ENV.append "LDFLAGS", "-stdlib=libstdc++ -lstdc++"
      # The following is necessary because libtool likes to strip LDFLAGS:
      ENV["CXX"] = "/usr/bin/clang++ -stdlib=libstdc++"

对于每个 formula 按顺序 先卸载然后重新通过源码编译安装:

for x in snappy leveldb gflags glog szip lmdb homebrew/science/opencv; do brew uninstall $x; brew install --build-from-source --fresh -vd $x; done
brew uninstall protobuf; brew install --build-from-source --with-python --fresh -vd protobuf
brew install --build-from-source --fresh -vd boost boost-python

注: 即便是上面编译安装成功,在编译caffe过程中,可能会提示缺失 tr1/truple 头文件,这还需要安装hdf5 依赖,通过上述类似方式安装即可。

五、OpenCV 本地源码编译,以及 gflags ,glog 本地源码编译

1.
OpenCV的安装:上面提到的 brew 的安装方式可能会安装失败。笔者在安装 opencv 的遇到了不少麻烦。

a. 直接使用 brew install homebrew/science/opencv 能够成功安装 opencv,但是该 opencv 没有编译 有关 cuda 库,其本身是通过默认的 libc++ 库编译的,因此在使用编译 Caffe 的时候就会出现上述讲的 undefined symbols
for architecture x86_64 错误。这种方式是不可取的。

b. 笔者在使用 brew install --build-from-source --fresh -vd homebrew/science/opencv 的方式安装,系统安装的是2.4.10.1 版本,该版本,有个与cuda兼容性问题的 bug,无法正常编译。(注:对Mac不是很熟悉,没有尝试方法修复
该问题)笔者在Linux下使用的版本是 2.4.9,遇到过类似的 bug【7】。因此放弃使用该方法,转而使用 2.4.9 源码直接编译。

c. 在使用源码编译的时候,最大的就是如何在 opencv 编译的时候 让其选择 libstdc++ 而不是 libc++。OpenCV 是通过 cmake 来生成 makefile的,要添加 相应的设置就需要修改相应的 cmake 配置。由于对 cmake 的语法不是很熟悉,只能大概猜测。笔者对文件cmake/OpenCVDetectCUDA.cmake
的第 151行处 添加了

set(CUDA_NVCC_FLAGS  ${CUDA_NVCC_FLAGS}  "-Xcompiler -stdlib=libstdc++;
-Xlinker -stdlib=libstdc++")

然后直接按照正常的编译步骤即可,不过编译时间比较长。

2.  gflags的安装:笔者使用 第四步的 brew 的方式 安装并没有使得 gflags 成功使用 libstdc++库进行编译(编译caffe报错)。同样的对 gflags的 cmake 相关文件 添加 相应的配置。笔者在 cmake/CMakeCXXInformation.cmake
中 第 209 行出添加

set(CMAKE_CXX_FLAGS "-stdlib=libstdc++" ${CMAKE_CXX_FLAGS})

然后直接按照正常的编译步骤编译安装。

3.  glog的安装:glog对 gflags 有依赖,所以安装 glog之前 必须安装 gflags,在编译 glog 时,部分文件(*unittest.cc)编译错误,其主要问题是名字空间的问题(没有深究其原因,这里只给出解决方案)。只需要在相应的文件中加入

using namespace gflags;

六、编译 Caffe

在编译 Caffe 时,需要设置好相关依赖的路径以及库依赖,然后等待 make 成功。至此好好享受在 Mac 下使用 Caffe 编程吧!

参考资料:

【1】 Caffe主页

【2】 Homebrew 主页

【3】 Caffe 安装官网

【4】 CUDA 官网

【5】 CUDA 在线文档

【6】 Intel 官网 MKL

【7】 一个OpenCV 2.4.9 与 CUDA 兼容性的 Bug

时间: 2024-12-24 05:14:58

Mac OS X10.10 下安装caffe的相关文章

MAC OS X10.10下Caffe无脑安装(CPU ONLY)

最近心血来潮,想趁着实习之前一周空闲的时间玩玩各种 Deep Learning 的热门工具(Caffe, Theano 之类),结果却深陷安装和配置环境的痛苦当中...安装Caffe花费了我两天时间,在各种文档教程中绕了不少圈子.据不完全统计,对我比较有帮助的一些参考资料如下: Caffe官方文档:http://caffe.berkeleyvision.org/install_osx.html 最初照着弄的资料:http://blog.csdn.net/surgewong/article/det

Swift之 vm10虚拟机安装Mac OS X10.10教程

VM10装Mac OS X 10.9.3及更新到Mac OS X 10.10,让你的windows也能玩Swift . 近期WWDC放出终极大招--新的编程语言Swift(雨燕),导致一大波程序猿的围观和跃跃欲试. 当然了,工欲善其事,必先利其器,所以对于那些没有Mac又想要尝鲜的小伙伴肯定非常为难.可是,请放心,本文教你怎样在Windows下也能体验Mac的滋味.当然咯,最基本的还是体验新的语言Swift.好了话不多说,直接開始,贴图比較多,耐心等待图的刷出. 基本步骤 2.1. 虚拟机的安装

vm10虚拟机安装Mac OS X10.10教程

VM10装Mac OS X 10.9.3及更新到Mac OS X 10.10,让你的windows也能玩Swift .  最近WWDC放出终极大招——新的编程语言Swift(雨燕),导致一大波程序员的围观和跃跃欲试.当然了,工欲善其事,必先利其器,所以对于那些没有Mac又想要尝鲜的小伙伴肯定很为难.但是,请放心,本文教你如何在Windows下也能体验Mac的滋味,当然咯,最主要的还是体验新的语言Swift.好了话不多说,直接开始,贴图比较多,耐心等待图的刷出. 所需软件vm10虚拟机安装苹果Ma

vm10虚拟机安装Mac OS X10.10教程[转]

所需软件vm10虚拟机安装苹果Mac10.9系统(带工具)http://www.helloswift.com.cn/swiftdown/soft/2014/0608/3095.html 基本步骤 2.1. 虚拟机的安装 2.2. 插件安装 2.3. Mac OS X 10.9.3的安装 2.4. VMTool以及Darwin6.0.3的安装 2.5. 设置共享文件夹 2.6 . 升级Mac OS X Yosemite 其他的一些tips 后续 一.所需软件 VMware Workstation

Mac OS X10.12.4安装的Python2.7升级Python3.5步骤详解

Mac OS X10.12默认带了Python2.7,不过现在Python3.5出来了,如果想使用最新版本,赶紧升级下吧. 基本步骤如下 第1步:官网下载Python3.3 这里面有windows和mac os x下的安装程序,下载那个64位的安装程序 第2步:安装下载的img文件,安装完后的目录如下: 复制代码代码如下: /Library/Frameworks/Python.framework/Versions/3.5 第3步:移动python的安装目录 原来的安装目录见第2步,不过所有的py

解决 Mac OS X 10.11 安装 sip 没有权限的问题

在搭建 PYQT 的过程中我遇上了一个非常恶心的问题,在安装 sip 的时候编译源码之后的安装过程中一直提示我:Operation not permitted ,我甚至重装了系统也无济于事,最终通过查资料解决了问题. 安装 sip 下载 sip 源码包解压之后进入它的目录下: python configure.py sudo make sudo make install 这时出现了一个很恶心的报错提示: cp -f sip /System/Library/Frameworks/Python.fr

MAC OS X10.10上Android开发环境搭建

由于Google官方已经不提供Adt-Bundle下载了,主推AndroidStudio.可以从这个链接下载http://www.androiddevtools.cn.上面不光有adt-bundle,还有最新的AndroidStudio.由于对OS X还不是很熟悉,本次采用adt-bundle安装. 一,下载JDK 下载方式有两种,其一是从链接http://www.androiddevtools.cn处下载,选择Mac OSX的1.8u5版本即可.截图如下: 其二是从JDK的官网下载,文件名为j

mac os x10.10 安装thrift

http://thrift.apache.org/docs/install/ 一:安装最新版(自动安装) 最简单的是用homebrew进行安装 安装homebrew 在终端输入ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" 安装thrift   brew install thrift 用brew安装的thrift版本是0.9的,but,我们项目中得thrift版本是0.8的,所以果断

mac os x10.8下如何使用git与github

1.准备工作: 下载安装git客户端 http://code.google.com/p/git-osx-installer/downloads/list?can=3(安装了git客户端,命令行中才有git命令) 注册github账号 https://github.com/ -->Pricing and Signup -->Create a free account 2.创建ssh:(创建ssh目的是将mac与github服务器建立互信) 在local打开terminal: $cd -/.ssh