前言
最近利用Faster R-CNN訓練數據,使用ZF模型,效果無法有效提高。就想嘗試對ZF的網絡結構進行改造,記錄下具體操作。
一、更改網絡,訓練初始化模型
這里為了方便,我們假設更換的網絡名為LeNet。
首先,需要先訓練在Faster R-CNN中用來初始化網絡的模型:LeNet.caffemodel。
這里比較簡單,直接用完整的LeNet去訓練一部分數據(VOC2007,VOC2012均可),數據初始大小resize為224*224,即可得到初始化網絡的模型。
二、在Faster R-CNN中更相關內容(Faster R-CNN是基於matlab)
1.文件夾"experiments":
(1)添加文件script_faster_rcnn_VOC2007_LeNet.m(內容同script_faster_rcnn_VOC2007_ZF.m,將文件中的ZF替換為LeNet)。
(2)子文件夾"+Model"添加文件LeNet_for_Faster_RCNN_VOC2007.m(內容同ZF_for_Faster_RCNN_VOC2007.m,將文件中的ZF替換為LeNet)
(3)子文件夾"models"中內容也需要更換,具體改動見下面"文件夾"models"中內容修改和添加"
2.文件夾"fetch_data"中:
(1)添加文件fetch_model_LeNet.m(內容同fetch_model_ZF.m,將ZF替換為LeNet)
3.文件夾"functions":
(1)子文件夾"rpn"中proposal_train.m部分內容修改:

同理 proposal_test.m。
(2) 子文件夾"fast_rcnn"中fast_rcnn_train.m文件修改如同(1)。
4.文件夾"models":
選取子文件夾"rpn_prototxts"為例
(1)添加文件夾"LeNet",將文件夾"ZF"中的所有文件都拷貝過來,然后對每個文件進行修改:
train_val.prototxt:將主體網絡ZF替換為LeNet,然后對文件里的參數作出更改,如下圖。

test.prototxt:將主體網絡ZF替換為LeNet即可,並修改網絡名稱為LeNet。
solver_xxxx.prototxt:

(2)添加文件夾"LeNet_fc6",將文件夾"ZF_fc6"中的所有文件都拷貝過來,然后對每個文件進行修改,修改方式如上。
對於子文件夾"fast_rcnn_prototxts"來說,添加和修改方式如上述(1)(2)一致。
三、總結
做完上述工作,即可順利的利用自己的網絡來進行Faster R-CNN的訓練了。
