Mac 任意Python環境安裝 Caffe 的終極教程

原文連接 https://jinkey.ai/post/tech/m...
本文做者 Jinkey(微信公衆號 jinkey-love,官網 https://jinkey.ai
感謝 yubang 老司機指導填坑,大神的博客 http://blog.yubangweb.com/
文章容許非篡改署名轉載,刪除或修改本段版權信息轉載的,視爲侵犯知識產權,咱們保留追求您法律責任的權利,特此聲明!

1 概要

1.1 爲何要寫這篇文章

因爲歷史緣由:
個人電腦有五六個直接安裝在系統的Python的環境,加上一堆 Python 虛擬環境。python

包括 Mac 系統的緣由
自帶的系統環境沒法安裝 pip 及其餘第三方庫,必須經過 homebrew來自行安裝一個python 而這個python路徑和系統的並不同。
包括 Anaconda 的緣由
以前爲了安裝某些科學計算庫方便使用了Anaconda,而且須要同時使用python2和3,因此由多了兩個環境。git

在如此混亂的開發環境下,配置 Caffe 實在艱難,特此教程。github

1.2 爲何不用 docker 運行

由於 Pycharm Community Edition 2017.1 不支持遠程調試,其餘開發環境很差用。你要用 docker 的話能夠不忽略該教程了。web

1.3 用到的環境

由於隨着各類庫更新,不必定有空更新教程致使該教程某些步驟不可用,特此說明一下寫這個文章的時候各個庫的版本。
MacOS 10.12.6
Python 2.7.13
pip 9.0.1
Pycharm Community Edition 2017.1
Homebrew 1.3.1
cmake version 3.8.2
caffe 1.0docker

2 環境準備

2.1 Homebrew

終端運行shell

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2.2 Python

brew install python

下載(get-pip.py)[https://bootstrap.pypa.io/get...],切換到 get-pip.py所在目錄,終端輸入命令bootstrap

python get-pip.py

完成後安裝虛擬環境(也不是必須的,後面配置路徑的時候會說到,這裏順便介紹虛擬環境,避免多個項目形成開發環境很混亂)ruby

sudo pip install virtualenv

2.3 CMake

brew install cmake

2.4 Caffe 依賴

brew install -vd snappy leveldb gflags glog szip lmdb
brew tap homebrew/science
brew install hdf5 opencv
brew install --build-from-source --with-python -vd protobuf
brew install --build-from-source -vd boost boost-python
brew install protobuf boost

2.5 Caffe 的 Python 依賴

這裏我使用的是 Pycharm 新建虛擬環境,新建在 /Users/Yourname/CaffeLearn(創建在哪裏均可以,你本身記住就好)
選擇基礎環境的時候記得選擇經過 Homebrew 安轉的那個,應該是在/usr/local/Cellar/python/2.7.13,參考下圖
Pycharm建立虛擬環境
建立好以後,在控制檯(點Terminal 那個Tab)依賴 caffe 所須要的 Python庫

運行如下命令微信

pip install numpy scikit-image protobuf

3 Caffe 配置詳解

3.1 Makefile.config

從(https://github.com/BVLC/caffe...[https://github.com/BVLC/caffe/releases]下載最新版本的代碼,解壓,從終端進入項目目錄cd caffe-1.0。該教程使用的是 caffe-1.0。app

cp Makefile.config.example Makefile.config

用 Xcode 打開 Makefile.config(不要用 word 或者文本編輯打開)
若是你的 Mac 的顯卡是Intel 的GPU,那麼是無法使用 cuda 加速的,找到並把# CPU_ONLY := 1的註釋去掉,即CPU_ONLY := 1,這樣讓 Caffe 僅在 CPU 下運行。

找到如下片斷

# 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/lib/python2.7/dist-packages/numpy/core/include

PYTHON_INCLUDE修改爲( 步驟2.5叫大家記住的虛擬環境路徑!!! 如今就有用了,必定得分別能找到Python.hnumpy/arrayobject.h兩個文件),後面接着是python2.7仍是python2.7.13仍是python2.7.12取決於大家安裝的版本,教程後面提到的部分也請注意這點

PYTHON_INCLUDE := /Users/Yourname/CaffeLearn/include/python2.7 \
        /Users/Yourname/CaffeLearn/lib/python2.7/site-packages/numpy/core/include

保存,(caffe-1.0目錄)終端運行

cmake .

3.2 CaffeConfig.cmake

cmake完成後,用 Xcode 打開項目目錄下的 CaffeConfig.cmake(不要用 word 或者文本編輯打開),把倒數第三行的set(Caffe_CPU_ONLY OFF)改爲set(Caffe_CPU_ONLY ON),保存並關閉。

3.3 CMakeCache.txt

用 Xcode 打開項目目錄下的 CMakeCache.txt(不要用 word 或者文本編輯打開)

CPU_ONLY:BOOL=OFF

改成

CPU_ONLY:BOOL=ON

此外,找到而後修改PYTHON_EXECUTABLE:FILEPATHPYTHON_INCLUDE_DIR:PATHPYTHON_LIBRARY:FILEPATH,修改以下

//Path to a program.
PYTHON_EXECUTABLE:FILEPATH=/Users/Yourname/CaffeLearn/bin/python2.7

//Path to a file.
PYTHON_INCLUDE_DIR:PATH=Users/Yourname/CaffeLearn/include/python2.7

//Path to a library.( 經過 Homebrew 安裝的 Python 環境)
PYTHON_LIBRARY:FILEPATH=/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib

保存並關閉。

4 Caffe 編譯

4.1 臨時軟鏈接系統和Homebrew 安裝的 Python 路徑

不然在接下來 make 的過程可能會出現錯誤:

'pyconfig.h' cannot be found

在終端運行如下命令創建鏈接

export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:/usr/include/python2.7/"

4.2 開始編譯

在終端依次執行

make all
make install
make runtest

編譯且測試成功。

5 使用

將 Caffe-1.0/python 路徑下的 caffe 文件夾拷貝到虛擬環境下

/Users/Yourname/CaffeLearn/lib/python2.7/site-packages/

在項目中 import caffe 便可。

6 版權聲明

原文連接 https://jinkey.ai/post/tech/m...
本文做者 Jinkey(微信公衆號 jinkey-love,官網 https://jinkey.ai
感謝 yubang 老司機指導填坑,大神的博客 http://blog.yubangweb.com/ 文章容許非篡改署名轉載,刪除或修改本段版權信息轉載的,視爲侵犯知識產權,咱們保留追求您法律責任的權利,特此聲明!!
相關文章
相關標籤/搜索