Ubuntu14.04下Fast-RCNN配置VGG16.caffemodel
另附:Fast R-CNN的作者:Ross B Girshick
1.原始碼及說明:https://github.com/rbgirshick/fast-rcnn
2.作者主頁:http://www.cs.berkeley.edu/~rbg/
第一部分:下載資料test data and VOCdevkit(首先要下載訓練集、驗證集、測試集,例子是VOC2007。)
下載原網址:http://www.cs.berkeley.edu/~rbg/fast-rcnn-data(供選擇)
或者終端輸入:
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
第二部分:解壓生成資料夾 VOCdevkit就在data目錄下輸入下列命令解壓,解壓檔案會自動跑到devkit這個資料夾,其中VOC2007會自動包含trainval和test這兩個檔案。即終端輸入:
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
第三部分:資料夾包含目錄(data下有資料夾命名為VOCdevkit,此資料夾中包含VOC2007和VOCcode)
$VOCdevkit/ #development kit
$VOCdevkit/VOCcode/ #VOC utility code
$VOCdevkit/VOC2007 #image sets, annotations, etc.
第四部分:建立連結
建立對VOC2007資料集的symlink,也就是連結FRCN_ROOT和VOC2007的目錄。這個方法非常好,因為別的工程裡面也可能用到這個資料集,這樣就不用多次拷貝了,節省了很多儲存空間,windows下面就沒有。終端輸入:
cd $FRCN_ROOT/data(其中$表示您fast-rcnn的目錄位置)
sudo ln -s VOCdevkit VOCdevkit2007
第五部分:下載預先用selective search計算好的objectproposal。法1:下載地址原網址:http://www.cs.berkeley.edu/~rbg/fast-rcnn-data(選擇selective search那個檔案)
拷貝放在data目錄下解壓
法2:
cd $FRCN_ROOT
./data/scripts/fetch_selective_search_data.sh
會下載到$FRCN_ROOT/data下,解壓後是一個名為selective_search_data的資料夾。
第六部分:下載預先訓練好的ImageNet模型。( CaffeNet (model S), VGG_CNN_M_1024 (model M), and VGG16 (model L).)法1:下載地址原網址:http://www.cs.berkeley.edu/~rbg/fast-rcnn-data(選擇imagenet_models)
拷貝放在data目錄下解壓
法2:
cd $FRCN_ROOT
./data/scripts/fetch_imagenet_models.sh
下載到三個模型,分別是CaffeNet (model S), VGG_CNN_M_1024(model M), and VGG16 (modelL),會下載到$FRCN_ROOT/data下,解壓後是一個名為imagenet_models的資料夾。
第七部分:訓練測試如下:1.訓練:Train a Fast R-CNN detector.
在fast-rcnn目錄下終端執行:
./tools/train_net.py --gpu 0 --solver models/VGG16/solver.prototxt --weights data/imagenet_models/VGG16.v2.caffemodel
(1)如果出現錯誤:
EnvironmentError: MATLAB command 'matlab' not found. Please add 'matlab' toyour PATH.
則增加(終端執行):
export PATH=$PATH:/usr/local/MATLAB/R2014a/bin(前提保證matlab裝好,make matcaffe通過)
(2)如果出現錯誤:ImportError: No module named yaml
那就下載安裝一個:
sudo apt-get install python-yaml
(3)如果顯示記憶體不夠,可以用nvidia-smi隨時檢視記憶體使用情況。每10000次迭代會生成一個model,結果存放在output資料夾中。訓練VGG16網路,據作者說,即使把每個minibatch所用的圖片由2改為1,也需要將近5G的GPU記憶體,3G以上記憶體的可以嘗試一下,cudnn可能在一定程度上起到了優化作用。
2.訓練:VGG_CNN_M_1024網路時,會提示說記憶體不夠,就把$FRCN_ROOT/lib/fast_rcnn下的config.py中每個minibatch所用的圖片由2改為1,如果還不行,說明GPU記憶體太小,只能換GPU了。
./tools/train_net.py --gpu 0 --solvermodels/VGG_CNN_M_1024/solver.prototxt --weightsdata/imagenet_models/VGG_CNN_M_1024.v2.caffemodel
測試:Test a Fast R-CNN detector.
在自己的模型還沒有訓練好,或者訓練得不夠好的時候,可以試試作者提供的模型:
./tools/test_net.py --gpu 0(用0不能用1,如果用1會顯示核心已轉存,即是記憶體出錯) --def models/VGG16/test.prototxt --net output/default/voc_2007_trainval/vgg16_fast_rcnn_iter_40000.caffemodel
在測試的時候一直如果報下面這樣的錯:
問題出在VOCinit上,我們現在是在測試,把
第一句註釋掉,第二句取消註釋即可。測試的結果在output資料夾中。
TIPS::如果用VGG_CNN_M_1024.v2.caffemodel這個模型,改一下中間的資料夾名稱,即將VGG16改為VGG_CNN_M_1024.v2.caffemodel即可。