mmdetection训练自己的模型

参考文档:
mmdetection入门文档

预训练权重下载:model_zoo.md

>>训练自己的模型

1.修改配置文件

位置:mmdetection/configs/__ base__/models/faster_xxxx.py
操作:

  • num_class=N
  • dataset_type = ‘VOCDataset’ ;data_root = ‘data/VOCdevkit/’
  • ann_file = data_root + ‘VOC2007/ImageSets/Main/xx.txt’
  • img_prefix = data_root + 'VOC2007/'等

说明:N表示分类类别,不包含背景,2.x版本中都不需要+1

(可选)修改输入图片大小
位置:mmdetection/configs/__base __/datasets/voc0712.py
操作:img_scale=(1000, 600)
说明:如果电脑跑不动,可以改小一点

2.1修改标签1
位置:mmdetection/mmdet/core/evaluation/class_names.py
操作:根据格式修改标签即可,以VOC为例
说明:mmdetection训练自己的模型_第1张图片
2.2修改标签2
位置:mmdetection/mmdet/datasets/voc.py
操作:改成自己的标签,只有一个类别时,要以逗号结尾,否则会报错
说明:mmdetection训练自己的模型_第2张图片

3.训练
位置:mmdetection/tools/train.py

python tools/train.py configs/foveabox/fovea_r50_fpn_4gpu_1x.py --gpus 1 --work-dir mmdetection/train_logs/ 

说明:
1)python tools/train.py [使用的模型] --gpus [gpu个数] --work-dir [训练结果保存地址]
2)faster_rcnn_r50_fpn_1x_coco.py是训练了12个epochs,2x是训练了24个epochs
3)faster_rcnn_r50_fpn_1x_coco.py里面checkpoint_config = dict(interval=1)表示训练一次保存一个模型
4)faster_rcnn_r50_fpn_1x_coco.py里面log_config = dict(interval=50,…)表示训练50次保存一个日志
5)断点训练

 python tools/train.py configs/foveabox/fovea_r50_fpn_4gpu_1x.py --resume-from work_dirs/fovea_r50_fpn_4gpu_1x/epoch_9.pth

–resume-from: 加载模型权重和优化器状态,训练会从上个epoch继续训练,通常用于训练意外中断的情况。
–load-from:只加载模型权重,训练会从epoch_0开始,通常用于微调

可视化训练过程
位置:mmdetection/tools/analyze_logs.py
说明:python tools/analysis_tools/analyze_logs.py [绘制曲线] [日志目录] --keys [绘制的变量] --out [输出格式]

 python tools/analysis_tools/analyze_logs.py plot_curve work_dirs/fovea_r50_fpn_4gpu_1x/20210602_224220.log.json --keys acc --out out.jpg

检测结果
位置:mmdetection/
说明:展示检测图片

 python tools/test.py work_dirs/fovea_r50_fpn_4gpu_1x/fovea_r50_fpn_4gpu_1x.py work_dirs/fovea_r50_fpn_4gpu_1x/epoch_24.pth  --show

获取评估值
位置:mmdetection/
说明:获得mAP

python tools/test.py work_dirs/fovea_r50_fpn_4gpu_1x/fovea_r50_fpn_4gpu_1x.py work_dirs/fovea+iff_r50_fpn_4gpu_1x_simple/epoch_24.pth --eval mAP

你可能感兴趣的:(目标检测,深度学习,pytorch,神经网络)