Faster RCNN從demo到訓練自己的資料(1)——前言篇
注意:
一定要保證電腦裝有353.66(CUDA7.5)或369.30(CUDA8.0)以上的N卡驅動,至少保證使用GeForce800系列以上的顯示卡!否則caffe會顯示 “Check failed: error == cudaSuccess (35 vs. 0)”。
一定使用caffe的GPU介面,CPU無法跑Faster RCNN,否則會提示 “無法解析Forward_gpu(...)、Backward_gpu(...)” 。因為原作者並沒有提供CPU版本,部落格所有方法均無效,有興趣的可以自己嘗試實現。
1.系統環境是Windows7+CUDA8.0+CUDNN5.1+VS2013+Python2.7
2.開始前需要先進行以下幾步工作:
(1)編譯GPU版本caffe的python介面。修改.\caffe\windows\CommonSettings.props,改為GPU版本caffe。點選Caffe.sln,依次生成libcaffe、caffe,再對pycaffe點選生成,編譯caffe的python介面。將.\caffe-master\Build\x64\Release\pycaffe\caffe資料夾複製到.\Python\Lib\site-packages\下,若安裝Anaconda2,也可以複製到.\Anaconda2\Lib\site-packages\路徑下。呼叫cmd,輸入python,再輸入import caffe,驗證是否成功。
再下載py-faster-rcnn-windows,地址:https://github.com/MrGF/py-faster-rcnn-windows 。將py-faster-rcnn-windows中的lib完全替換掉py-faster-rcnn中的lib。
替換後,在py-faster-rcnn\lib\rpn路徑下,編輯proposal_layer.py:
a. 將其中的 param_str_ 替換為 param_str。
b. 將cfg_key = str(self.phase)替換為cfg_key = str('TRAIN' if self.phase == 0 else 'TEST')。
(3)點選Caffe.sln,在libcaffe下新增檔案,.\caffe\src\caffe\layers下的roi_polling_layer.cpp、roi_polling_layer.hpp、roi_polling_layer.cu分別新增(.cpp加入到libcaffe\src\layers\,.hpp加入到libcaffe\include\,.cu加入到libcaffe\),對libcaffe點選重新生成。對pycaffe點選生成,生成新的pycaffe資料夾中的caffe資料夾。將其複製到py-faster-rcnn\caffe-fast-rcnn\python資料夾下(若無python資料夾,則新建一個)。
可能問題:編譯libcaffe可能提示 “無法解析的外部符號ROIPoolingLayer<double>::Forward_gpu(...)、ROIPoolingLayer<double>::Backward_gpu(...)”
解決方法:開啟.\caffe-master\windows\libcaffe\libcaffe.vcxproj,保證存在<CudaCompile Include="..\..\src\caffe\layers\roi_pooling_layer.cu" />,如圖。若無,則加上。儲存libcaffe.vcxproj,再編譯libcaffe即可成功。