mmdetection2 config详解
官方文档config详情:https://mmdetection.readthedocs.io/en/latest/tutorials/config.html
1、配置文件结构
在config/_base_
文件夹下面总共有4个基础的组件,它们分别是:dataset、model、schedule、default_runtime。
2、配置文件命名风格
1 | {model}_[model setting]_{backbone}_{neck}_[norm setting]_[misc]_[gpu x batch_per_gpu]_{schedule}_{dataset} |
{xxx}
是必选项,[yyy]
是可选项
{model}
:模型的类型 ,例如faster_rcnn
、mask_rcnn
等等.[model setting]
: 给模型一些指定设置, 例如without_semantic for htc
、moment for reppoints
等等.{backbone}
: backbone 的类型r50
(ResNet-50),x101
(ResNeXt-101)。(相当于特征提取网络){neck}
: neck 的类型选择,例如fpn
,pafpn
,nasfpn
,c4
.[norm_setting]
: 如果没有指定,那就默认为bn
(Batch Normalization) , 还有其他可选的norm layer类型,比如gn
(Group Normalization)、syncbn
(Synchronized Batch Normalization).gn-head
/gn-neck
表示 GN 仅仅被用在head/neck模块上, gn-all 表示 GN 被用在整个模型上, 例如:backbone, neck, head这些模块。[misc]
: 一些比较杂的模型设置或者插件,例如dconv
,gcb
,attention
,albu
,mstrain
.[gpu x batch_per_gpu]
: GPU的个数以及每块GPU上的batch size大小,默认为8*2
(8块GPU,每块GPU上2个batch size,相当于batch size为16)。{schedule}
: 训练的 schedule, 可选择的有1x
,2x
,20e
等等.1x
和2x
分别表示 12 个epochs 和 24个epochs。 20e 被用在 cascade models中,它表示20个epochs. 对于1x/2x而言, 初始的学习率分别在第8/16个epeochs和第11/22个epochs以10的倍率递减。对于20e
而言,初始的学习率在第16个epeochs和第19个epochs以10的倍率。{dataset}
: 数据集有coco
,cityscapes
,voc_0712
,wider_face
这些选项。
3、faster_rcnn_r50_fpn_2x.py
首先介绍一下这个配置文件所描述的框架,它是基于resnet50的backbone,有着5个fpn特征层的faster-RCNN目标检测网络,训练迭代次数为标准的24次epoch。
1 | # 模型配置 |
4、cascade_rcnn_r50_fpn_2x.py
cascade-RCNN是cvpr2018的文章,相比于faster-RCNN的改进主要在于其RCNN有三个stage,这三个stage逐级refine检测的结果,使得结果达到更高的精度。
1 | model = dict( |
5、服务器运行以及可视化
参数修改
1 | #训练自己的COCO数据集,需要自己修改的地方有num_classes、data_root、classes(全部都要) |
服务器运行(举例)
1 | #服务器运行命令,--gpu-ids哪块GPU运行,运行前nvidia-smi查看哪块gpu空闲 |
tensorboard可视化
1 | #服务器在根目录运行 |