解包后config文件中的各参数含义

model = dict(
    type='ImageClassifier',                 # 图像分类器
    backbone=dict(
        type='ResNet',        # 骨干网络resnet
        depth=18,
        num_stages=4,
        out_indices=(3, ),      # 从底层到深层,分别为0,1,2,3,这里的分类任务,默认使用最后一层的特征图
        # 可以自己指定将哪一个stage的结果作为输出,从而进行想要的特征融合
        style='pytorch'),
    neck=dict(type='GlobalAveragePooling'),  # 能将不同尺寸的输入图片,通过卷积,最后平均池化得到同样大小的尺寸
    head=dict(
        type='LinearClsHead',
        num_classes=5,  # 想要输出的分类类别
        in_channels=512,  # 出来的neck的特征图channel,按设计的网络来
        loss=dict(type='CrossEntropyLoss', loss_weight=1.0),
        topk=(1, 5)))
dataset_type = 'CustomDataset'  # 这里的类别为用户自定义数据集
img_norm_cfg = dict(
    mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375], to_rgb=True)  # 数据集的均值和标准差
train_pipeline = [
    dict(type='LoadImageFromFile'),             # 读数据文件
    dict(type='RandomResizedCrop', size=224),   # 随机裁剪,增加数据的多样性
    dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),  #随机翻转
    dict(
        type='Normalize',  # 归一化,相比于原config,进行了解包
        mean=[123.675, 116.28, 103.53],
        std=[58.395, 57.12, 57.375],
        to_rgb=True),
    dict(type='ImageToTensor', keys=['img']),   # 将图像转为tensor
    dict(type='ToTensor', keys=['gt_label']),   # 将label转为tensor
    dict(type='Collect', keys=['img', 'gt_label'])  # 遍历dataloader时要返回的东西
]
test_pipeline = [
    dict(type='LoadImageFromFile'),
    dict(type='Resize', size=(256, -1)),
    dict(type='CenterCrop', crop_size=224),
    dict(
        type='Normalize',
        mean=[123.675, 116.28, 103.53],
        std=[58.395, 57.12, 57.375],
        to_rgb=True),
    dict(type='ImageToTensor', keys=['img']),
    dict(type='Collect', keys=['img'])
]
data = dict(
    samples_per_gpu=32,  # 每张卡的batchsize(如果显存不够了,需要更改这个值,或者改上面的裁剪大小)
    workers_per_gpu=2,
    train=dict(
        type='CustomDataset',  # 用户自定义数据集类别
        data_prefix='G:\\github-projects\\deep-learning-for-image-processing\\data_set\\flower_data\\train',  # 方式1:默认以文件夹名字作为类别
        pipeline=[                          # 进行了解包,将train_pipline做了替换
            dict(type='LoadImageFromFile'),
            dict(type='RandomResizedCrop', size=224),
            dict(type='RandomFlip', flip_prob=0.5, direction='horizontal'),
            dict(
                type='Normalize',
                mean=[123.675, 116.28, 103.53],
                std=[58.395, 57.12, 57.375],
                to_rgb=True),
            dict(type='ImageToTensor', keys=['img']),
            dict(type='ToTensor', keys=['gt_label']),
            dict(type='Collect', keys=['img', 'gt_label'])
        ]),
    val=dict(
        type='CustomDataset',  # 用户自定义数据集类别
        data_prefix='G:\\github-projects\\deep-learning-for-image-processing\\data_set\\flower_data\\val',
        # ann_file='data/imagenet/meta/val.txt',  # 方式2:以路径所在标签文件确定类别
        pipeline=[
            dict(type='LoadImageFromFile'),
            dict(type='Resize', size=(256, -1)),
            dict(type='CenterCrop', crop_size=224),
            dict(
                type='Normalize',
                mean=[123.675, 116.28, 103.53],
                std=[58.395, 57.12, 57.375],
                to_rgb=True),
            dict(type='ImageToTensor', keys=['img']),
            dict(type='Collect', keys=['img'])
        ]),
    test=dict(
        type='CustomDataset',  # 用户自定义数据集类别
        data_prefix='G:\\github-projects\\deep-learning-for-image-processing\\data_set\\flower_data\\val',
        # ann_file='data/imagenet/meta/val.txt',
        pipeline=[
            dict(type='LoadImageFromFile'),
            dict(type='Resize', size=(256, -1)),
            dict(type='CenterCrop', crop_size=224),
            dict(
                type='Normalize',
                mean=[123.675, 116.28, 103.53],
                std=[58.395, 57.12, 57.375],
                to_rgb=True),
            dict(type='ImageToTensor', keys=['img']),
            dict(type='Collect', keys=['img'])
        ]))
evaluation = dict(interval=1, metric='accuracy')  # 每迭代一个epoch或迭代次数,走一遍验证集
optimizer = dict(type='SGD', lr=0.1, momentum=0.9, weight_decay=0.0001)  # 学习率可以调
optimizer_config = dict(grad_clip=None)                                  # 别改了,不懂
lr_config = dict(policy='step', step=[30, 60, 90])                       # 每迭代30次(epoch),进行一次衰减,每60次,每90次
runner = dict(type='EpochBasedRunner', max_epochs=100)  # 确定训练时以(epoch)为单位,设置最大轮数
checkpoint_config = dict(interval=20)                   # 每间隔20(epoch),进行一次保存
log_config = dict(interval=100, hooks=[dict(type='TextLoggerHook')])  # 间隔100(epoch)记录一次日志
dist_params = dict(backend='nccl')
log_level = 'INFO'
load_from = None  # 从哪里加载模型,这个参数的设置还没有理解
# resume_from = None  # 从上一个保存的模型接续训练(字符串路径吗????)
resume_from = 'G:\\github-projects\\mmclassification-master\\tools\\work_dirs\\w_2022_11_2_resnet18_8xb32_in1k\\latest.pth'  
# 从最后一次保存的模型开始接续训练
workflow = [('train', 1)]  # 单卡
work_dir = './work_dirs\w_2022_11_2_resnet18_8xb32_in1k'
gpu_ids = [0]  # 保持这种形式,用cpu也可以跑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值