前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MMClassification 图像分类代码实战

MMClassification 图像分类代码实战

作者头像
timerring
发布2023-02-24 08:51:01
7050
发布2023-02-24 08:51:01
举报
文章被收录于专栏:TechBlog

文章目录

MMClassification

丰富的模型

  • 卷积神经网络
    • VGG
    • ResNet & Variants
    • ResNeXt
    • SE-ResNe(X)t
    • DenseNet
    • ResNeSt
    • HRNet
    • EfficientNet
    • RegNet
    • ConvNeXt
    • ……
  • 轻量化卷积网络
    • MobileNet V2/V3
    • ShuffleNet V1/V2
    • ……
  • Transformer 模型
    • ViT
    • MLP-Mixer
    • Conformer
    • DeiT
    • SwinTransformer
    • ……

数据集支持

  • MNIST / CIFAR
  • ImageNet 1K / 21K
  • 自定义数据集

训练技巧与策略

  • 优化器与学习率策略
  • 数据增强策略

易用的工具

  • 大量预置配置文件、预训练模型
  • Python 推理API
  • 模型训练工具
  • CAM 可解释性分析
  • (配合MMDeploy)部署工具

模块化设计

Python 推理API

代码语言:javascript
复制
# 下载配置文件和与训练权重
$ mim download mmcls --config mobilenet-v2_8xb32_in1k --dest .
# 使用Python API 推理
from mmcls.apis import init_model, inference_model, show_result_pyplot
model = init_model('mobilenet-v2_8xb32_in1k.py',
'mobilenet_v2_batch256_imagenet_20200708-3b2dc3af.pth',
device='cuda:0')
result = inference_model(model, 'banana.png')
show_result_pyplot(model, 'banana.png', result)
# 推理结果result
{'pred_class': 'banana’,
'pred_label': 954,
'pred_score': 0.9999284744262695}

推理工具

单张图像推理

代码语言:javascript
复制
python demo/image_demo.py ${IMAGE_FILE} ${CONFIG_FILE} ${CHECKPOINT_FILE}

在测试集上测试

单卡

代码语言:javascript
复制
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--metrics ${METRICS}] [--out
${RESULT_FILE}]

多机多卡

代码语言:javascript
复制
./tools/dist_test.sh ${CONFIG_FILE} ${CHECKPOINT_FILE} ${GPU_NUM} [--metrics ${METRICS}] [--out ${RESULT_FILE}]

使用说明:https://mmclassification.readthedocs.io/en/latest/getting_started.html#inference-asingle-image

训练工具

单卡训练

代码语言:javascript
复制
python tools/train.py ${CONFIG_FILE} [optional arguments]

单机、多机多卡训练

代码语言:javascript
复制
./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [optional arguments]

使用任务调度器Slurm 启动任务

代码语言:javascript
复制
[GPUS=${GPUS}] ./tools/slurm_train.sh ${PARTITION} ${JOB_NAME} ${CONFIG_FILE} ${WORK_DIR}

从checkpoint 恢复训练

代码语言:javascript
复制
增加--resume-from ${CHECKPOINT_FILE} 参数

使用说明:https://mmclassification.readthedocs.io/en/latest/getting_started.html#train-a-model

使用MIM 工具实现训练和测试

MIM 为所有OpenMMLab 工具提供了统一的命令行接口

下载配置文件和预训练权重

代码语言:javascript
复制
mim download mmcls --config mobilenet-v2_8xb32_in1k --dest .

训练(支持单卡、多卡、Slurm 任务管理器)

代码语言:javascript
复制
mim train mmcls {参数同mmcls 自己的train.py}
mim train mmcls {参数同mmcls 自己的train.py} -G 4 –g 4 –p ${PARTITION} --launcher slurm

测试

代码语言:javascript
复制
mim test mmcls {参数同mmcls 自己的test.py} --gpus 4 --launcher pytorch

使用说明:https://github.com/open-mmlab/mim

环境搭建

可以使用MIM 配置MMCV 和MMClassification

OpenMMLab 项目——配置文件

深度学习模型的训练涉及几个方面:

  • 模型结构模型有几层、每层多少通道数等等
  • 数据集用什么数据训练模型:数据集划分、数据文件路径、数据增强策略等等
  • 训练策略梯度下降算法、学习率参数、batch_size、训练总轮次、学习率变化策略等等
  • 运行时GPU、分布式环境配置等等
  • 一些辅助功能如打印日志、定时保存checkpoint等等

在OpenMMLab 项目中,所有这些项目都涵盖在一个配置文件中,一个配置文件定义了一个完整的训练过程

  • model 字段定义模型
  • data 字段定义数据
  • optimizer、lr_config 等字段定义训练策略
  • load_from 字段定义与训练模型的参数文件

配置文件的运作方式

也适用于其他OpenMMLab 工具包

图像分类模型的构成

图像分类模型构建

数据集构建

定义数据加载流水线

https://mmclassification.readthedocs.io/en/latest/modelzoo_statistics.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • MMClassification
    • 丰富的模型
      • 数据集支持
        • 训练技巧与策略
          • 易用的工具
          • Python 推理API
          • 推理工具
          • 训练工具
          • 使用MIM 工具实现训练和测试
          • 环境搭建
          • OpenMMLab 项目——配置文件
          • 配置文件的运作方式
            • 图像分类模型的构成
              • 图像分类模型构建
                • 数据集构建
                  • 定义数据加载流水线
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档