用mmdetection跑通Mask-RCNN

数据准备工作

  1. 原始数据分两个文件夹,images(彩色图片)、mask(掩膜照片,一定要转换成灰度图
  2. images的名字若为“ABC.jpg”,mask里的掩膜照片应该这样命名“ABC_type_num.png”(这里的type是训练集的分类,我这里只有一种分类‘polyp’,一般从数据集json文件里的label就可以看到分类;num是从0开始的序列0, 1, …)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

生成coco数据集

用coco转换代码将数据集转换成coco类型(即生成一个json文件,其中包含掩膜照片的信息,所以训练时不需要掩膜照片)

  1. 首先安装pycocotools,https://pypi.org/project/pycocotools/#files 下载文件pip安装
  2. 安装cpython pip install cpython
  3. 安装git pip install git
  4. 安装pycococreator,
pip install git+https://github.com/waspinator/pycococreator.git
  1. 数据集放置及代码设置如下,程序路径分train、val、test三次运行,即可,其中annotations放置的是掩膜照片。运行三次会生成三个json文件,文件名改成下图所示。
    在这里插入图片描述

运行mmdetection代码

  1. 将转换好的coco格式文件如下放在mmdetection文件夹中
  2. 新建一个data/coco文件夹,如下图再创建四个文件夹,其中annotations文件夹下放置上步生成的三个json文件,剩下三个文件夹放置训练、验证、测试所用的彩色照片
    在这里插入图片描述
  3. 代码修改

(1)datasets/coco.py修改成自己的分类,如下图,只有一个分类的时候别忘了逗号

在这里插入图片描述(2)mmdet/core/evaluation/class_names.py修改成自己的分类,如下图
在这里插入图片描述 (3)configs/base/models/mask_rcnn_r50_fpn.py修改num_classes的值为分类的数量(千万不要+1),我这里是改成1,有的模型是有四个num_classes,四个全都要改,可以用Ctrl+F查找一下。
在这里插入图片描述
在这里插入图片描述
(4) 补充:首先查看自己的配置文件,2.7版本和网上有的教程不一样,配置文件只有如下信息
在这里插入图片描述

从图中可以看出我们的配置文件分为四个部分,我们需要分别打开,修改其中信息
在这里插入图片描述
(4.1) 修改./configs_base_\dataset\coco_instance.py 在train_pipeline和test_pipeline中间添加val_pipeline(据说是添加验证步骤,具体有没有用我还不清楚,但是不会报错)

val_pipeline =[
dict(type='LoadImageFromFile'),
dict(type='LoadAnnotations', with_bbox=True),
dict(type='Resize', img_scale=(1333, 800), keep_ratio=True),
dict(type='RandomFlip', flip_ratio=0.5),
dict(type='Normalize', **img_norm_cfg),
dict(type='Pad',size_divisor=32),
dict(type='DefaultFormatBundle'),
dict(type='Collect',keys=['img', 'gt_bboxes', 'gt_labels']),
]

在这里插入图片描述

(4.2) 然后在configs_base_\schedules\schedule_1x.py中修改epoch和学习率(原文件是8个GPU学习率是0.02,我这只有1个GPU所以是0.02/8=0.0025)
在这里插入图片描述

(4.3) 最后修改configs_base_\default_runtime.py
首先第一行修改成checkpoint_config = dict(create_symlink=False),避免FileNotFoundError: [Errno 2] No such file or directory: ‘epoch_1.pth’ 这个错误。
然后取消第八行的注释,这是为了可以在训练以后通过tensorboard查看训练结果。
最后在最后一行修改成workflow = [('train', 1), ('val', 1)],据说也是为了验证。
在这里插入图片描述

  1. 运行代码(后面路径部分根据自己想要的模型来写)
python tools/train.py configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py
python tools/test.py configs/mask_rcnn/mask_rcnn_r50_fpn_1x_coco.py work_dirs/mask_rcnn_r50_fpn_1x_coco/latest.pth --eval bbox segm
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值