1.首先是function model =ZF_for_Faster_RCNN_VOC2007(model)中的参数
% Stride in inputimage pixels at the last conv layer
model.feat_stride = 16;
%此处必须是16,和5次卷积对应。若不是16,如为8,则只有左上角1/4的位置有anchor
%% final test
% 对已排好序的abox,先选择6000个,然后进行nms消除,阈值0.7,最后从中筛选300个。
model.final_test.nms.per_nms_topN =6000; %图像中目标较少时可考虑降低
model.final_test.nms.after_nms_topN =300; %图像中目标较少时可考虑降低,recall较低时可考虑增大
2. functionconf = proposal_config(varargin)和function conf = fast_rcnn_config(varargin)中的参数
ip.addParamValue('scales', 600, @ismatrix);
% Max pixel size of a scaled input image
ip.addParamValue('max_size', 1000, @isscalar);
ip.addParamValue('batch_size', 128, @isscalar);
ip.addParamValue('test_min_box_size',16, @isscalar);
根据图片和目标的尺度可以修改scale和max_size参数;根据图片中目标的尺度,可以修改test_min_box_size参数。
根据类别数量和每张图包含目标数目,可修改batch_size
3.solve.txt中的参数
base_lr: 0.001
lr_policy:"step"
gamma: 0.1
stepsize: 30000
这四个参数根据loss变化情况修改,loss波动较大时考虑降低lr
max_iter: 40000 %样本较少时可以适当降低
weight_decay: 0.0005 %过拟合时可以考虑增大
4.function anchors =proposal_generate_anchors(cache_name, varargin)中的参数
ip.addParamValue('base_size', 16, @isscalar);
% ratio list of anchors
ip.addParamValue('ratios', [0.5, 1, 2], @ismatrix);
% scale list of anchors
ip.addParamValue('scales', 2.^[3:5], @ismatrix);
小目标时,可考虑降低base_size或者scales。
5.ZF-net和VGG-net选择
样本较多,目标尺度较大时,优先考虑VGG-net;
小样本容易过拟合,优先考虑ZF-net
6. RPN的train_val.prototxt
如果proposal_config中修改了base_size,则这里的loss_bbox层(最后一层)中的loss_weight也需要相应调整