2016年1月4日 星期一

筆記:在Mac上安裝Caffe(後續)

接著我打算開始使用python界面的pycaffe。從基本的開始,先將caffe根目錄下的python資料夾加入環境變數PYTHONPATH
export PYTHONPATH="/path/to/caffe-master/python"
記得"不是"
export PYTHONPATH="/path/to/caffe-master/build/python"
也"不是"
export PYTHONPATH="/path/to/caffe-master/python/caffe"

接著進入python的shell(or prompt),並執行
import caffe
過程中出現錯誤訊息
Segmentation fault: 11
並且直接跳出python程式。Mac系統比較容易出現這個問題,根據網路上的資料[1],原因是Mac系統有內建python,但我們是用自己下載的版本(brew python or anaconda python),而在build pycaffe的時候,很容易混入系統內建python,造成連結錯誤。
    打開build資料夾下的CMakeCache.txt,檢查裡面所有有關python的資訊,果然發現兩行
PYTHON_INCLUDE_DIR:PATH=/System/Library/Frameworks/Python.framework/Headers
PYTHON_LIBRARY:FILEPATH=/usr/lib/libpython2.7.dylib
表示python的include資料夾以及函式庫都聯結到系統的了。將其改為
PYTHON_INCLUDE_DIR:PATH=/Users/lindol/anaconda/include/python2.7
PYTHON_LIBRARY:FILEPATH=/Users/lindol/anaconda/lib/libpython2.7.dylib
並且重新編譯
make clean
make all -j4
結束後再次執行
import caffe
錯誤資訊改變:
ImportError: No module named google.protobuf.internal
表示我python的搜尋路徑中並沒有包含這個module。由於protobuf是由brew安裝的,若今天使用的是同樣brew安裝的python的話,這個module是會被找到的,但問題我們使用的是anaconda python,因此這個library的搜尋路徑並沒有被設定好。有關於設定python的搜尋路徑有許多方法,根據網路上的資料,我選擇使用增加usercustomize.py的方式[2][3]。在目錄下新增usercustomize.py:
/path/to/caffe-master/python/usercustomize.py
且內容是讓python找到protobuf的方法
import site; site.addsitedir('/usr/local/Cellar/protobuf/2.6.1/libexec/lib/python2.7/site-packages')
再次執行
import caffe
終於沒有錯誤。

在import caffe時,若出現
No module named skimage.io
可使用
pip install scikit-image
安裝相關模組[4]。

參考:



沒有留言:

張貼留言