图像分类工具包MMClassification
MMClassification 需要Python3.6+、CUDA9.2+和Pytorch1.5+
MMCls安装——最佳实践
Step1: 使用MIM安装MMCV
pip install -U openmin
mim install mmcv-full
Step2: 安装MMClassification
git clone https://github.com/open-mmlab/mmclassification.git
cd mmclassification
pip install -v -e
所有的输出(日志文件和模型权重文件)将会被保存到工作目录下。工作目录通过配置文件中的参数work_dir 指定。
默认情况下,MMClassification 在每个周期后会在验证集上评估模型,可以通过在训练配置中修改interval参数来更改评估间隔
evaluation = dict(interval=12) # 每进行12轮训练后评估一次模型
使用单个GPU进行训练
python tools/train.py ${CONFIG_FILE} [optional arguments]
如果用户想在命令中指定工作目录,则需要增加参数--work-dir ${YOUR_WORK_DIR}
深度学习模型的训练涉及几个方面:
以上所有的项目都涵盖在一个配置文件中,一个配置文件定义了一个完整的训练过程
MMCls配置文件
构建配置文件可以使用继承机制,从configs/__base__中继承ImageNet预训练的任何模型,ImageNet的数据data配置,学习率策略等。
以ResNet为例,在mmclassification/configs下创建resnet18目录(mkdir),将resnet18_b32_flower.py 文件放到里面。
_base_ = ['../_base_/models/resnet18.py', '../_base_/datasets/imagenet_bs32.py', '../_base_/default_runtime.py']
model = dict(
head = dict(
num_classes=5,
topk =(1,)
))
data = dict(
samples_per_gpu = 32,
workers_per_gpu = 2,
train = dict(
data_prefix ='data/flower/train',
ann_file ='data/flower/train.txt',
classes ='data/flower/classes.txt'
),
val = dict(
data_prefix ='data/flower/val',
ann_file ='data/flower/val.txt',
classes ='data/flower/classes.txt'
)
)
optimizer = dict(type='SGD', lr=0.001, momentum=0.9, weight_decay=0.0001)
optimizer_config = dict(grad_clip=None)
lr_config = dict(
policy='step',
step=[1])
runner = dict(type='EpochBasedRunner', max_epochs=100)
# 预训练模型
load_from = '/HOME/shenpg/run/openmmlab/mmclassification/checkpoints/resnet18_batch256_imagenet_20200708-34ab8f90.pt
split_data.py
在环境、数据集、MMCls配置文件准备完成之后就可以提交计算,在N30提交计算可以通过作业脚本的方式,操作步骤如下:
1 #!/bin/bash
2 # 加载模块
3 module load anaconda/2021.05
4 module load cuda/11.1
5 module load gcc/7.3
6
7 # 激活环境
8 source activate openmmlab_mmclassification
9
10 # 刷新环境
11 export PYTHONUNBUFFERED=1
12
13 # 训练模型
14 python tools/train.py \
15 configs/resnet18/restnet18_b32_flower.py \
16 --work-dir work/resnet18_b32_flower
sbatch --gpus-1 run.sh