mmdetection3.x如何用自己的数据集进行训练

文章详细介绍了如何在已安装的mmdetection环境中配置并使用convnext-v2模型进行mask-rcnn的训练。步骤包括验证安装、更改预训练权重路径、调整图像分辨率、设置训练参数、修改数据集路径及类别数,并提供了相应的代码片段来指导操作。
摘要由CSDN通过智能技术生成

1.前提(已经安装好mmdetection以及相关环境)

(1)验证mmdetection是否安装完毕:

python demo/image_demo.py demo/demo.jpg rtmdet_tiny_8xb32-300e_coco.py --weights rtmdet_tiny_8xb32-300e_coco_20220902_112414-78e30dcc.pth --device cpu

(2)运行结果:

2.如何配置训练环境(本文以mmdetection-3.x中convnext-v2作为演示)

(1)阅读config(D:\mmdetection-main\projects\ConvNeXt-V2\configs\mask-rcnn_convnext-v2-b_fpn_lsj-3x-fcmae_coco.py)中的base:maskrcnn-r50(网络模型),coco(数据集),schedule(学习率参数等),default_runtime

打开每个.py文件:

(2)更改部分参数:

注:需要安装mmpretrain

更改1:下载预训练权重:(下载到根目录下,然后更改路径)

        更改前:

checkpoint_file = 'https://download.openmmlab.com/mmclassification/v0/convnext-v2/convnext-v2-base_3rdparty-fcmae_in1k_20230104-8a798eaf.pth'

        更改后:

checkpoint_file = r'D:\mmdetection-main\convnext-v2-base_3rdparty-fcmae_in1k_20230104-8a798eaf.pth' 

更改2: image_size 为自己的图像分辨率,如:

image_size = (512, 512)

更改3:train_dataloader中的batch_size和num_workers的数量(根据电脑的显卡配置和显存容量配置,本文设置为2,2)

train_dataloader = dict(
    batch_size=2,  # total_batch_size 32 = 8 GPUS x 4 images
    num_workers=2,
    dataset=dict(pipeline=train_pipeline))

更改4:打开mask-rcnn_r50_fpn.py文件,将其中的num_classes=X,改为自己数据集中的X个类

第一处: 

第二处:

更改5:打开coco_instance.py文件,重写scale为自己数据集的分辨率

更改6:训练数据换成自己的数据集地址

train_dataloader = dict(
    batch_size=2,
    num_workers=2,
    persistent_workers=True,
    sampler=dict(type='DefaultSampler', shuffle=True),
    batch_sampler=dict(type='AspectRatioBatchSampler'),
    dataset=dict(
        type=dataset_type,
        #data_root=data_root,
        #ann_file='annotations/instances_train2017.json',
        ann_file=r'E:\mmdetection-main\jyzData\coco\annotations\instances_train2017.json',#!!!
        data_prefix=dict(img=r'E:\mmdetection-main\jyzData\coco\images\train2017/'),#!!!
        filter_cfg=dict(filter_empty_gt=True, min_size=32),
        pipeline=train_pipeline,
        backend_args=backend_args))

val_dataloader = dict(
    batch_size=1,
    num_workers=2,
    persistent_workers=True,
    drop_last=False,
    sampler=dict(type='DefaultSampler', shuffle=False),
    dataset=dict(
        type=dataset_type,
        #data_root=data_root,
        ann_file=r'E:\mmdetection-main\jyzData\coco\annotations\instances_val2017.json',#!!!
        data_prefix=dict(img=r'E:\mmdetection-main\jyzData\coco\images\val2017/'),#!!!
        test_mode=True,
        pipeline=test_pipeline,
        backend_args=backend_args))
test_dataloader = val_dataloader

val_evaluator = dict(
    type='CocoMetric',
    #ann_file=data_root + 'annotations/instances_val2017.json',
    ann_file=r'E:\mmdetection-main\jyzData\coco\annotations\instances_val2017.json',#!!!
    metric=['bbox', 'segm'],
    format_only=False,
    backend_args=backend_args)
test_evaluator = val_evaluator

# inference on test dataset and
# format the output results for submission.
test_dataloader = dict(
    batch_size=1,
    num_workers=2,
    persistent_workers=True,
    drop_last=False,
    sampler=dict(type='DefaultSampler', shuffle=False),
    dataset=dict(
        type=dataset_type,
        #data_root=data_root,
        ann_file=r'E:\mmdetection-main\jyzData\coco\annotations\instances_val2017.json',#!!!
        data_prefix=dict(img=r'E:\mmdetection-main\jyzData\coco\images\val2017/'),#!!!
        test_mode=True,
        pipeline=test_pipeline))
test_evaluator = dict(
    type='CocoMetric',
    metric=['bbox', 'segm'],
    format_only=True,
    ann_file=r'E:\mmdetection-main\jyzData\coco\annotations\instances_val2017.json',#!!!
    outfile_prefix='./work_dirs/coco_instance/test')#!!!

 更改7:打开D:\mmdetection-main\mmdet\datasets\coco.py文件,更改类

METAINFO = {
        'classes':
        ('jyz', 'jyzB'),#更改
        # palette is a list of color tuples, which is used for visualization.
        'palette':
        [(220, 20, 60), (119, 11, 32)]
    }

更改8:开始训练

python E:\mmdetection-main\tools\train.py E:\mmdetection-main\projects\ConvNeXt-V2\configs\mask-rcnn_convnext-v2-b_fpn_lsj-3x-fcmae_coco.py

一切完成,开始训练:

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被欺骗的人工智能猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值