mmdetection训练自己的数据集

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值