前言
最近利用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的训练了。