安装mmpretrain
克隆mmpretrain
git clone https://github.com/open-mmlab/mmpretrain
进入mmpretrain
cd mmpretrain
安装mim
pip install openmim
使用mim安装依赖
mim install -e ".[multimodal]"
进入python交互环境
ipython
导入mmpretrain,并导入一些高级。
- get model获取模型
- list models列出所有模型
- inference model 模型推理
import mmpretrain
from mmpretrain import get_model, list_models, inference_model
列出所有分类相关,名字包含resnet18的模型
list_models(task='Image Classification', pattern='resnet18')
列出所有图像描述相关,名字带有blip的模型
list_models(task='Image Caption',pattern='blip')
获取模型,当前获取到的模型是未加载模型权重的
model = get('resnet18_8xb16_cifar10')
type(mode)
# mmpretrain.models.classifiers.image.ImageClassifier
列出所有图像分类的基于blip的模型
list_models(task='Image Caption', pattern='blip')
#使用inference_model 选择模型进行推理
inference_model('blip-base_3rdparty_caption','demo/cat-dog/png',show=True)
第一个参数是模型,第二个参数是输入的图片,show会显示图片
微调训练
准备数据集
下载训练数据
https://download.openmmlab.com/mmclassification/dataset/cats_dogs_dataset.tar
cats_dogs_dataset
cats_dogs_dataset下面存放着test_set测试数据集,training_set训练数据集,val_set训练标注数据集
介绍condigs配置文件
在对应的算法下面存放着对应的算法配置文件
打开resnet18_8xb32_in1k.py
把四个配置文件组件在一起
编写自己的配置文件
新建文件夹mmpregrain/projects/dog_cat
新建resnet18_finetune.py
将resnet18_8xb32_in1k所有的代码都粘贴进当前代码
修改配置文件
模型库所在的网址
ResNet — MMPretrain 1.0.0rc8 documentation
修改model settings
在model settings中,添加init_cfg
init_cfg=dict(type='Pretrained',checkpoint='https://download.openmmlab.com/mmclassification/v0/resnet/resnet18_8xb32_in1k_20210831-fbbb1da6.pth')
在model settings中,修改num_classes为2(猫和狗只有俩种类型)
修改dataset settings
修改dataset_type为CustomDataset
修改train_dataloader的data_root为数据集所在的路径,删除不需要的参数
修改val_dataloader的data_root为数据集标定路径
修改val_evaluator(评测指标)为1
添加test_dataloader,data_root改为测试数据集所在路径
修改训练设定
删除auto_scale
添加参数max_keep_ckpts为5,设定ckpts的存储个数最大为5;添加参数save_best为auto,保存最好的ckpts
参数解读:seed,如果想要训练被复现,可以指定一个seed。并将deterministic为True
启动训练
mim train mmpretrain resnet18_finetune.py --work-dir=./exp
mim可以任意目录下执行train代码
测试训练结果
加入参数 --out result.pkl将测试的结果存放到日志文件中
绘制混淆矩阵图