【MMDetection 系列:二】详细步骤使用教程,如何修改来跑自己的数据集

MMDetection

我的理解

首先要 安装环境,conda create ,按照官网五步走,安装配置好 详细见教程
接着 修改configs 文件里面的配置文件,修改 num_class (类别+1)以及 work_dir 路径,以及 train 、validation、test 的data 路径

接着 制作数据,因为我的数据和 voc 很像,制成voc格式

mmdetection
├── mmdet
├── tools
├── configs
├── data
│ ├── voc2012
│ │ ├── train
│ │ │ ├── JPEGImages #图片
│ │ │ ├── Annotations #标注信息
│ │ ├── train.txt # 每一行是JPEGImages中图片文件名
│ │ ├── validation
│ │ │ ├── JPEGImages
│ │ │ ├── Annotations
│ │ ├── validation.txt
│ │ ├── test
│ │ │ ├── JPEGImages

│   │   ├── test.txt

然后修改 F:\mmdetection\mmdet\datasets\voc.py 中class ,改成自己数据的class类

【MMDetection 系列:二】详细步骤使用教程,如何修改来跑自己的数据集_第1张图片

训练

求AP

如果觉得效果不错了,可以 test 一下 得到show_result

config

需要改

  • num_class
    7+1=8 (类别数+ 1)

  • dataset

    dataset_type = ‘VOCDataset’
    data_root = ‘data/voc2012/’

    train val test 里面的 ann_file,img_prefix也要修改哦~~

  • ann_file、img_prefix

    ann_file=data_root + ‘train.txt’,
    img_prefix= data_root + ‘train/’,

    val 和 test 同理

  • epoch 50
    改成自己需要的 epoch,同时调整 lr

  • lr /8
    有两个地方需要修改,一个是 lr 值,lr 是八张卡lr,如果用1张卡 请 /8
    二是 两次修剪再哪一步,如果改了epoch,那么这里需要更改
    epoch 12 (8,11) → epoch 50 (38,48)
    在那个epoch 进行 变动 learning rate (两次精修)

    optimizer = dict(type=‘SGD’, lr=0.02/8, momentum=0.9, weight_decay=0.0001)
    lr_config = dict(
    policy=‘step’,
    warmup=‘linear’,
    warmup_iters=3665,
    warmup_ratio=1.0 / 80,
    step=[42, 48])
    total_epochs = 50

    如果是 2019.07.27 之后的版本
    lr 不需要 /8 ,因为作者在train.py 里写了
    cfg.optimizer[‘lr’] = cfg.optimizer[‘lr’] * cfg.gpus / 8

  • pretrain

    可以进行修改,选择自己需要的

    pretrained=‘modelzoo://resnet50’,

  • work_dir

    import os
    work_dir = os.path.basename(file)
    work_dir,ext = os.path.splitext(work_dir)
    work_dir=‘work_dirs/’+work_dir

  • load 、 resume

    load_from 和 resume_from 为’/work_dir/xxx/epoch_xxx.pth’

    • load_from是加载模型的路径,None表示从预训练模型加载(pretrained参数会下载一个预训练模型)
      (如果直接load作者已经训练好的模型,因为是在coco上训练的,直接load进来会有问题,所以load一般的vgg或者resnet的pth文件就可以了。)
【MMDetection 系列:二】详细步骤使用教程,如何修改来跑自己的数据集_第2张图片
  • 如果修改 gn、ws、ohem
    需要注意 cascade rcnn 有三条路,所以要加三次

  • 其他

    • mstrain
      img_scale=[(1280, 360), (1280, 720)],

你可能感兴趣的:(MMdetection)