MMDetection3.0训练自建数据集(ubuntu20.04 + miniconda)

MMDetection3.0训练自建数据集

接上一篇MMDetection3.0环境配置(ubuntu20.04 + miniconda)
为了更好地对比,当然还是使用自己的数据集最真实
如果你和我的想法一样,那么我觉得这件事情,泰酷辣

准备数据集

将数据集转成coco的数据格式,目录结构如下
不清楚怎么转coco数据格式的可以先移步搜索引擎,转好再回来

data
└── coco
    ├── annotations
    │   ├── instances_train2017.json
    │   └── instances_val2017.json
    └── images
        ├── test2017
        ├── train2017
        └── val2017

增加配置文件

新建模型配置文件,例如在 configs/solov2/ 文件夹中新建 xsolov2.py ,添加代码如下

# 首先继承希望使用的模型
# 新配置继承基本配置,做必要的修改
_base_ = '../solov2/solov2_r50_fpn_1x_coco.py'

# 更改 head 中的 num_classes 以匹配数据集中的类别数
# 不同模型的 num_classes 位置可能不同,需要对应修改
model = dict(mask_head=dict(num_classes=3))
# 不同模型的 num_classes 位置可能不同,需要对应修改
# maskrcnn如下
# model = dict(roi_head=dict(bbox_head=dict(num_classes=1), mask_head=dict(num_classes=1)))

# 修改数据集相关配置
dataset_type = 'CocoDataset'
# 数据集目录
data_root = 'data/coco/'
metainfo = {
    'classes': ('a', 'b', 'c'),
    'palette': [
        (220, 20, 60), (100, 20, 60), (220, 20, 100),
    ]
}
# 训练集路径
train_dataloader = dict(
    batch_size=1,
    dataset=dict(
        data_root=data_root,
        metainfo=metainfo,
        ann_file='annotations/instances_train2017.json',
        data_prefix=dict(img='train2017/')))
# 验证集路径
val_dataloader = dict(
    dataset=dict(
        data_root=data_root,
        metainfo=metainfo,
        ann_file='annotations/instances_val2017.json',
        data_prefix=dict(img='val2017/')))
test_dataloader = val_dataloader

# 修改评价指标相关配置
val_evaluator = dict(ann_file=data_root + 'annotations/instances_val2017.json')
test_evaluator = val_evaluator

训练数据集

打开终端,进入虚拟环境中运行代码

python tools/train.py configs/solov2/xsolov2.py

默认训练 epoches = 12 ,可以在 configs/_base_/schedules/schedule_1x.py 文件中更改,或者直接新建训练计划然后更改对应继承文件名,感兴趣的可以研究下

测试权重

./work_dirs/xsolov2 文件夹下挑选希望使用的权重文件,例如 epoch_12.pth

打开终端运行

# 默认使用GPU,或者更改最后项的参数 --device cuda:0
python demo/image_demo.py demo/demo.jpg configs/solov2/xsolov2.py --weights work_dirs/xsolov2/epoch_12.pth --device cpu

输出的可视化图像在 outputs/vis 文件夹下,对应使用的图像名

后续主要研究不同实例分割网络在同样数据集中的表现

你可能感兴趣的:(python,计算机视觉,深度学习)