接上一篇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
文件夹下,对应使用的图像名
后续主要研究不同实例分割网络在同样数据集中的表现