1.配置数据集
在mmdetection文件下新建data文件夹,并按以下格式配置数据集
2.在configs文件夹下选择训练模型,并修改参数配置
——以cascade rcnn 为例
1.修改:mmdetection/configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py
_base_ = [
'../_base_/models/cascade_rcnn_r50_fpn.py',
'../_base_/datasets/coco_detection.py',
'../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
]
改:
_base_ = [
'../_base_/models/cascade_rcnn_r50_fpn.py',
'../_base_/datasets/voc0712.py',
'../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
]
2.修改:mmdetection/configs/_base_/datasets/voc712.py
找到,并注释掉一句voc2012
data = dict(
samples_per_gpu=2,
workers_per_gpu=2,
train=dict(
type='RepeatDataset',
times=3,
dataset=dict(
type=dataset_type,
ann_file=[
data_root + 'VOC2007/ImageSets/Main/trainval.txt',
#data_root + 'VOC2012/ImageSets/Main/trainval.txt'
], # 把含有VOC2012的路径去掉
img_prefix=[data_root + 'VOC2007/', data_root + 'VOC2012/'],
pipeline=train_pipeline)),
找到img_scale参数,设置训练图片大小,共两处
3.修改:mmdetection/configs/_base_/models/cascade_rcnn_r50_fpn.py
num_classes的值,一共三处,分别修改。
根据自己的分类的个数,不需要考虑背景,
如果想换预训练模型
model = dict(
type='CascadeRCNN',
backbone=dict(
type='ResNet',
depth=50,
num_stages=4,
out_indices=(0, 1, 2, 3),
frozen_stages=1,
norm_cfg=dict(type='BN', requires_grad=True),
norm_eval=True,
style='pytorch',
init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50')),可换resnet101等
4.修改:mmdetection/mmdet/core/evaluation/class_names.py
def voc_classes():
return [
'aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat',
'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person',
'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor'
]#对应换成自己标签。
def voc_classes():
return ['lf', ]#只有一类,后面需加逗号
5.修改:mmdetection/mmdet/datasets/voc.py
class VOCDataset(XMLDataset):
CLASSES = ('aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car',
'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse',
'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train',
'tvmonitor')
修改同上
6.修改:mmdetection/configs/_base_/schedules/schedule_1x.py
训练轮数修改:runner = dict(type='EpochBasedRunner', max_epochs=12),max_epochs训练总轮数
3.重新编译mmdetection
终端激活mmdetection环境,cd到mmdetection目录下
pip install -v -e .
4.开始训练
python tools/train.py ./configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py
python tools/train.py ./configs/cascade_rcnn/cascade_rcnn_r101_fpn_1x_coco.py
断点续训:
python tools/train.py configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py --auto-resume 自动加载最后一轮训练权重
python tools/train.py configs/cascade_rcnn/cascade_rcnn_r50_fpn_1x_coco.py --resume-from H:\installation\python_download\mmdetection-2.26.0\work_dirs\cascade_rcnn_r50_fpn_1x_coco\epoch_12.pth