MMDetection训练自定义的数据集

前言

因为培养计划等原因,最近在一家机器视觉公司实习,目前在使用MMDetection框架,想先试着用Mask-RCNN进行自定义(公司的)数据集训练,记录一下训练的流程。

一、数据集制作

我用的是labelme。首先conda激活一个环境(假设是openmmlab),pip install labelme,安装完成后在该环境内启动(直接输入 labelme)。具体标注数据集的方法略过,比较简单且网上教程很友好。标注好后会生成json文件,需要转换成coco或者voc文件,不过训练的话得转换成COCO数据集或者VOC数据集,具体方法参考以下:
1.划分数据集验证集,不过图片不能自动保存
2. 官方转COCO数据集链接
3.官方转VOC数据集链接
4.下次做数据集的时候试试他的方法
5.标注实例分割数据集时的一个注意事项

二、MMdetection训练部分

官网自定义数据集方法
因为初学,还是在模仿阶段。参考官网训练自定义的气球数据集,先在configs文件夹内创建配置文件家box_img,里面创建py文件,文件命名按照格式来,也可以自定义,舒服就行。代码如下:
在这里插入图片描述

# 官方文档里的配置代码
# 新配置继承了基本配置,并做了必要的修改
# 不同数据集他继承的文件也不一样
_base_ = '../mask_rcnn/mask-rcnn_r101_fpn_2x_coco.py'

# 我们还需要更改 head 中的 num_classes 以匹配数据集中的类别数
model = dict(
    roi_head=dict(
        bbox_head=dict(num_classes=1), mask_head=dict(num_classes=1)))

# 修改数据集相关配置
data_root = '../data/box_img/'
metainfo = {
    
    
    'classes': ('box', ),
    'palette': [
        (220, 20, 60),
    ]
}
# 根据自己放数据集的位置进行修改
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

# 使用预训练的 Mask R-CNN 模型权重来做初始化,可以提高模型性能 他会下载到一个cache文件夹内,不知道在哪里改,强迫症犯了
load_from = 'https://download.openmmlab.com/mmdetection/v2.0/mask_rcnn/mask_rcnn_r101_fpn_2x_coco/mask_rcnn_r101_fpn_2x_coco_bbox_mAP-0.408__segm_mAP-0.366_20200505_071027-14b391c7.pth'

之后,就可以运行train.py了,加几个必要的参数就行,其余不用改。
在这里插入图片描述
启动训练后,会在output/boxImg_maskRCNN_101那创建一个以时间命名的文件夹以及一个更详细的配置文件,也就是下图中的py文件(epoch是我最后训练过程中生成的,按理现在还没有)
在这里插入图片描述
之后在这个文件中,对模型进行进一步的修改,比如说每隔多少个epoch保存一下,日志保存的间隔是多少等。修改完后,把train配置里的py文件,改为上面这个,重新运行train.py文件,开始训练。

三、测试部分

没太多好讲的,test.py里面还是挺详细,按照格式来添加配置项就行了
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/dashenfeng1/article/details/131825633