原文鏈接 https://jinkey.ai/post/tech/mac-ren-yi-pythonhuan-jing-an-zhuang-caffe-de-zhong-ji-jiao-cheng
本文作者 Jinkey(微信公眾號(hào) jinkey-love豪硅,官網(wǎng) https://jinkey.ai)
感謝 yubang 老司機(jī)指導(dǎo)填坑,大神的博客http://blog.yubangweb.com/
文章允許非篡改署名轉(zhuǎn)載,刪除或修改本段版權(quán)信息轉(zhuǎn)載的俄认,視為侵犯知識(shí)產(chǎn)權(quán),我們保留追求您法律責(zé)任的權(quán)利,特此聲明!
1 概要
1.1 為什么要寫(xiě)這篇文章
由于歷史原因:
我的電腦有五六個(gè)直接安裝在系統(tǒng)的Python的環(huán)境抹竹,加上一堆 Python 虛擬環(huán)境。
包括 Mac 系統(tǒng)的原因:
自帶的系統(tǒng)環(huán)境無(wú)法安裝 pip 及其他第三方庫(kù)止潮,必須通過(guò) homebrew來(lái)自行安裝一個(gè)python 而這個(gè)python路徑和系統(tǒng)的并不一樣窃判。
包括 Anaconda 的原因:
之前為了安裝某些科學(xué)計(jì)算庫(kù)方便使用了Anaconda,并且需要同時(shí)使用python2和3喇闸,所以由多了兩個(gè)環(huán)境袄琳。
在如此混亂的開(kāi)發(fā)環(huán)境下询件,配置 Caffe 實(shí)在艱難,特此教程唆樊。
1.2 為什么不用 docker 運(yùn)行
因?yàn)?Pycharm Community Edition 2017.1 不支持遠(yuǎn)程調(diào)試宛琅,其他開(kāi)發(fā)環(huán)境不好用。你要用 docker 的話(huà)可以不忽略該教程了逗旁。
1.3 用到的環(huán)境
因?yàn)殡S著各種庫(kù)更新嘿辟,不一定有空更新教程導(dǎo)致該教程某些步驟不可用,特此說(shuō)明一下寫(xiě)這個(gè)文章的時(shí)候各個(gè)庫(kù)的版本片效。
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.0
2 環(huán)境準(zhǔn)備
2.1 Homebrew
終端運(yùn)行
/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-pip.py]红伦,切換到 get-pip.py所在目錄,終端輸入命令
python get-pip.py
完成后安裝虛擬環(huán)境(也不是必須的淀衣,后面配置路徑的時(shí)候會(huì)說(shuō)到昙读,這里順便介紹虛擬環(huán)境,避免多個(gè)項(xiàng)目造成開(kāi)發(fā)環(huán)境很混亂)
sudo pip install virtualenv
2.3 CMake
brew install cmake
2.4 Caffe 依賴(lài)
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 依賴(lài)
這里我使用的是 Pycharm 新建虛擬環(huán)境膨桥,新建在 /Users/Yourname/CaffeLearn
(建立在哪里都可以蛮浑,你自己記住就好)
選擇基礎(chǔ)環(huán)境的時(shí)候記得選擇通過(guò) Homebrew 安轉(zhuǎn)的那個(gè),應(yīng)該是在/usr/local/Cellar/python/2.7.13
只嚣,參考下圖
創(chuàng)建好之后沮稚,在控制臺(tái)(點(diǎn)Terminal 那個(gè)Tab)依賴(lài) caffe 所需要的 Python庫(kù)
運(yùn)行以下命令
pip install numpy scikit-image protobuf
3 Caffe 配置詳解
3.1 Makefile.config
從(https://github.com/BVLC/caffe/releases)[https://github.com/BVLC/caffe/releases]下載最新版本的代碼,解壓介牙,從終端進(jìn)入項(xiàng)目目錄cd caffe-1.0
壮虫。該教程使用的是 caffe-1.0澳厢。
cp Makefile.config.example Makefile.config
用 Xcode 打開(kāi) Makefile.config(不要用 word 或者文本編輯打開(kāi))
如果你的 Mac 的顯卡是Intel 的GPU环础,那么是沒(méi)法使用 cuda 加速的,找到并把# CPU_ONLY := 1
的注釋去掉剩拢,即CPU_ONLY := 1
线得,這樣讓 Caffe 僅在 CPU 下運(yùn)行。
找到以下片段
# 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叫你們記住的虛擬環(huán)境路徑!!! 現(xiàn)在就有用了徐伐,一定得分別能找到Python.h
和 numpy/arrayobject.h
兩個(gè)文件)贯钩,后面接著是python2.7還是python2.7.13還是python2.7.12取決于你們安裝的版本,教程后面提到的部分也請(qǐng)注意這點(diǎn)办素。
PYTHON_INCLUDE := /Users/Yourname/CaffeLearn/include/python2.7 \
/Users/Yourname/CaffeLearn/lib/python2.7/site-packages/numpy/core/include
保存角雷,(caffe-1.0目錄)終端運(yùn)行
cmake .
3.2 CaffeConfig.cmake
cmake完成后,用 Xcode 打開(kāi)項(xiàng)目目錄下的 CaffeConfig.cmake(不要用 word 或者文本編輯打開(kāi))性穿,把倒數(shù)第三行的set(Caffe_CPU_ONLY OFF)
改成set(Caffe_CPU_ONLY ON)
勺三,保存并關(guān)閉。
3.3 CMakeCache.txt
用 Xcode 打開(kāi)項(xiàng)目目錄下的 CMakeCache.txt(不要用 word 或者文本編輯打開(kāi))
CPU_ONLY:BOOL=OFF
改為
CPU_ONLY:BOOL=ON
此外需曾,找到然后修改PYTHON_EXECUTABLE:FILEPATH
吗坚、PYTHON_INCLUDE_DIR:PATH
祈远、PYTHON_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.( 通過(guò) Homebrew 安裝的 Python 環(huán)境)
PYTHON_LIBRARY:FILEPATH=/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib
保存并關(guān)閉商源。
4 Caffe 編譯
4.1 臨時(shí)軟連接系統(tǒng)和Homebrew 安裝的 Python 路徑
否則在接下來(lái) make 的過(guò)程可能會(huì)出現(xiàn)錯(cuò)誤:
'pyconfig.h' cannot be found
在終端運(yùn)行以下命令建立連接
export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:/usr/include/python2.7/"
4.2 開(kāi)始編譯
在終端依次執(zhí)行
make all
make install
make runtest
編譯且測(cè)試成功车份。
5 使用
將 Caffe-1.0/python 路徑下的 caffe 文件夾拷貝到虛擬環(huán)境下
/Users/Yourname/CaffeLearn/lib/python2.7/site-packages/
在項(xiàng)目中 import caffe 即可。
6 版權(quán)聲明
原文鏈接 https://jinkey.ai/post/tech/mac-ren-yi-pythonhuan-jing-an-zhuang-caffe-de-zhong-ji-jiao-cheng
本文作者 Jinkey(微信公眾號(hào) jinkey-love牡彻,官網(wǎng) https://jinkey.ai)
感謝 yubang 老司機(jī)指導(dǎo)填坑扫沼,大神的博客http://blog.yubangweb.com/
文章允許非篡改署名轉(zhuǎn)載,刪除或修改本段版權(quán)信息轉(zhuǎn)載的庄吼,視為侵犯知識(shí)產(chǎn)權(quán)充甚,我們保留追求您法律責(zé)任的權(quán)利,特此聲明0园!