水铝英石

MMClassification_MobileNetv2_2_config

默认看到这篇文章时已把自己的数据配置成ImageNet数据集格式,如果没有配置可以回到这篇文章(或者您已下载好ImageNet数据集)

下面开始配置config文件,众所周知,openmmlab是字典组成的,模型大概构成为以下结构

基本每个模型都是调用以上几个字典文件组成对应模型的字典,然后进行训练的,这些配置好的文件储存在configs文件夹下除了_base_的其他目录,本篇文章使用的MobileNetv2也是同理,如下图所示

不过建议,不要在原本的config下改,建议建立用户的config文件,以便后续更改,如上图该学渣在原config基础上建立了一个_user 后缀的config文件
下面开始更改

首先是models文件需要改分类数量,以及更改前n最大概率(因为只有5类,分完之后top5一定是100%,就只保留top1)上左图是base/models下的字典,右图是自己的config文件中更改内容,之后三个字典内容不再详述,下面列出代码,请自行在config中追加。

# model settings
model = dict(
head=dict(
num_classes=5, # 需要设定成自己的分类数量(比如我这就是5)
topk=(1,), # 只有五类,留最高几率够了
))

数据集更改部分,可适当调整samples_per_gpu和workers_per_gpu

# dataset settings
dataset_type = 'ImageNet'
data = dict(
    samples_per_gpu=16,
    workers_per_gpu=1,
    train=dict(
        type=dataset_type,
        data_prefix='data/cervical_biopsy/train',   # 数据集路径
        # ann_file='data/imagenet/meta/train.txt',            # 这玩意在训练集没必要,也没有
        classes='data/cervical_biopsy/classes.txt'      # 数据集标签的名称 (不改源码,的话必须换成自己的数据类文件,不然用imagenet的类文件搞事了)
        ),
    val=dict(
        type=dataset_type,
        data_prefix='data/cervical_biopsy/val',     # 测试集路径
        ann_file='data/cervical_biopsy/val.txt',        # 验证目录
        classes='data/cervical_biopsy/classes.txt'      # 数据集标签的名称
        ),
    test=dict(
        # replace `data/val` with `data/test` for standard test
        type=dataset_type,
        data_prefix='data/cervical_biopsy/test',
        # ann_file='data/cervical_biopsy/meta/test.txt',
        ann_file='data/cervical_biopsy/test.txt',
        classes='data/cervical_biopsy/classes.txt'      # 数据集标签的名称
        ))
evaluation = dict(metric_options={'topk':(1, )})  # 验证 需要改,因为不用top5了,改成top1

迭代部分,适当更改学习率策略和epoch

# optimizer
optimizer = dict(type='SGD', lr=0.01, momentum=0.9, weight_decay=0.0001)  # 修改学习率和动量信息
optimizer_config = dict(grad_clip=None)
# learning policy
lr_config = dict(policy='step', step=[12,26,40])  # 学习率下降策略,没必要这么多
runner = dict(type='EpochBasedRunner', max_epochs=44)  # epoch需要改

默认运行方式部分,如果下载预训练模型的话,可以在本文第二张图里的md文件中寻找预训练模型的下载,如果不想使用迁移学习,可以直接写None,此外目前(至少到0.11.0版本)openmmlab系列产品不会默认打开TensorBoard,在安装时requirements也没有安装TensorBoard,如果想使用,需要提前在环境里安装

# checkpoint saving
load_from = 'checkpoints/mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth'  # 放预训练模型路径,在动物园下载的pth
log_config = dict(
    interval=100,
    hooks=[
        dict(type='TextLoggerHook'),
        dict(type='TensorboardLoggerHook')
    ])

发表评论

邮箱地址不会被公开。 必填项已用*标注

滚动到顶部