1.准备VOC数据
下载VOC数据,将VOC数据放在datasets文件夹下,VOC2007和VOC2012两个文件夹分开放,文件夹下结构不用改变。
datasets
|----VOC2007
|----VOC2012
2. 数据训练
2.1 训练命令
通过以下命令开始训练。
CUDA_VISIBLE_DEVICES=0 python3 train_net.py \
--config-file ../configs/PascalVOC-Detection/faster_rcnn_R_50_FPN.yaml \
--num-gpus 1 SOLVER.IMS_PER_BATCH 8 SOLVER.BASE_LR 0.01
CUDA_VISIBLE_DEVICES可以选择部署训练的GPU;
--config-file
选择网络结构配置;
--num-gpus
选择训练GPU数量
SOLVER.IMS_PER_BATCH
设置训练batch_size大小;
SOLVER.BASE_LR
设置训练learning_rate大小;
2.2 config yaml文件
配置文件faster_rcnn_R_50_FPN.yaml
中的SOLVER原始设置如下,最大迭代次数为18000,17.4 epochs
的意思是迭代这么多次数对整个数据集迭代了17.4个epoch,VOC数据集共16551张训练图片,18000*16/16551=17.4
,如果batch size小的话,可以修改迭代步数以保证对数据集训练17.4个epoch。
SOLVER:
STEPS: (12000, 16000)
MAX_ITER: 18000 # 17.4 epochs
WARMUP_ITERS: 100
3. 测试结果
3.1训练评估
完成训练后会对模型性能进行评估,会输出以下结果。
[04/23 06:04:30] d2.evaluation.pascal_voc_evaluation INFO: Evaluating voc_2007_test using 2007 metric. Note that results do not use the official Matlab API.
[04/23 06:05:08] d2.engine.defaults INFO: Evaluation results for voc_2007_test in csv format:
[04/23 06:05:08] d2.evaluation.testing INFO: copypaste: Task: bbox
[04/23 06:05:08] d2.evaluation.testing INFO: copypaste: AP,AP50,AP75
[04/23 06:05:08] d2.evaluation.testing INFO: copypaste: 51.3760,80.6508,55.5273
[04/23 06:05:08] d2.utils.events INFO: eta: 0:00:01 iter: 17999 total_loss: 0.283 loss_cls: 0.109 loss_box_reg: 0.154 loss_rpn_cls: 0.008 loss_rpn_loc: 0.017 time: 1.1067 data_time: 0.0382 lr: 0.000100 max_mem: 9423M
结果显示,模型在VOC2007 test数据集上的0.5:0.95的AP为51.38,0.5的AP为80.65,0.75的AP为55.53。
3.2 benchmark
从detectron2的MODEL ZOO中,可以看到Faster RCNN在Cityscapes和Pascal VOC Baselines数据集上的baseline,可以看到训练结果的mAP与baseline基本一致。
Name | train time (s/iter) |
inference time (s/im) |
train mem (GB) |
box AP |
box AP50 |
mask AP |
model id | download |
---|---|---|---|---|---|---|---|---|
R50-FPN, Cityscapes | 0.240 | 0.078 | 4.4 | 36.5 | 142423278 | model | metrics | ||
R50-C4, VOC | 0.537 | 0.081 | 4.8 | 51.9 | 80.3 | 142202221 | model | metrics |
3.3 Inference
在图片上实现单张图片的检测可以通过以下命令实现
python3 demo.py --config-file ../configs/PascalVOC-Detection/faster_rcnn_R_50_FPN.yaml \
--input cat.jpg \
--output result_cat_voc.jpg \
--opts MODEL.WEIGHTS ../tools/output_bak/model_final.pth
原始图片
检测结果为
可以看到,模型在图片上实现了猫的检测。