編譯Caffe的Matlab介面
一般情況下不願意使用Caffe的Matlab介面,總覺得Linux版的Matlab很難配置,但是現在搞目標檢測,得到的原始碼是使用的Caffe的Matlab介面,只能硬著頭皮上了。
(1)修改caffe-master/Makefile.config
這一步主要是在Caffe的編譯配置檔案Makefile.config中加入Matlab的路徑。注意路徑資料夾是要包含Matlab安裝目錄的“bin”資料夾的。
(2)編譯介面。這裡預設已經編譯好了Caffe原始碼主體部分。所以直接編譯介面。在caffe-master目錄下開啟終端,輸入: make matcaffe 至於如何編譯Caffe原始碼的主體部分請大家百度,就是make all ,make test那些。我是一開始沒有在Makefile.config
(3)測試介面。輸入 make mattest
這裡可能報錯:caffe_.mexa64: undefined symbol:
_ZN2cv8imencodeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayERSt6vectorIhSaIhEERKSB_IiSaIiEE
錯誤原因是Matlab自帶的庫和Ubuntu的系統庫之間發生了衝突,一言不和就廢掉Matlab的自帶庫,使用Ubuntu系統庫,呵呵。
PS:只替換庫libstdc++.so.6
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
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
注意:目錄/usr/lib/x86_64-linux-gnu/是我的系統庫目錄。大家可以通過查詢庫所在位置來確定自己的系統庫目錄:
sudo find / -name libstdc++.so.6
重新執行make mattest , 問題解決~
(4)在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個類別。
到此OK,大家加油~
參考資料:
How to install Matlab API in Caffe
Matlab下對Caffe介面的呼叫