使用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

仙女修炼史

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

暂无评论

发表评论

相关推荐

YOLOV1论文详解

YOLOV1 1. Introduction YOLO非常简单:对于一张完整的图像,通过一个单一的卷积网络可以同时预测多个bounding boxes的回归参数和这些boxes的类别概率,并直接优化检

【darknet】1、yolov4模型训练之数据处理

本文主要写了使用yolov4进行模型训练前的数据准备。darknet框架使用的数据格式是yolo格式,但我们常见的目标检测数据格式是COCO和VOC.所以本文将以车辆检测为例,将coco2017和voc2007及vo