MMseg1
MMseg教程(1)
配置文件的结构:
config:
├─ _base_
├ ├─datasets
├ ├─models
├ └─schedules
├─ unet
├─ upernet
├─ vit
├─ ...
config
文件夹下有各种模型的配置文件夹,各个模型配置文件夹下装有该模型的不同网络,在不同的数据集下的配置,由于配置有很多的相似部分,因此这些配置都继承于在_base_
文件夹下的基础配置文件
在 config/_base_
文件夹下面有4种基本组件类型: 数据集(dataset),模型(model),训练策略(schedule)和运行时的默认设置(default runtime)。许多模型都可以容易地通过组合这些组件进行实现,比如 DeepLabV3,PSPNet。使用 _base_
下的组件构建的配置信息叫做原始配置 (primitive)
对于同一个文件夹下的所有配置文件,建议只有一个对应的原始配置文件。所有其他的配置文件都应该继承自这个原始配置文件,从而保证每个配置文件的最大继承深度为 3
就是建议从现有的方法继承。例如,如果在 DeepLabV3 基础上进行了一些修改,用户可以先通过指定 _base_ = ../deeplabv3/deeplabv3_r50-d8_4xb2-40k_cityscapes-512x1024.py
继承基本的 DeepLabV3 结构,然后在配置文件中修改必要的字段
配置文件命名风格
遵循以下格式来命名配置文件
1 |
|
配置文件的文件名分为五个部分,组成文件名每一个部分和组件之间都用_
连接,每个部分或组件中的每个单词都要用-
连接。
{algorithm name}
: 算法的名称,如deeplabv3
,pspnet
等。{model component names}
: 算法中使用的组件名称,如主干(backbone)、解码头(head)等。例如,r50-d8
表示使用ResNet50主干网络,并使用主干网络的8倍下采样输出作为下一级的输入。{training settings}
: 训练时的参数设置,如batch size
、数据增强(augmentation)、损失函数(loss)、学习率调度器(learning rate scheduler)和训练轮数(epochs/iterations)。例如:4xb4-ce-linearlr-40K
意味着使用4个gpu,每个gpu4个图像,使用交叉熵损失函数(CrossEntropy),线性学习率调度程序,训练40K iterations。 一些缩写:{gpu x batch_per_gpu}
: GPU数量和每个GPU的样本数。bN
表示每个GPU的batch size为N,如8xb2
为8个gpu x 每个gpu2张图像的缩写。如果未提及,则默认使用4xb4
。{schedule}
: 训练计划,选项有20k
,40k
等。20k
和40k
分别表示20000次迭代(iterations)和40000次迭代(iterations)。
{training dataset information}
: 训练数据集名称,如cityscapes
,ade20k
等,以及输入分辨率。例如:cityscapes-768x768
表示使用cityscapes
数据集进行训练,输入分辨率为768x768
。{testing dataset information}
(可选): 测试数据集名称。当您的模型在一个数据集上训练但在另一个数据集上测试时,请将测试数据集名称添加到此处。如果没有这一部分,则意味着模型是在同一个数据集上进行训练和测试的
PSPNet 的一个例子
我们对使用ResNet50V1c作为主干网络的PSPNet的配置文件作简要说明。要了解更详细的用法和每个模块对应的替换方法,请参阅API文档。
1 |
|
其中_base_/models/pspnet_r50-d8.py
是使用ResNet50V1c作为主干网络的PSPNet的基本模型配置文件,详情配置去那个文件中详细查看
要加载和解析它们,我们可以使用MMEngine实现的Config。
1 |
|
1 |
|
cfg
是mmengine.config.Config
的一个实例。它的接口与dict对象相同,也允许将配置值作为属性访问。更多信息请参见MMEngine中的config tutorial。