# 迁移文档 - [迁移文档](#迁移文档) - [迁移自 MMSelfSup 0.x 版本](#迁移自-mmselfsup-0x-版本) - [配置文件](#配置文件) - [数据集](#数据集) - [模型](#模型) - [优化器及调度](#优化器及调度) - [运行相关设置](#运行相关设置) - [代码包](#代码包) ## 迁移自 MMSelfSup 0.x 版本 我们将介绍一些 MMSelfSup 1.x 版本的变换,帮助用户更顺利的将项目从 MMSelfSup 0.x 版本迁移到 1.x 版本。 MMSelfSup 1.x 版本依赖于一些新的代码包,您应该根据 [安装教程](./get_started.md) 来创建新的环境,并安装依赖项。三个重要的依赖库已列出: 1. [MMEngine](https://github.com/open-mmlab/mmengine): MMEngine 是所有 OpenMMLab 2.0 项目的基础库,一部分非计算机视觉强相关的模块从 MMCV 迁移到了 MMEngine。 2. [MMCV](https://github.com/open-mmlab/mmcv): OpenMMLab 计算机视觉基础库。这不是新的依赖项,但是您需要将其升级到至少 `2.0.0rc1` 版本。 3. [MMClassification](https://github.com/open-mmlab/mmcv): OpenMMLab 图像分类代码库。这不是新的依赖项,但是您需要将其升级到至少 `1.0.0rc0` 版本。 ## 配置文件 本章节将介绍 `_base_` 文件夹中的配置文件的变化,主要包含以下三个部分: - 数据集:`mmselfsup/configs/selfsup/_base_/datasets` - 模型:`mmselfsup/configs/selfsup/_base_/models` - 优化器及调度:`mmselfsup/configs/selfsup/_base_/schedules` ### 数据集 在 **MMSelfSup 0.x** 中,我们使用字段 `data` 来整合数据相关信息, 例如 `samples_per_gpu`,`train`,`val` 等。 在 **MMSelfSup 1.x** 中,我们分别使用字段 `train_dataloader`, `val_dataloader` 整理训练和验证的数据相关信息,并且 `data` 字段已经被 **移除**。
旧版本 | ```python data = dict( samples_per_gpu=32, # total 32*8(gpu)=256 workers_per_gpu=4, train=dict( type=dataset_type, data_source=dict( type=data_source, data_prefix='data/imagenet/train', ann_file='data/imagenet/meta/train.txt', ), num_views=[1, 1], pipelines=[train_pipeline1, train_pipeline2], prefetch=prefetch, ), val=...) ``` |
新版本 | ```python train_dataloader = dict( batch_size=32, num_workers=4, persistent_workers=True, sampler=dict(type='DefaultSampler', shuffle=True), collate_fn=dict(type='default_collate'), dataset=dict( type=dataset_type, data_root=data_root, ann_file='meta/train.txt', data_prefix=dict(img_path='train/'), pipeline=train_pipeline)) val_dataloader = ... ``` |
旧版本 | ```python optimizer = dict( type='AdamW', lr=0.0015, weight_decay=0.3, paramwise_options = dict( norm_decay_mult=0.0, bias_decay_mult=0.0, )) optimizer_config = dict(grad_clip=dict(max_norm=1.0)) ``` |
新版本 | ```python optim_wrapper = dict( optimizer=dict(type='AdamW', lr=0.0015, weight_decay=0.3), paramwise_cfg = dict( norm_decay_mult=0.0, bias_decay_mult=0.0, ), clip_gard=dict(max_norm=1.0), ) ``` |
旧版本 | ```python lr_config = dict( policy='CosineAnnealing', min_lr=0, warmup='linear', warmup_iters=5, warmup_ratio=0.01, warmup_by_epoch=True) ``` |
新版本 | ```python param_scheduler = [ # warmup dict( type='LinearLR', start_factor=0.01, by_epoch=True, end=5, # Update the learning rate after every iters. convert_to_iter_based=True), # main learning rate scheduler dict(type='CosineAnnealingLR', by_epoch=True, begin=5, end=200), ] ``` |
旧版本 | ```python runner = dict(type='EpochBasedRunner', max_epochs=200) ``` |
新版本 | ```python train_cfg = dict(by_epoch=True, max_epochs=200) ``` |
旧版本 | ```python log_config = dict( interval=100, hooks=[ dict(type='TextLoggerHook'), dict(type='TensorboardLoggerHook'), ]) ``` |
新版本 | ```python default_hooks = dict( ... logger=dict(type='LoggerHook', interval=100), ) visualizer = dict( type='SelfSupVisualizer', vis_backends=[dict(type='LocalVisBackend'), dict(type='TensorboardVisBackend')], ) ``` |