1. 程式人生 > >caffe在Windows下配置 vs2013+cuda7.5+python2.7/python3.5/matlab

caffe在Windows下配置 vs2013+cuda7.5+python2.7/python3.5/matlab

本文預設環境都是x64,本來編譯器應該選最新的vs2015(vc140),但是網上沒找到任何相關資訊,只有人說caffe和vs2015相容性不好,所以只好用vs2013(vc120).

試了一下微軟官方的caffe-windows(https://github.com/Microsoft/caffe),很方便,之前不能用是設定問題,配置過程按照http://blog.csdn.net/guoyk1990/article/details/52909864即可,有幾個坑已經被前輩們填了。我自己裝的時候碰到一個新坑,編譯matcaffe時報告無法開啟"gpu/mxGPUArray.h",查了一下這個檔案在$(MatlabDir)\toolbox\distcomp\gpu\extern\include\gpu,可能是因為我Matlab版本比較舊,簡單的方法就是複製一份extern目錄合併到到$(MatlabDir)裡面。
python整合包的問題請見下面。目前看,官方caffe-windows的缺點就是第三方庫都比較舊,例如opencv還是2.4.10,不過不影響使用。自己要改的話目前還不會,沒找到第三方庫的輸入介面。

最大的參考是happynear的帖子http://blog.csdn.net/happynear/article/details/45372231,注意3rdparty不要下載原貼的,要下載下面帖子中的修復版http://pan.baidu.com/s/1nvH7whz。

有些細節補充在http://blog.csdn.net/hong__fang/article/details/51317424,其中有些編譯問題可以參考http://blog.csdn.net/hong__fang/article/details/52399900

cuda可以在https://developer.nvidia.com/cuda-toolkit下載,和前人一樣用的是7.5,3rdparty中的cudnn也是針對7.5的,不知道vs2013對cuda8.0的支援如何,如果有興趣可以試試8.0,注意修改cudnn去https://developer.nvidia.com/cudnn下載對應版本。注意安裝完cuda後檢視環境變數裡有cuda的目錄沒,沒有就手動加上,怎麼檢視和新增很容易搜尋,就不細說了。

python建議使用Anaconda整合包,注意選擇好python版本2.7或者3.5,可以在Anaconda官網https://www.continuum.io/downloads下載,但是我這裡的速度慢的令人髮指,還老斷,可以去萬能的百度雲https://pan.baidu.com/s/1cKew26(這個是Anaconda2-2.4.1),安裝時可能會出現這種錯誤https://www.zhihu.com/question/38943949,帖子裡也有解決方法,順便還能把Anaconda更新到最新版本。Anaconda3的下載除了官網我還沒找,因為自己配置時用的是Miniconda3,用國外伺服器更新,也是更新了數小時,還一直斷,找到合適的再貼上。

matlab沒啥要求,我用的是2013a,相信以後的版本也沒問題。

如果是使用python2.7和matlab,連結器輸入加上boost_python-vc120-mt-1_XX.lib(XX是boost 版本,上面連結的版本是58),caffe應該已經能編譯成功了。

但是如果想使用python3.5,在編譯工程pycaffe時就會有unresolved symbol  boost::python::detail::init_module這種連結庫錯誤,因為源程式中3rdparty給的boost庫是針對python2編譯的,所以要換到python3.從boost官網http://www.boost.org下載的編譯好的庫只有針對python2的,真坑;在一個網站http://www.lfd.uci.edu/~gohlke/pythonlibs/找到了針對python3的boost庫,然而編譯器是vc140。找了很久現成的沒找到,只好自己編了,從boost官網下載原始碼版庫,編譯過程參考http://stackoverflow.com/questions/24314644/how-to-get-boost-python-tutorial-example-to-link-with-python3,其中有個關鍵步驟是修改user-config.jam,要把這個檔案放到windows中你的個人資料夾中,具體來說就是在資源管理器輸入%HOMEDRIVE%%HOMEPATH%,注意輸入python安裝路徑時反斜槓要用兩個,路徑中有空格的話要用引號,例如"D:\\Program Files\\Anaconda3"。注意http://www.cnblogs.com/kind064100611/p/4353561.html中提到使用vs2013 command prompt,最好不要使用,因為這種方法很2的一點就是編譯需要從boost安裝路徑把所有hpp檔案複製到C:\boost中,12000多個檔案複製將近1個小時!此外,編譯時可能碰到編譯器內部錯誤,還不知道原因,能想到的方法就是重灌vs2013或者換機器,以後知道了再補上。

有了基於python3的boost庫,例如boost_python3-vc120-mt-1_62.lib,就可以在python3下編譯pycaffe了,注意把include目錄和lib目錄改成python3的,把輸入庫python27.lib改成python35.lib,並且把boost_python-vc120-mt-1_XX.lib改成boost_python3-vc120-mt-1_62.lib,在使用時還要加上對應的dll。至此,就可以愉快的使用caffe的python3介面了。

關於caffe的測試,matlab介面在http://blog.csdn.net/hong__fang/article/details/51317424中有簡單實現,python介面在http://blog.csdn.net/buildgood/article/details/51123312和http://blog.csdn.net/a_31415926/article/details/50532665中。

剛入門caffe的肯定是用demo裡面的leveldb/lmdb格式的資料庫,但是資料規模一上來就有了問題,首先轉換db格式就需要額外佔用原資料大小(其實db比這個更大)的空間,其次如果資料集稍有變化,又要重新convert,所以在實際實驗中data layer還是使用ImageData代替Data,詳見http://blog.csdn.net/kuaitoukid/article/details/51323940,注意其中的幾個改動:type: "ImageData",  image_data_param{...},輸入可以使相對路徑可以是是絕對路徑,如果是相對路徑,則程式從當前路徑下讀取;對於source對應的txt中的影象名,如果是相對路徑,則程式從image_data_param中的root_folder下讀取。