热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:MacOSX(EICapitan)搭建Caffe环境并配置python接口

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mac OSX (EI Capitan)搭建Caffe环境并配置python接口相关的知识,希望对你有一定的参考价值。 Caffe是一个清晰而高效的深

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Mac OSX (EI Capitan)搭建Caffe环境并配置python接口相关的知识,希望对你有一定的参考价值。




Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的贾扬清。Caffe是纯粹的C++/CUDA架构,支持命令行、Python和MATLAB接口;可以在CPU和GPU直接无缝切换。我在MacbookPro(无NVIDIA显卡)上大费周章地配置了Caffe的环境,并花了许多时间配置其python接口。




一、下载Caffe

github上的下载地址:https://github.com/BVLC/caffe
进入到下载后的路径,并复制
Makefile.config.example 重命名为 Makefile.config (我电脑的用户名是cuiqi,注意修改)

git clone https://github.com/BVLC/caffe.git
cd
/Users/cuiqi/Downloads/caffe-master && cp Makefile.config.example Makefile.config


二、安装相关依赖

   对于需要python接口的情况,需要以下依赖


1. CUDA
由于我的Mac没有NVIDIA的GPU,所以只能使用CPU_ONLY模式,需要在 Makefile.config 中修改
CPU_ONLY := 1
2. BLAS via ATLAS, MKL, or OpenBLAS.
# Basic Linear Algebra Subprograms,基础线性代数程序集

3. Boost >= 1.55
# Deepdream是用Python接Caffe,因此还需要 boost.python 支持

brew install boost --with-python
brew install boost-python


4. OpenCV >= 2.4 including 3.0

5. protobuf, glog, gflags

brew install protobuf
brew install glog
brew install gflags

6. IO libraries hdf5, leveldb, snappy, lmdb

brew install leveldb
brew install lmdb

brew tap homebrew/science
brew install homebrew/science/hdf5

# python driver for hdf5

pip install h5py

7. numpy for python

brew install numpy


三、修改Makefile.config中相应的路径

   如果要使用Anaconda的python环境可以在Makefile.config中取消相应的注释,我试过这样做,可是在CMAKE的时候并不奏效:


Python:
Interpreter : /usr/bin/python2.7 (ver. 2.7.10)
Libraries : /usr/lib/libpython2.7.dylib (ver 2.7.10)
NumPy : /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/include (ver 1.8.0rc1)

 所以我放弃了使用Anaconda,改使用系统自带的python。


PYTHON_INCLUDE := /usr/include/python2.7  

  由于我使用了Homebrew安装了numpy,所以我在makefile.config中修改相应的numpy路径


PYTHON_INCLUDE := /usr/include/python2.7 /usr/local/Cellar/numpy/1.11.2/lib/python2.7/site-packages/numpy/core/include/numpy/core/include

  我的Makefile.config文件:


技术分享技术分享

## Refer to http://caffe.berkeleyvision.org/installation.html
# Contributions simplifying and improving our build system are welcome!
# cuDNN acceleration switch (uncomment to build with cuDNN).
# USE_CUDNN := 1
# CPU-only switch (uncomment to build without GPU support).
CPU_ONLY := 1
# uncomment to disable IO dependencies and corresponding data layers
# USE_OPENCV := 0
# USE_LEVELDB := 0
# USE_LMDB := 0
# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
# You should not set this flag if you will be reading LMDBs with any
# possibility of simultaneous read and write
# ALLOW_LMDB_NOLOCK := 1
# Uncomment if you‘re using OpenCV 3
# OPENCV_VERSION := 3
# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
# CUSTOM_CXX := g++
# CUDA directory contains bin/ and lib/ directories that we need.
CUDA_DIR := /usr/local/cuda
# On Ubuntu 14.04, if cuda tools are installed via
# "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
# CUDA_DIR := /usr
# CUDA architecture setting: going with all of them.
# For CUDA
< 6.0, comment the *_50 lines for compatibility.
CUDA_ARCH :
= -gencode arch=compute_20,code=sm_20 -gencode arch=compute_20,code=sm_21 -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_50,code=compute_50
# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS :
= atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE :
= /path/to/your/blas
# BLAS_LIB := /path/to/your/blas
# Homebrew puts openblas in a directory that is not on the standard search path
# BLAS_INCLUDE :
= $(shell brew --prefix openblas)/include
# BLAS_LIB :
= $(shell brew --prefix openblas)/lib
# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
# MATLAB_DIR :
= /usr/local
# MATLAB_DIR := /Applications/MATLAB_R2012b.app
# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
PYTHON_INCLUDE :
= /usr/include/python2.7 /usr/local/Cellar/numpy/1.11.2/lib/python2.7/site-packages/numpy/core/include/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it‘s in root.
# ANACONDA_HOME :
= $(HOME)/anaconda
# PYTHON_INCLUDE := $(ANACONDA_HOME)/include # $(ANACONDA_HOME)/include/python2.7 # $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include
# Uncomment to use Python 3 (default is Python 2)
# PYTHON_LIBRARIES :
= boost_python3 python3.5m
# PYTHON_INCLUDE :
= /usr/include/python3.5m # /usr/lib/python3.5/dist-packages/numpy/core/include
# We need to be able to find libpythonX.X.so or .dylib.
PYTHON_LIB :
= /usr/lib
# PYTHON_LIB := $(ANACONDA_HOME)/lib
# Homebrew installs numpy in a non standard path (keg only)
# PYTHON_INCLUDE +
= $(dir $(shell python -c ‘import numpy.core; print(numpy.core.__file__)‘))/include
# PYTHON_LIB +
= $(shell brew --prefix numpy)/lib
# Uncomment to support layers written in Python (will link against Python libs)
# WITH_PYTHON_LAYER :
= 1
# Whatever else you find you need goes here.
INCLUDE_DIRS :
= $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS :
= $(PYTHON_LIB) /usr/local/lib /usr/lib
# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
# INCLUDE_DIRS +
= $(shell brew --prefix)/include
# LIBRARY_DIRS +
= $(shell brew --prefix)/lib
# Uncomment to use `pkg-config` to specify OpenCV library paths.
# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
# USE_PKG_CONFIG :
= 1
# N.B. both build and distribute dirs are cleared on `make clean`
BUILD_DIR :
= build
DISTRIBUTE_DIR := distribute
# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
# DEBUG :
= 1
# The ID of the GPU that ‘make runtest‘ will use to run unit tests.
TEST_GPUID :
= 0
# enable pretty build (comment to see full commands)
Q ?
= @


View Code

四、编译

  使用cmake工具,将cmake的sourcecode设为caffe的路径,在caffe目录下建立build文件夹,并将cmake的build路径设为该build的路径,configure,generate。

  此时打开终端工具进入build目录下,make。


make all
make test
make runtest
make pycaffe

  如果没有出现错误,并全部通过后,此时make告一段落,但是并不能确定可以在python中import。

  在终端上:


vi etc/profile

  或


sudo vi /etc/profile

  进入修改系统的环境变量,将 caffe/python/添加到Python系统路径:

export PYTHOnPATH=path to caffe/python:$PYTHONPATH
例如:

export PYTHOnPATH=/Users/cuiqi/Downloads/caffe-master/python:$PYTHONPATH

  终端输入python,确认这个python环境是刚刚在makefile.config中设定的那个,可以 which python 确认。由于我没有使用Anaconda,我的是

  /usr/local/bin/python ,确认为刚刚在makefile.config中设定的路径。

  >>> import caffe

  # 可能的错误

  ImportError: No module named skimage.io

  # 解决

   pip install scikit-image

 

参考:https://github.com/rainyear/lolita/issues/10?utm_source=tuicool&utm_medium=referral

 

  

 

 

 

 

 




 










推荐阅读
  • Window10+anaconda+python3.5.4+ tensorflow1.5+ keras(GPU版本)安装教程 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • ProtocolBuffers,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方 ... [详细]
  • 本文介绍了Python对Excel文件的读取方法,包括模块的安装和使用。通过安装xlrd、xlwt、xlutils、pyExcelerator等模块,可以实现对Excel文件的读取和处理。具体的读取方法包括打开excel文件、抓取所有sheet的名称、定位到指定的表单等。本文提供了两种定位表单的方式,并给出了相应的代码示例。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 深度学习中的Vision Transformer (ViT)详解
    本文详细介绍了深度学习中的Vision Transformer (ViT)方法。首先介绍了相关工作和ViT的基本原理,包括图像块嵌入、可学习的嵌入、位置嵌入和Transformer编码器等。接着讨论了ViT的张量维度变化、归纳偏置与混合架构、微调及更高分辨率等方面。最后给出了实验结果和相关代码的链接。本文的研究表明,对于CV任务,直接应用纯Transformer架构于图像块序列是可行的,无需依赖于卷积网络。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • OCR:用字符识别方法将形状翻译成计算机文字的过程Matlab:商业数学软件;CUDA:CUDA™是一种由NVIDIA推 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • mac os high sierra无法安装phalcon的问题
    phalcon官方安装地址:https:github.comphalconcphalcon参考官方的做法是:brewinstallphp71-phalcon但是会出现这样的问题:b ... [详细]
  • Mac上传代码至GitHub上操作步骤1、下载git(查看是否已经安装了git,未安装则安装git)通过brewinstallgit命令安装git未安装brew请运行以下命令安装b ... [详细]
  • brew结合iTerm2花式玩转MacOS软件管理的终端指令
    brew结合iTerm2花式玩转MacOS软件管理的终端指令-1.背景需求  刚拿到新的Mac电脑工作时,linux上很多常用指令是没有的安装的,如wget,git,telnet ... [详细]
author-avatar
月逝彼山
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有