前言

最近利用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部分内容修改:

Faster R-CNN利用新的网络结构来训练-LMLPHP

同理 proposal_test.m。

(2) 子文件夹"fast_rcnn"中fast_rcnn_train.m文件修改如同(1)。

4.文件夹"models":

选取子文件夹"rpn_prototxts"为例

(1)添加文件夹"LeNet",将文件夹"ZF"中的所有文件都拷贝过来,然后对每个文件进行修改:

  train_val.prototxt:将主体网络ZF替换为LeNet,然后对文件里的参数作出更改,如下图。

Faster R-CNN利用新的网络结构来训练-LMLPHP

  test.prototxt:将主体网络ZF替换为LeNet即可,并修改网络名称为LeNet。

  solver_xxxx.prototxt:

Faster R-CNN利用新的网络结构来训练-LMLPHP

(2)添加文件夹"LeNet_fc6",将文件夹"ZF_fc6"中的所有文件都拷贝过来,然后对每个文件进行修改,修改方式如上。

  对于子文件夹"fast_rcnn_prototxts"来说,添加和修改方式如上述(1)(2)一致。

三、总结

做完上述工作,即可顺利的利用自己的网络来进行Faster R-CNN的训练了。

05-15 11:22