關於前面安裝各種依賴的步驟,以及caffe的git clone都不多說,基本跟網上很多相同,只是后續的步驟有些比較常見的問題,特此總結。
常見問題:
(1)在python環境下,import caffe,顯示No Module named caffe.
原因:沒有把caffe里面的python接口庫添加到python的module搜索路徑。可以進入python,import sys,sys.path,查看當前的module搜索路徑。
解決辦法:export PYTHONPATH=$PYTHONPATH:your/caffe/path/about/python
(1.1)有時候也會遇到segment fault 11,這個之前網上有人說過解決辦法有點復雜,這個問題其實也是caffe編譯的python版本,和shell里用的版本不一致導致。最好的解決辦法就是,只留一個版本的python,不要裝anaconda和brew的版本,然后重新編譯caffe,詳見(2)。
(2) 上述都配置好了,import caffe也沒問題,但是后續的各種深層調用會出錯,比如一些基本庫,collections,site...
原因:主要的可能是,caffe編譯時候,依賴的python版本,和你現在使用的版本不一致,導致雖然都是python,但是版本不同。
解決辦法:盡量保持電腦中只有一個版本的python。mac系統自帶的就不錯,anaconda或者homebrew安裝的,除非特別必須,不建議裝很多。
然后,shell中查看當前用的python,which python,最好將當前python的安裝路徑也添加到/etc/bashrc中,記得source一下,mac自帶的python路徑通常為/System/Library/Frameworks/Python.framework/Versions/2.7/bin。
接着,進入caffe文件夾,rm -rf build;mkdir build;make clean;make -j4;make pycaffe;
還有個好用的命令可以查看某個庫的編譯依賴項及版本:otools -L _caffe.so(這個是caffe的python接口編譯后的靜態庫)
最后看到沒有錯誤提示,說明成功。
(3)有時會出現,找不到numpy中的一個頭文件
原因:caffe中MakeFile.config中的numpy路徑不對
解決:進入caffe的Makefile.config文件,仔細查看有關PYTHON_INCLUDE,PYTHON_LIB的路徑部分,都修改對,該注釋的注釋掉。然后重新編譯如(2)所說。
(4)關於跑別人demo的經驗
在caffe配的沒有問題的情況下,主要是solver中用到的訓練網絡或者測試網路的data source path,一定要仔細改對。用python接口的時候,常常會寫一個data provider的py文件,這個文件會配合train.prototxt(或者val.prototxt)中的網絡,說明使用哪個provider為該網絡提供數據。通常都是先把圖片的路徑寫到文本中,再根據這個文本去讀圖片,這個文本通常是train.txt或者test.txt。