1. 程式人生 > >Ubuntu14.04下Fast-RCNN配置VGG16.caffemodel

Ubuntu14.04下Fast-RCNN配置VGG16.caffemodel

注:本博文轉自博主是個灰常樂於幫助的好銀!再次感謝他。我在他的博文基礎上,參考了研究Fast rcnn程式碼  ,給略微加了一些註解,幫助理解這次配置操作的意思。

另附: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會自動包含trainvaltest這兩個檔案。即終端輸入:
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar

第三部分:資料夾包含目錄data下有資料夾命名為VOCdevkit,此資料夾中包含VOC2007VOCcode
$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即可。