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类
训练
求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文件就可以了。)
- load_from是加载模型的路径,None表示从预训练模型加载(pretrained参数会下载一个预训练模型)
-
如果修改 gn、ws、ohem
需要注意 cascade rcnn 有三条路,所以要加三次 -
其他
- mstrain
img_scale=[(1280, 360), (1280, 720)],
- mstrain