MMPretrain 使用

MMPretrain

使用

list_models

列举所有可使用的模型

from mmpretrain import list_models
list_models(task="Image Classification", pattern="resnet")
['resnet101_8xb16_cifar10',
 'resnet101_8xb32_in1k',
 'resnet152_8xb16_cifar10',
 'resnet152_8xb32_in1k',
 'resnet18_8xb16_cifar10',
 'resnet18_8xb32_in1k',
 'resnet34_8xb16_cifar10',
 'resnet34_8xb32_in1k',
 'resnet50_8xb16_cifar10',
 'resnet50_8xb16_cifar100',
 'resnet50_8xb256-rsb-a1-600e_in1k',
 'resnet50_8xb256-rsb-a2-300e_in1k',
 'resnet50_8xb256-rsb-a3-100e_in1k',
 'resnet50_8xb32-fp16_in1k',
 'resnet50_8xb32_in1k',
 'resnet50_8xb8_cub',
 'resnet50_barlowtwins-pre_8xb32-linear-coslr-100e_in1k',
 'resnet50_byol-pre_8xb512-linear-coslr-90e_in1k',
 'resnet50_densecl-pre_8xb32-linear-steplr-100e_in1k',
 'resnet50_mocov2-pre_8xb32-linear-steplr-100e_in1k',
 'resnet50_mocov3-100e-pre_8xb128-linear-coslr-90e_in1k',
 'resnet50_mocov3-300e-pre_8xb128-linear-coslr-90e_in1k',
 'resnet50_mocov3-800e-pre_8xb128-linear-coslr-90e_in1k',
 'resnet50_simclr-200e-pre_8xb512-linear-coslr-90e_in1k',
 'resnet50_simclr-800e-pre_8xb512-linear-coslr-90e_in1k',
 'resnet50_simsiam-100e-pre_8xb512-linear-coslr-90e_in1k',
 'resnet50_simsiam-200e-pre_8xb512-linear-coslr-90e_in1k',
 'resnet50_swav-pre_8xb32-linear-coslr-100e_in1k',
 'resnetv1c101_8xb32_in1k',
 'resnetv1c152_8xb32_in1k',
 'resnetv1c50_8xb32_in1k',
 'resnetv1d101_8xb32_in1k',
 'resnetv1d152_8xb32_in1k',
 'resnetv1d50_8xb32_in1k']

get_model

获取模型

from mmpretrain import get_model
model = get_model("resnet101_8xb16_cifar10", pretrained=False)

inference_model

推理模型(注意这里的模型是否需要预训练)

from mmpretrain import inference_model
inference_model(model, "1.jpg", show=True)

微调

准备数据集

自行准备数据集,例如cifar10等

更改配置文件

查看配置文件

backbone
from mmengine import Config
cfg = Config.fromfile("resnet18_8x32b_in1k.py")
cfg.model

可以直接修改配置文件,或导入配置文件使用python修改

cfg.model.head.num_classes = 2

将这里的model的head的num_classes设置为2

在这里插入图片描述

dataset

修改可以使用mmengine,也可以直接修改配置文件

from mmengine import Config
cfg = Config.fromfile("imagenet_bs32.py")
cfg.train_dataloader

在这里插入图片描述

scheduler

也是类似修改

  • param_scheduler (学习率修改策略)
  • auto_scale_lr (根据batch_size自动线性缩放学习率,batch_size = GPU数 * 每张GPU上的batch_size)

在这里插入图片描述

runtime

保存最优模型,并最多保持max_keep_ckpts个权重

checkpoint = dict(type="CheckpointHook", interval=1, max_keep_ckpts=5, save_best="auto")

指定随机种子

randomness = dict(seed=None, deterministic=False)
修改配置文件

可以直接继承resnet18的配置文件

添加预训练权重

权重下载网址

__base__ = ["resnet.py"]

model = dict(
    init_cfg=dict(type="Pretrained", checkpoint="resnet18.pt")
)

__base__ = ["resnet.py"]

model = dict(
    init_cfg=dict(type="Pretrained", checkpoint="https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_8xb32_in1k_20210831-fbbb1da6.pth")
)
修改输出的类别数

将输出改为2分类

model = dict(
    head=dict(
        num_classes=2
    )
)

训练

使用mim训练

mim train mmpretrain resnet_finetune.py --work-dir="work_dir"

测试

mim test mmpretrain resnet_finetune.py --checkpoint work_dir/epoch_best.pt

分析测试结果

将测试结果存入result.pkl

mim test mmpretrain resnet_finetune.py --checkpoint work_dir/epoch_best.pt --out result.pkl

分析预测结果的好坏,最终结果放入 analyze 文件夹中

mim run mmpretrain analyze_results resnet_finetune.py result.pkl --out_dir analyze
获得混淆矩阵
mim run mmpretrain confusion_matrix resnet_finetune.py result.pkl --show --include-values
推理
from mmpretrain import ImageClassificationInferencer
inferencer = ImageClassificationInferencer("resnet_finetune.py", pretrained="work_dir/epoch_best.pt")
inferencer("1.jpg", show=True)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值