使用mmdetection训练自己voc格式的数据集

这篇博客详细介绍了如何使用SSD300模型训练自定义的VOC格式数据集。主要步骤包括修改配置文件(如`voc0712.py`和`xml_style.py`)以适配数据集路径,调整类别数和batch size,以及修改学习率策略。此外,还涉及到了处理PNG图像格式和计算mAP时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面的例子是使用ssd300训练自己的数据集(voc格式)

一、configs/base/datasets/voc0712.py

  • 修改data_root为自己数据集的root
  • 所有的img_prefix, 都修改为data_root,不需要加’2007’或者’2012’,这里不修改也可以,需要把自己的数据放到一个叫2007或者2012的文件夹中。修改之后,就可以随意的放置自己的数据集了。
  • mmdet/datasets/xml_style.py 中,需要使用self.img_prefix来找到xml正确的路径,进而解析xml,因此img_prefix = data_root需要这样修改。
  • type=‘RepeatDataset’ 是方便增加数据集,如果是新增加的数据,可以写成这种形式 ann_file = [a, b], img_prefix = [a, b]
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 + '/ImageSets/Main/train.txt',
            img_prefix = data_root,
            pipeline=train_pipeline)),

    val=dict(
        type=dataset_type,
        ann_file=data_root + '/ImageSets/Main/test.txt',
        img_prefix=data_root,
        pipeline=test_pipeline),
    test=dict(
        type=dataset_type,
        ann_file=data_root + '/ImageSets/Main/test.txt',
        img_prefix=data_root,
        pipeline=test_pipeline))

二、configs/pascal_voc/ssd300_voc0712.py

  • 第7行 : 修改num_classes成自己的类别数,如果是一个类别,需要写成CLASSES = (person,),否则会出现 “AssertionError: CLASSES in RepeatDatasetshould be a tuple of str.Add comma if number of classes is 1 as CLASSES = (person,)” 的错误。
  • 第49行:修改samples_per_gpu,就是设置batch_size
  • 第56行:修改optmizer的学习率大小,以及学习率策略

三、mmdet/datasets/voc.py 中 :

  • CLASSES 改为自己的类别

  • 由于在第一步中,我们舍弃了2007或者2012,因此这里的代码需要修改一下,25、26行的 代码直接不要,这样会把数据集img_prefix限制在2007或者2008

else:
raise ValueError('Cannot infer dataset year from img_prefix')

3、计算mAP的时候直接使用’voc07’

6669的代码
 if self.year == 2007:
    ds_name = 'voc07'
 else:
    ds_name = self.CLASSES

直接改为:
ds_name = 'voc07'

四、mmdet/core/evaluation/class_names.py

voc_classes() 改为自己的类别名字

五、如果自己的数据集是png文件,如何修改

在/mmdet/datasets/xml_style.py 51行 .jpg 可以改为.png

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值