下面的例子是使用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’
66到69的代码
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
暂无评论