1. 程式人生 > >使用自己的資料訓練 Faster R-CNN 的 ResNet-50 模型

使用自己的資料訓練 Faster R-CNN 的 ResNet-50 模型

上次使用 Faster R-CNN 訓練了一個 VGG16 的網路,為了再提升識別的準確率,利用 ResNet 網路在同樣的資料上面訓練了多一次。

一、訓練網路

(一)下載 ResNet-50 的 prototxt 檔案

(二)相關檔案修改

1.cd $FRCN_ROOT/lib/rpn/generate_anchors.py

2.cd $FRCN_ROOT/lib/rpn/anchor_target_layer.py

3.cd $FRCN_ROOT/lib/rpn/proposal_layer.py

4.pascal_voc .py、imdb.py、train.prototxt、test.prototxt、.pt檔案

 的修改參考 使用自己的資料訓練 Faster R-CNN 的 VGG-16 模型 。

5.因為我們使用了5個尺度的anchors,所以之前的9個anchors變成了3*5=15個。
修改prototxt和pt檔案,將其中的18換成30。

  • (三)下載 ImageNet 模型

下載 ImageNet 預訓練檔案:ResNet-50.v2.caffemodel

(四)清除快取

刪除快取檔案:
$FRCN_ROOT/data/VOCdevkit2007/annotations_cache/annots.pkl
$FRCN_ROOT/data/cache 下的 pkl 檔案
如果不清除快取可能會報錯。

(五)開始訓練

參照 VGG16 的訓練命令:
cd $FRCN_ROOT

./experiments/scripts/faster_rcnn_end2end.sh 0 ResNet-50 pascal_voc

注意:第三個引數 ‘ResNet-50’,一定要和你的資料夾名字對應,比如我的檔案放在$FRCN_ROOT/models/pascal_voc/ResNet-50 裡面,所以我的第三個引數就為我目錄的名稱。

由於 ResNet-50 的網路更深,訓練的時間也需要更久,每一次迭代大約需要 0.5s ,訓練這個網路我用了大概10個小時,但效果會比用 VGG16 的好,主要是對小尺度的物體檢測更加準確了。
這是我訓練時各類的 AP :

Caffe下py-faster-rcnn使用殘差網路Resnet進行訓練

個人分類: Caffe目標檢測深度學習

Kaiming大神15年的ResNet出來已久,但仍然是現今頂尖的網路,論文中測試的方法是他自己的Faster RCNN,Github上也給出了原始的ResNet caffe結構。 
但是對於我這樣的小白來說,還是不太清楚該如何取改他提供的模型去適應Faster RCNN進行目標檢測,用了很長時間終於搞清楚,特上傳其prototxt檔案記錄。

注:ResNet其他的結構按照同樣的方式改就行了。