【新手教程】mmselfsup训练教程及常见报错处理

1.安装mmselfsup

本人使用 Ubuntu20.04.6系统,下面是我的配置
image-20240324175541054
image-20240324182617364

pip install torch==1.13.0+cu116 torchvision==0.14.0+cu116 -f https://download.pytorch.org/whl/torch_stable.html

步骤 0. 从官方网站下载并安装 Miniconda。

步骤 1. 创建一个 conda 环境并激活它。

conda create --name openmmlab python=3.8 -y
conda activate openmmlab

步骤 2. 按照官方说明安装 PyTorch,例如:

  • 在 GPU 平台上:
conda install pytorch torchvision -c pytorch

不过还是推荐自己找对应版本文件后安装
pytorch下载:https://download.pytorch.org/whl/torch_stable.html

pip install 文件名
  • 在 CPU 平台上:
conda install pytorch torchvision cpuonly -c pytorch

步骤 3. 使用 MIM 安装 MMEngine 和 MMCV。

pip install -U openmim
mim install mmengine
mim install 'mmcv>=2.0.0rc4'

建议mmcv版本尽量安装2.0.1的
(Please install mmcv>=2.0.0rc4, <2.1.0.)
(1)将自己的版本对应修改下面链接后,打开链接下载mmcv
https://download.openmmlab.com/mmcv/dist/cu116/torch1.13.0/index.html
(2)将下载好的文件放入mmselfsup文件夹,

pip install 文件名

步骤 4. 安装 MMSelfSup。
https://github.com/open-mmlab/mmselfsup
下载zip文件或者

git clone https://github.com/open-mmlab/mmselfsup.git

之后进入环境

cd mmselfsup
pip install -v -e .
# "-v" 表示详细,或更多输出
# "-e" 表示以可编辑模式安装项目,
# 因此,对代码所做的任何本地修改都将生效,无需重新安装。

安装部分结束
在这里插入图片描述

2.了解文件结构与配置

  1. 模型的配置文件在
    \mmselfsup-main\configs\selfsup\里,这些文件夹都是对应的自监督模型
    在这里插入图片描述
    比如打开MAE
    在这里插入图片描述
    py文件里是初始的模型信息,命名规则是

{模型信息_{模块信息}_{训练信息}_{数据集信息}

mae_vit-base-p16_8xb512-coslr-400e_in1k.py
意思是:模型为mae,使用的模块为vit-base-p16,训练使用8GPU,batch size为512,使用cos类型的学习率变化函数,数据集为imagenet1k。

更详细内容在官网https://mmselfsup.readthedocs.io/zh-cn/dev-1.x/user_guides/1_config.html

  1. 继承的文件
    在这里插入图片描述
  2. 数据集格式
    除了VOC类型,一般的数据集文件夹结构相似:
    meta里包含train.txt

mmselfsup
├── mmselfsup
├── tools
├── configs
├── docs
├── data
│ ├── imagenet
│ │ ├── meta
│ │ ├── train
│ │ ├── val
│ ├── places205
│ │ ├── meta
│ │ ├── train
│ │ ├── val
│ ├── inaturalist2018
│ │ ├── meta
│ │ ├── train
│ │ ├── val
│ ├── VOCdevkit
│ │ ├── VOC2007
│ ├── cifar
│ │ ├── cifar-10-batches-py

3.训练

  1. 构建自己的配置文件
    在想要使用的模型文件夹 里创建mymae.py文件(configs/selfsup/mae/mymae.py),
    想要修改的部分就写入创建的配置文件里
_base_ = [
    '../_base_/models/mae_vit-base-p16.py',
    '../_base_/datasets/imagenet_mae.py',
    '../_base_/schedules/adamw_coslr-200e_in1k.py',
    '../_base_/default_runtime.py',
]


# 学习率调整器
param_scheduler = [
    dict(type='CosineAnnealingLR', T_max=800, by_epoch=True, begin=0, end=800)
]
lr = 0.05 / 8
optimizer = dict(lr=lr)

# 数据集配置
data_root = 'data/imagenet/'  # 数据集位置
data = dict(
    samples_per_gpu=2,
    worker_per_gpu=1,
    train=dict(
        data_source=dict(
            ann_file='meta/train.txt',
            data_prefix=dict(img_path='./'),
        )
    )
)
# # 设置类别数
# model = dict(
#     head=dict(num_classes=2),
#     memory_bank=dict(num_classes=2),
# )
train_dataloader = dict(
    batch_size=64,   # 调大处理会更快
    num_workers=16,
    )

# 训练次数
default_hooks = dict(
    logger=dict(interval=10),   # 每10次打印一次日志
    checkpoint=dict(interval=20, max_keep_ckpts=5)
    # 每20次保存一次训练好的权重,最多保留最近的5个checkpoint文件
)
train_cfg = dict(max_epochs=200)  # 设置训练次数为200

  1. 训练
    例如:使用8卡的例子
sh tools/dist_train.sh configs/selfsup/mae/mymae.py 8 --work_dir work_dirs/selfsup/mae/mymae/

我的语句(单卡)是

python tools/train.py configs/selfsup/mae/mymae.py

下面成功进行训练:
在这里插入图片描述

常见报错

1.报错:FileNotFoundError: [Errno 2] No such file or directory:‘data/imagenet/train/./train/n04311004/images/n04311004_194.JPEG’

修改imagenet_mae.py第27行为下
在这里插入图片描述

2.报错:报错ImportError: /mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol:_ZN2at4_ops7resize_4callERKNS_6TensorEN3c108ArrayRefIlEENS5_8optionalINS5_12MemoryFormatEEE

  1. mmcv和pytorch版本问题,首先要对应
    pytorch下载:https://download.pytorch.org/whl/torch_stable.html

  2. 然后就是mmcv版本尽量安装2.0.1的
    (Please install mmcv>=2.0.0rc4, <2.1.0.)
    (1)将自己的版本对应修改下面链接后,打开链接下载mmcv
    https://download.openmmlab.com/mmcv/dist/cu116/torch1.13.0/index.html
    (2)将下载好的文件放入mmselfsup文件夹,

pip install 文件名
  • 29
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值