mmselfsup教程
- 1.安装mmselfsup
- 2.了解文件结构与配置
- 3.训练
- 常见报错
- 1.报错:FileNotFoundError: [Errno 2] No such file or directory:'data/imagenet/train/./train/n04311004/images/n04311004_194.JPEG'
- 2.报错:报错ImportError: /mmcv/_ext.cpython-38-x86_64-linux-gnu.so: undefined symbol:_ZN2at4_ops7resize_4callERKNS_6TensorEN3c108ArrayRefIlEENS5_8optionalINS5_12MemoryFormatEEE
1.安装mmselfsup
本人使用 Ubuntu20.04.6系统,下面是我的配置
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.了解文件结构与配置
- 模型的配置文件在
\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
- 继承的文件
- 数据集格式
除了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.训练
- 构建自己的配置文件
在想要使用的模型文件夹 里创建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
- 训练
例如:使用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
-
mmcv和pytorch版本问题,首先要对应
pytorch下载:https://download.pytorch.org/whl/torch_stable.html; -
然后就是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 文件名