【mmdetection】SSD训练自己的VOC数据集注意事项

一、修改voc.py和class_names.py

 ./mmdet/datasets/voc.py 【mmdetection】SSD训练自己的VOC数据集注意事项_第1张图片

此处代码改为自己数据集的类别,以及./mmdet/core/evaluation/class_names.py【mmdetection】SSD训练自己的VOC数据集注意事项_第2张图片

也需要将类别改为自己的数据集的类别。

【注意】修改完voc.py和class_names.py之后,需要重新编译一下,cd进入mmdetection文件夹,输入

python setup.py install

至此,适合自己的voc数据集格式修改好了。

二、修改配置文件config

 config文件夹中主要有_base_和各个目标检测框架的文件夹。

2.1、修改目标检测框架代码

在训练以及测试时使用的是对应目标检测框架下的程序,以SSD为例,如下图所示:

【mmdetection】SSD训练自己的VOC数据集注意事项_第3张图片

 先复制一份代码,比如ssd300_coco.py,并按照自己的习惯命名即可。

进入代码,可以将除了_base_的部分都删去,这度利配置文件的补充,因为原代码里用的coco格式的,所以最后注释掉,并且 '../_base_/datasets/coco_detection.py'改为'../_base_/datasets/voc0712.py’,schedule_1x.py和default_runtime.py在此处不用修改,修改源文件。

可得结果为:

_base_ = [
    '../_base_/models/ssd300_myself.py', '../_base_/datasets/voc0712.py',
    '../_base_/schedules/schedule_2x.py', '../_base_/default_runtime.py'

关于这四个文件的修改在2.2中讲解。

2.2、修改_base_内的文件

_base_的目录如下所示:

【mmdetection】SSD训练自己的VOC数据集注意事项_第4张图片

 分别对应了2.1中的四个文件。

2.2.1、datasets

datasets为数据处理的部分,本处使用的是voc数据集,故打开voc0712.py。在train_pipeline = [ ]和test_pipeline=[ ]字典中,修改Resize,改为如下:

dict(type='Resize', img_scale=(300, 300), keep_ratio=False)

img_scale=(300,300),keep_ratio=False否则在计算时会有报错,因为SSD是和输入图片尺寸有关系的框架。

2.2.2 、models

复制一个ssd.py重新命名,将num_class改为自己数据集的个数,如:

bbox_head=dict(
        type='SSDHead',
        in_channels=(512, 1024, 512, 256, 256, 256),
        num_classes=3,     # 此处为类别数

2.2.3、schedules

此文件夹为优化器和学习率的策略,根据自身需要修改即可。

2.2.4、default_runtime.py

这是默认的一些设置,如运行记录log等的格式,可以使用tensorboard,dict(type='TensorboardLoggerHook'),这一行取消注释即可。

值得一提的是,下面的代码为保存的.pth文件的间隔,根据需要进行修改。

checkpoint_config = dict(interval=10)    # 设置保存的间隔

三、训练与测试

训练命令行:

python ./tools/train.py configs/ssd/ssd300_myself.py --work-dir work_dirs/ssd300_myself

--work-dir参数为运行文件保存的位置

测试命令行:

python ./tools/test.py configs/ssd/ssd300_myself.py work_dirs/ssd300_myself/latest.pth --eval mAP

--eval mAP是评价标准为mAP。

你可能感兴趣的:(python,神经网络,机器学习)