1. 程式人生 > >配好caffe後,編譯MATLAB介面

配好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介面的心得了,如有問題疑問歡迎留言。

主要參考部落格: