【OpenMMLab】MMPretrain 代码教程

本文介绍了OpenMMLab的MMPretrain框架,它是一个用于预训练模型的工具,支持多种预训练策略和网络。文章详细阐述了如何安装和使用MMPretrain,包括创建虚拟环境、安装依赖、使用ipython以及通过API获取和推理模型。此外,还展示了如何进行模型微调实验,特别是ResNet18在分类数据集上的应用。

系列文章目录

第一课:【OpenMMLab】OpenMMLab概述
第二课:【OpenMMLab】人体姿态估计、关键点检测与MMPose
第三课:【openMMLab】MMPose 代码教程
第四课:【OpenMMLab】深度学习预训练与 MMPreTrain

前言

MMPretrain 是一个全新升级的预训练开源算法框架,旨在提供各种强大的预训练主干网络,并支持不同的预训练策略。
MMPretrain 源自 MMClassification 和MMSelfSup,并开发了许多新功能。预训练阶段对于视觉识别至关重要,凭借丰富而强大的预训练模型,能够用于改进各种下游视觉任务。 代码库旨在成为一个易于使用和用户友好的代码库,并简化学术研究活动和工程任务。
博客视频:https://www.bilibili.com/video/BV1PN411y7C1
代码仓库:https://github.com/open-mmlab/mmpretrain
文档教程:https://mmpretrain.readthedocs.io/en/latest

一、环境安装

关于创建虚拟环境,安装pyorch,安装mmcv环境可以参考 【openMMLab】MMPose 代码教程。本次代码教程主要基于ipython进行讲解。

安装ipython

ipython 调用的是 虚拟环境中的库,所以要在配置好的虚拟环境中安装ipython

# 激活 conda 虚拟环境
conda activate your_env_name
# 安装
pip install ipython
# 打开 ipython
# 简单验证 ipython 的安装
ipython

In [1]: import torch

In [2]: torch.__version__
Out[2]: '2.0.1+cu118'

In [3]: torch.cuda.is_available()
Out[3]: True

In [4]: exit()

下载和安装mmpretrain

# 下载 mmpretrain
git clone https://github.com/open-mmlab/mmpretrain
# 安装 mmpretrain
cd mmpretrain
pip install -e .

mmpretrain API

详细介绍在代码的注释中

# 打开 ipython
ipython

In [1]: import mmpretrain

# 查看 mmpretrain 的版本
In [2]: mmpretrain.__version__
Out[2]: '1.0.0rc8'

# 从mmpretrain中引入一些高阶的api, 
# 如get_model, list_models, inference_model 分别用于模型的获取,列举和推理
In[3]: from mmpretrain import get_model, list_models, inference_model

# 获取 图像分类 Image Classification 相关的,含有 resnet18 的模型
In [4]: list_models(task='Image Classification', pattern='resnet18')
out[4]: [
<think>好的,用户想使用OpenMMLabMMPretrain库训练自定义数据集,我需要一步步指导他们怎么做。首先,我应该回忆一下MMPretrain的相关文档和引用内容。用户提供的引用里提到需要修改配置文件,还有数据集划分的步骤,可能还要参考他们提供的链接。 首先,用户需要准备数据集。根据引用4,数据集划分的代码和流程在优快云博客里有详细说明,所以得提醒用户按照标准结构组织数据,比如train、val、test目录。可能需要用脚本或者工具来划分数据集,确保用户知道怎么处理。 然后是安装MMPretrain。引用2和3提到环境安装,应该让用户安装PyTorch、MMCV和MMPretrain,可能还需要通过MIM安装。需要给出具体的pip命令,比如安装openmim,然后安装mmcv和mmpretrain。 接下来是配置文件部分。用户需要修改模型配置和数据配置。引用1提到如何在自定义数据集上微调模型,可能需要复制基准配置文件,比如resnet50,然后修改num_classes、数据路径、数据集类型等。这部分需要详细说明如何修改模型头部的类别数,以及数据管道的设置,比如调整图片尺寸和增强方法。 数据配置方面,要定义训练、验证、测试的数据集类型和路径。可能需要使用CustomDataset,并指定ann_file和data_prefix。用户需要准备对应的标注文件,比如train.txt和val.txt,每行是图片路径和标签。这里要提醒用户正确格式化标注文件。 之后是训练配置,调整学习率、优化器参数、训练周期数,以及检查点、日志设置。用户可能需要根据数据集大小调整学习率和训练周期,避免过拟合或欠拟合。 训练命令部分,应该给出mim命令的例子,比如使用分布式训练,指定GPU数量和配置文件。还要提到测试和推理的命令,方便用户验证模型效果。 最后,相关问题部分,需要根据用户可能的后续问题生成,比如调整超参数、处理不均衡数据、导出模型、应用预训练模型到下游任务,以及数据集增强技巧。这些问题能帮助用户深入使用MMPretrain。 需要确保所有步骤清晰,用户能一步步跟随,同时引用提供的资料,比如引用1、2、3、4中的内容,特别是配置修改和数据划分的部分。还要注意使用正确的LaTeX格式,但根据用户的问题,可能这部分不需要太多数学公式,主要是代码和配置示例。确保所有命令行和代码块正确无误,用户可以直接复制使用。</think>以下是使用OpenMMLabMMPretrain训练自定义数据集的完整流程: ### 一、数据集准备 1. 按标准结构组织数据集: ``` custom_dataset/ ├── train/ │ ├── class1/ │ │ ├── img1.jpg │ │ └── ... ├── val/ │ ├── class2/ │ │ ├── img2.jpg │ └── ... └── test/ └── ... ``` 2. 生成标注文件(参考引用[4]): - 使用脚本生成`train.txt`和`val.txt`,格式示例: ``` train/class1/img1.jpg 0 train/class2/img2.jpg 1 ``` ### 二、环境安装 ```bash pip install openmim mim install mmcv-full mim install mmpretrain ``` ### 三、配置文件修改 1. 复制基准配置文件(以ResNet50为例): ```python # configs/resnet/resnet50_8xb32_in1k.py model = dict( head=dict( type='LinearClsHead', num_classes=200, # 修改为自定义类别数[^1] loss=dict(type='CrossEntropyLoss'))) ``` 2. 数据配置修改: ```python # 数据增强管道 train_pipeline = [ dict(type='LoadImageFromFile'), dict(type='RandomResizedCrop', scale=224), # 调整输入尺寸 dict(type='RandomFlip', prob=0.5), dict(type='PackInputs'), ] # 数据集定义 train_dataloader = dict( dataset=dict( type='CustomDataset', # 使用自定义数据集类型[^3] ann_file='train.txt', data_prefix='data/custom_dataset/train', pipeline=train_pipeline)) ``` ### 四、训练配置 ```python # 优化器设置 optimizer = dict(type='SGD', lr=0.001, momentum=0.9, weight_decay=0.0001) # 调整初始学习率 # 训练策略 train_cfg = dict(by_epoch=True, max_epochs=100) # 设置训练轮次 # 验证配置 val_dataloader = dict( dataset=dict( type='CustomDataset', ann_file='val.txt', data_prefix='data/custom_dataset/val')) ``` ### 五、启动训练 ```bash mim train mmpretrain configs/resnet/resnet50_8xb32_in1k.py \ --work-dir work_dirs/custom_resnet50 \ --gpus 2 # 使用2个GPU[^2] ``` ### 六、测试与推理 ```bash # 测试模型性能 mim test mmpretrain configs/resnet/resnet50_8xb32_in1k.py \ --checkpoint work_dirs/custom_resnet50/latest.pth # 单张图片推理 mim run mmpretrain demo inference $IMAGE \ --config configs/resnet/resnet50_8xb32_in1k.py \ --checkpoint work_dirs/custom_resnet50/latest.pth ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值