配好caffe後,編譯MATLAB介面
首先宣告我臺式電腦的配置:Ubuntu 16.04 titan顯示卡 cuda 8.0 gcc 5.4 matlab 2014a
caffe 的配置可以參考我之前的博文(寫的比較簡單,主要是列出了幾個錯誤的解決方案)caffe 配置
.........................................................................................................................................................................
以上caffe就已經配置好了,並且可以開心的在終端跑程式碼了。
但是如果要用matlab來跑程式碼的話,還是需要caffe的matlab 介面的 。
第一步:在Ubuntu上裝matlab2014a
這一步簡單,網上很多教程,按著上面做基本不會出什麼問題。 我是按著這一篇教程來安裝的 。教程可能同時還看了幾篇部落格。matlab2014a
下載連結 密碼:4mu6
第二步:make matcaffe
在這一步你可能沒有那麼的一帆風順。事實是配置matlab介面花了我快兩天的時間(哭瞎~)剛開始配置介面時候看了很多部落格都說說要把gcc降到4.7的版本,然後我就照做了。在make matcaffe 就報錯了,出現了以下錯誤。
Makefile:518: recipe for target 'matlab/+caffe/private/caffe_.mexa64' failed
然後網上搜索解決方案 :方案
修改makefile裡面的CXXFLAGS,新增CXXFLAGS += -std=c++11.然後重新編譯就可以了。可以不知道為什麼,我的情況就是解決不了。
然後我就 make clean 了一下 。(悲劇開始了~)make clean 會把之前編譯好的caffe也給一併刪除了。
無奈,那就重新編譯唄,心想反正編譯也快(事實上是我想多了)
在重新編譯caffe時候又出現了之前編譯沒有出現的問題。問題如下:
Makefile:562: recipe for target '.build_release/tools/convert_imageset.bin' failed
一直找不到解決方案~~無奈在這裡卡了好幾個小時。
最後轉換思路:把在配matlab藉口改變的地方恢復回去,再重新配置caffe 。最後有效
首先我將gcc4.7升級到先前的版本5.4 參考升級完後 make caffe ;make test;make runtest caffe 又配置好了。
這樣做的原因是什麼我也不知道,可能編譯caffe時候對gcc的版本有要求。
然後現在又回到MATLAB介面配置問題上,這一次我沒有將gcc降級 。在修改makefile裡面的CXXFLAGS,新增CXXFLAGS += -std=c++11後,直接 make matcaffe 。最後編譯成功。
至此make matcaffe 這一步結束。
結果如下:
顯示了一個警告,說是gcc的版本不支援。這個沒有關係,只是警告,不是錯誤,最下面顯示還是MEX成功了。
第三步:make test
執行完命令後,又報錯了。大致意思是:Matlab自帶的庫和Ubuntu的系統庫之間發生了衝突,一言不和就廢掉Matlab的自帶庫,使用Ubuntu系統庫。
解決方案:剛開始我是直接在終端輸入:
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/usr/local/cuda-8.0/lib64
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libfreetype.so.6
然後再 make mattest 成功,但是關掉終端後再開啟測試還是會有同樣的錯誤,於是我就直接在系統檔案裡面加入路徑。首先終端輸入:
sudo gedit ~/.bashrc
然後把如下兩個路徑加到檔案最下面。
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/usr/local/cuda-8.0/lib64
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.2.4:/usr/lib/x86_64-linux-gnu/libopencv_core.so.2.4:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libfreetype.so.6
儲存 退出,重啟電腦。
make mattest 成功,結果如下:
至此 matlab 介面就配置好了。
接下來然我們來跑一個程式碼試一下吧(開心~~~)
<1>下載bvlc_reference_caffenet.caffemodel
連結:http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel
下載好之後放入資料夾/caffe-master/models/bvlc_reference_caffenet 這是因為一會執行的demo要使用這個模型。
<2>在終端輸入命令“matlab”(打不開的自己去新增PATH)開啟Matlab,切換到目錄/caffe-master/matlab/demo/(這很重要)
<3>輸入命令 run('classification_demo.m') 或者雙擊開啟classification_demo.m直接點選上面控制檯上的“執行”即可,不需要輸入引數。
<4>輸出是一個1000×1的矩陣,因為ImageNet資料集有1000個類別。
完美~~~
基本上這就是我配置matlab介面的心得了,如有問題疑問歡迎留言。
主要參考部落格: