Ubuntu18.04 基于detectron2实现Faster RCNN训练VOC数据(二)

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

原始图片
cat.jpg
检测结果为
result.jpg
可以看到,模型在图片上实现了猫的检测。

猜你喜欢

转载自blog.csdn.net/linghu8812/article/details/105708001