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也需要相應調整