(1) 数据集名称
第12行VOC2007改为自己的文件夹名称
VOCopts.dataset='your folder name'
(2) 修改图片格式
第37行中的jpg换成自己的图片格式
VOCopts.imgpath=[VOCopts.datadir VOCopts.dataset '/JPEGImages/%s.jpg'];
(3) 修改标签名称
第81行之后的类别名称换成自己数据集的类别名称
VOCopts.classes={...
'cls1'
'cls2'
...
'clsn'
};
按照下图添加文件夹,其中的NWPU_VHR-10改为自己的数据集名称。
在/NWPU_VHR-10/ImageSets/Main文件夹下创建test.txt、train.txt、trainval.txt、val.txt四个文件,分别保存测试集、训练集、训练集-验证集合验证集。每个文件名占一行,不包含后缀名。
windows下计算图片数据均值使用的工具和命令与Linux下的相同。可参照@denny402的博客–计算图片数据的均值。工具生成的格式是binaryproto格式的文件,MATLAB中使用的是mat格式文件,使用caffe.io.read_mean进行格式转换。
image_mean = caffe.io.read_mean('path to mean file');
save('path to save','image_mean');
对于ZF网络,训练Fast R-CNN需要至少3G现存,根据自己的硬件配置,选择合适的网络,然后对网络参数进行修改。
input: "bbox_targets"
input_dim: 1 # to be changed on-the-fly to match num ROIs
input_dim: 84 # 根据类别数改,该值为(类别数+1)*4
input_dim: 1
input_dim: 1
input: "bbox_loss_weights"
input_dim: 1 # to be changed on-the-fly to match num ROIs
input_dim: 84 # 根据类别数改,该值为(类别数+1)*4
input_dim: 1
input_dim: 1
layer {
bottom: "fc7"
top: "cls_score"
name: "cls_score"
param {
lr_mult: 1.0
}
param {
lr_mult: 2.0
}
type: "InnerProduct"
inner_product_param {
num_output: 21 #根据类别数改该值为类别数+1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
bottom: "fc7"
top: "bbox_pred"
name: "bbox_pred"
type: "InnerProduct"
param {
lr_mult: 1.0
}
param {
lr_mult: 2.0
}
inner_product_param {
num_output: 84 # 根据类别数改,该值为(类别数+1)*4
weight_filler {
type: "gaussian"
std: 0.001
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
bottom: "fc7"
top: "cls_score"
name: "cls_score"
param {
lr_mult: 1.0
}
param {
lr_mult: 2.0
}
type: "InnerProduct"
inner_product_param {
num_output: 21 #根据类别数改该值为类别数+1
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 0
}
}
}
layer {
bottom: "fc7"
top: "bbox_pred"
name: "bbox_pred"
type: "InnerProduct"
param {
lr_mult: 1.0
}
param {
lr_mult: 2.0
}
inner_product_param {
num_output: 84 # 根据类别数改,该值为(类别数+1)*4
weight_filler {
type: "gaussian"
std: 0.001
}
bias_filler {
type: "constant"
value: 0
}
}
}
models\ fast_rcnn_prototxts\ZF6\ train_val.prototxt与models\ fast_rcnn_prototxts\ZF\ train_val.prototxt修改的地方相同。
models\ fast_rcnn_prototxts\ZF6\ test.prototxt与 models\ fast_rcnn_prototxts\ZF\ test.prototxt修改的地方相同
ip.addParamValue('val_iters', 500, @isscalar);
val_iters的默认值设置为验证样本数的1/5左右,最大不能超过验证样本数。
与fast_rcnn_train.m相同,修改val_iters值。
%注释73行
%do_eval = (str2num(year) <= 2007) | ~strcmp(test_set,'test');
%添加下面语句
do_eval = 1;
如果不修改,测试时精度全为0。
在该文件中修改faster-rcnn各阶段训练时的参数
运行experiments/script_faster_rcnn_VOC2007_ZF.m。运行结束后根据提示修改detection_test.prototxt