RCNN 是利用DL做目標檢測的一個程序,現在有更快的faster-RCNN。
github地址:https://github.com/rbgirshick/rcnn
caffe的安裝:
其實RCNN最難安裝部分就是caffe部分。所以我假設之前的CUDA,以及必需的矩陣計算庫之類的都安裝好了,如果沒有,參考:
http://www.cnblogs.com/platero/p/3993877.html
以及
http://blog.csdn.net/altenli/article/details/44199539
下面說RCNN的編譯:
首先是必須要在ubuntu matlab 2012下編譯(a,b都行),之前我的電腦一直是MATLAB2014,發現編譯完成之後,運行一直報錯,各種bug,根本的原因就是MATLAB版本不兼容。(這裏補充一下,可以在MATLAB2014下運行,感謝TongXu大神[https://github.com/tt-leader]的提醒,具體的方法在最後面附錄)
第二點就是:關於caffe的版本,作者在readme中提供的caffe-v0.999是有問題的,推薦另外一個也是v0.999版本但是,修復bug的版本:https://github.com/DeercoderResearch/caffe-0.999
第三點就是caffe編譯的問題了。解壓從第二步下載的文件,首先需要修改裏面的makefile.config中MATLAB的路徑(複製一個makefile.config.example),因爲我之前安裝的是matlab 2014,所以我要修改makefile.config的MATLAB路徑位置到現在安裝的MATLAB2012。同時修改CUDA的路徑。
然後依次:
make all -j4
make test
make runtest
,如果沒有報錯的話,編譯MATLAB 接口函數:
make matcaffe
然後就可以參考RCNN的readme的設置,建立關於caffe的軟連接,下載各種工具包,以及預訓練好的model。
可能遇到的問題:
一般遇到的問題有下面幾個,大部分都能Google解決掉,或者直接在RCNN github的issues裏面找到答案,比如:
Expected 3 arguments,got 2
比較棘手的問題就是:MATLAB運行demo的時候直接crash崩潰了。這個時候,不要急,首先建議MATLAB是在terminal下啓動的,也就是在命令行下,那麼當MATLAB崩潰的時候,就會在命令行下給出崩潰的原因,最主要的原因就是caffe的編譯器和matlab接口的編譯器不一致。以及沒有安裝qt。就會報錯:
/usr/local/lib/libopencv_highgui.so.2.4:
undefined symbol: _ZNK9QCheckBox15minimumSizeHintE
首先安裝qt方法:
stackoverflow.com/questions/12330352/error-when-trying-to-use-mexopencv-in-matlab
具體的解決參考下面三個博客:
coldmooon.github.io/2015/08/03/caffe_install/
https://groups.google.com/form/#!topic/caffe-users/im_btmw44pc
blog.csdn.net/rosboy/article/details/40949453
同時,在運行的時候,默認caffe的輸入batch_size是256.這個很容易導致GPU的溢出,報錯說:
Check fialed: error == cudaSuccess ( 2 vs. 0 ) out of memory
比如修改成16大小,需要修改兩個地方:一個是model-defs文件夾中的prototxt文件中的參數input-dim,第二個是data/rcnn-models中mat數據中的batch_size大小
附錄: MATLAB2014平臺下運行的方法:
1.rename startup.m in the $RCNN folder to start_up.m, justlet Matlab start normally because Matlab will run startup.m while staring up.
2.run matlab interminal, make sure you are in the $RCNN folder.
3. run start_up.m in the command window of Matlab