原文連結 jinkey.ai/post/tech/m…
本文作者 Jinkey(微信公眾號 jinkey-love,官網 jinkey.ai )
感謝 yubang 老司機指導填坑,大神的部落格blog.yubangweb.com/
文章允許非篡改署名轉載,刪除或修改本段版權資訊轉載的,視為侵犯智慧財產權,我們保留追求您法律責任的權利,特此宣告!
1.1 為什麼要寫這篇文章
由於歷史原因:
我的電腦有五六個直接安裝在系統的Python的環境,加上一堆 Python 虛擬環境。
包括 Mac 系統的原因:
自帶的系統環境無法安裝 pip 及其他第三方庫,必須通過 homebrew來自行安裝一個python 而這個python路徑和系統的並不一樣。
包括 Anaconda 的原因:
之前為了安裝某些科學計算庫方便使用了Anaconda,並且需要同時使用python2和3,所以由多了兩個環境。
在如此混亂的開發環境下,配置 Caffe 實在艱難,特此教程。
1.2 為什麼不用 docker 執行
因為 Pycharm Community Edition 2017.1 不支援遠端除錯,其他開發環境不好用。你要用 docker 的話可以不忽略該教程了。
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.0
2 環境準備
2.1 Homebrew
終端執行
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"複製程式碼
2.2 Python
brew install python複製程式碼
下載(get-pip.py)[bootstrap.pypa.io/get-pip.py]… get-pip.py所在目錄,終端輸入命令
python get-pip.py複製程式碼
完成後安裝虛擬環境(也不是必須的,後面配置路徑的時候會說到,這裡順便介紹虛擬環境,避免多個專案造成開發環境很混亂)
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
,參考下圖
建立好之後,在控制檯(點Terminal 那個Tab)依賴 caffe 所需要的 Python庫
執行以下命令
pip install numpy scikit-image protobuf複製程式碼
3 Caffe 配置詳解
3.1 Makefile.config
從(github.com/BVLC/caffe/… caffe-1.0`。該教程使用的是 caffe-1.0。
cp Makefile.config.example Makefile.config複製程式碼
用 Xcode 開啟 Makefile.config(不要用 word 或者文字編輯開啟)
如果你的 Mac 的顯示卡是Intel 的GPU,那麼是沒法使用 cuda 加速的,找到並把# CPU_ONLY := 1
的註釋去掉,即CPU_ONLY := 1
,這樣讓 Caffe 僅在 CPU 下執行。
(微信公眾號 jinkey-love)
找到以下片段
# 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.h
和 numpy/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)
,儲存並關閉。
(微信公眾號 jinkey-love)
3.3 CMakeCache.txt
用 Xcode 開啟專案目錄下的 CMakeCache.txt(不要用 word 或者文字編輯開啟)
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.( 通過 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複製程式碼
(微信公眾號 jinkey-love)
編譯且測試成功。
5 使用
將 Caffe-1.0/python 路徑下的 caffe 資料夾拷貝到虛擬環境下
/Users/Yourname/CaffeLearn/lib/python2.7/site-packages/
在專案中 import caffe 即可。
6 版權宣告
原文連結 jinkey.ai/post/tech/m…
本文作者 Jinkey(微信公眾號 jinkey-love,官網 jinkey.ai)
感謝 yubang 老司機指導填坑,大神的部落格blog.yubangweb.com/
文章允許非篡改署名轉載,刪除或修改本段版權資訊轉載的,視為侵犯智慧財產權,我們保留追求您法律責任的權利,特此宣告!!