用coco转换代码将数据集转换成coco类型(即生成一个json文件,其中包含掩膜照片的信息,所以训练时不需要掩膜照片)
pip install cpython
pip install git
pip install git+https://github.com/waspinator/pycococreator.git
(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)]
,据说也是为了验证。
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