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

下面的例子是使用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

版权声明:本文为CSDN博主「仙女修炼史」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45209433/article/details/121749590

仙女修炼史

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐