From 58feaa0644b63346fb5e170fab498ca6f6f261bd Mon Sep 17 00:00:00 2001 From: xin-li-67 Date: Tue, 11 Jul 2023 19:36:16 +0800 Subject: [PATCH 1/8] init --- docs/zh_cn/migration/data.md | 234 ++++++++++++++++++++++++++++++++++- 1 file changed, 233 insertions(+), 1 deletion(-) diff --git a/docs/zh_cn/migration/data.md b/docs/zh_cn/migration/data.md index e73a39f1cc..3dc6c33806 100644 --- a/docs/zh_cn/migration/data.md +++ b/docs/zh_cn/migration/data.md @@ -1 +1,233 @@ -# 数据的迁移(待更新) +# Data Settings 的迁移 + +本篇文档负责介绍 data settings 的迁移方式: + +- \[Data Settings 的迁移\](#Data Settings 的迁移) + - [Data Pipelines](#data-pipelines) + - [Dataloader](#dataloader) + +## Data Pipelines + +在 MMagic 1.x 中我们更新了 data pipeline 的设置,有以下几个重要的修改: + +- 去除了 normalization 和 color space 转换的操作,这两部分移动到了 `data_preprocessor` 部分。 +- 原版本中 formatting 转换 pipeline 的 `Collect` 和 `ToTensor` 在新版本中被整合为 `PackInputs` 。更多的细节可以在 [转换文档](../howto/transforms.md) 中查看。 + + + + + + + + + + + + + + +
Original New
+ +```python +train_pipeline = [ # Train pipeline + dict(type='LoadImageFromFile', # 从文件读取图片 + io_backend='disk', # io backend + key='lq', # 找到结果对应路径的 keys + flag='unchanged'), # 读取图片的 flag + dict(type='LoadImageFromFile', # 从文件读取图片 + io_backend='disk', # io backend + key='gt', # 找到结果对应路径的 keys + flag='unchanged'), # 读取图片的 flag + dict(type='RescaleToZeroOne', keys=['lq', 'gt']), # 将图片从 [0, 255] 缩放到 [0, 1] + dict(type='Normalize', # normalize 图片的 augmentation pipeline + keys=['lq', 'gt'], # 需要 normalized 的图片 + mean=[0, 0, 0], # Mean values + std=[1, 1, 1], # Standard variance + to_rgb=True), # 是否转换到 rgb 通道 + dict(type='PairedRandomCrop', gt_patch_size=96), # PairedRandomCrop + dict(type='Flip', # 翻转图片 + keys=['lq', 'gt'], # 需要翻转的图片 + flip_ratio=0.5, # Flip ratio + direction='horizontal'), # Flip 方向 + dict(type='Flip', # Flip 图片 + keys=['lq', 'gt'], # 需要翻转的图片 + flip_ratio=0.5, # Flip ratio + direction='vertical'), # Flip 方向 + dict(type='RandomTransposeHW', # 随即对图片的高和宽转置 + keys=['lq', 'gt'], # 需要 transpose 的图片 + transpose_ratio=0.5 # Transpose ratio + ), + dict(type='Collect', # Pipeline that decides which keys in the data should be passed to the model + keys=['lq', 'gt'], # Keys to pass to the model + meta_keys=['lq_path', 'gt_path']), # Meta information keys. 训练时 meta information 不是必须的 + dict(type='ToTensor', # 图片转为 tensor + keys=['lq', 'gt']) # 需要转换为 tensor 的图片 +] +test_pipeline = [ # Test pipeline + dict( + type='LoadImageFromFile', # 从文件读取图片 + io_backend='disk', # io backend + key='lq', # 找到结果对应路径的 keys + flag='unchanged'), # flag for reading images + dict( + type='LoadImageFromFile', # 从文件读取图片 + io_backend='disk', # io backend + key='gt', # 找到结果对应路径的 keys + flag='unchanged'), # flag for reading images + dict(type='RescaleToZeroOne', keys=['lq', 'gt']), # 将图片从 [0, 255] 缩放到 [0, 1] + dict( + type='Normalize', # 对输入图片执行 normalization 的数据增强 pipeline + keys=['lq', 'gt'], # 需要 normalized 图片 + mean=[0, 0, 0], # Mean values + std=[1, 1, 1], # Standard variance + to_rgb=True), # 是否转为 rgb 格式 + dict(type='Collect', # Pipeline that decides which keys in the data should be passed to the model + keys=['lq', 'gt'], # Keys to pass to the model + meta_keys=['lq_path', 'gt_path']), # Meta information keys + dict(type='ToTensor', # 图片转为 tensor + keys=['lq', 'gt']) # 需要转换为 tensor 的图片 +] +``` + + + +```python +train_pipeline = [ # train pipeline + dict(type='LoadImageFromFile', # 从文件读取图片 + key='img', # 找到结果对应路径的 keys + color_type='color', # 图片的 color type + channel_order='rgb', # 图片的 channel 顺序 + imdecode_backend='cv2'), # decode backend + dict(type='LoadImageFromFile', # 从文件读取图片 + key='gt', # 找到结果对应路径的 keys + color_type='color', # 图片的 color type + channel_order='rgb', # 图片的 channel 顺序 + imdecode_backend='cv2'), # decode backend + dict(type='SetValues', dictionary=dict(scale=scale)), # 设置 destination keys + dict(type='PairedRandomCrop', gt_patch_size=96), # PairedRandomCrop + dict(type='Flip', # 翻转图片 + keys=['lq', 'gt'], # 需要翻转的图片 + flip_ratio=0.5, # Flip ratio + direction='horizontal'), # Flip 方向 + dict(type='Flip', # Flip images + keys=['lq', 'gt'], # 需要翻转的图片 + flip_ratio=0.5, # Flip ratio + direction='vertical'), # Flip 方向 + dict(type='RandomTransposeHW', # 随即对图片的高和宽进行转置 + keys=['lq', 'gt'], # 需要转置的图片 + transpose_ratio=0.5 # Transpose ratio + ), + dict(type='PackInputs') # 在当前 pipeline 中收集数据的设置 +] +test_pipeline = [ # Test pipeline + dict(type='LoadImageFromFile', # 从文件读取图片 + key='img', # 找到结果对应路径的 keys + color_type='color', # 图片的 color type + channel_order='rgb', # 图片的 channel order + imdecode_backend='cv2'), # decode backend + dict(type='LoadImageFromFile', # 从文件读取图片 + key='gt', # 找到结果对应路径的 keys + color_type='color', # 图片的 color type + channel_order='rgb', # 图片的 channel order + imdecode_backend='cv2'), # decode backend + dict(type='PackInputs') # 在当前 pipeline 中收集数据的设置 +] +``` + +
+ +## Dataloader + +在 MMagic 1.x 中我们更新了 dataloader 的设置方式,有以下几个重要的修改: + +- 原版本中的 `data` 字段分为了 `train_dataloader` , `val_dataloader` 和 `test_dataloader` 三个独立的部分。这样我们就可以细粒度的对各部分进行配置。例如用户就可以针对训练和测试制定不同的 sampler 和 batch size 。 +- `samples_per_gpu` 更名为 `batch_size` 。 +- `workers_per_gpu` 更名为 `num_workers` 。 + + + + + + + + + + + + + + +
原版本 新版本
+ +```python +data = dict( + # train + samples_per_gpu=16, # 每个 GPU 上的 batch_size + workers_per_gpu=4, # 每个 GPU 上做 pre-fetch 的 worker 数 + drop_last=True, # 在 data_loader 中使用 drop_last + train=dict( # Train dataset 配置 + type='RepeatDataset', # 对 iter-based 模型设置为 RepeatDataset + times=1000, # RepeatDataset 的 repeated times 参数 + dataset=dict( + type=train_dataset_type, # 数据集类型 + lq_folder='data/DIV2K/DIV2K_train_LR_bicubic/X2_sub', # lq 的文件路径 + gt_folder='data/DIV2K/DIV2K_train_HR_sub', # ground truth 的文件路径 + ann_file='data/DIV2K/meta_info_DIV2K800sub_GT.txt', # 标注文件的路径 + pipeline=train_pipeline, # 参照 train_pipeline + scale=scale)), # Upsampling 的 scale factor + # validation + val_samples_per_gpu=1, # validation 时每个 GPU 上的 batch_size + val_workers_per_gpu=4, # validation 是每个 GPU 上做 pre-fetch 的 worker 数 + val=dict( + type=val_dataset_type, # 数据集类型 + lq_folder='data/val_set5/Set5_bicLRx2', # lq 的文件路径 + gt_folder='data/val_set5/Set5_mod12', # ground truth 的文件路径 + pipeline=test_pipeline, # 参照 test_pipeline + scale=scale, # Upsampling 的 scale factor + filename_tmpl='{}'), # filename 模板 + # test + test=dict( + type=val_dataset_type, # 数据集类型 + lq_folder='data/val_set5/Set5_bicLRx2', # lq 的文件路径 + gt_folder='data/val_set5/Set5_mod12', # ground truth 的文件路径 + pipeline=test_pipeline, # 参照 test_pipeline + scale=scale, # Upsampling 的 scale factor + filename_tmpl='{}'), # filename 模板 +) +``` + + + +```python +dataset_type = 'BasicImageDataset' # 数据集类型 +data_root = 'data' # 数据集根目录 +train_dataloader = dict( + batch_size=16, + num_workers=4, # 每个 GPU 上做 pre-fetch 的 worker 数 + persistent_workers=False, # 是否保持 workers instance 存活 + sampler=dict(type='InfiniteSampler', shuffle=True), # data sampler 类型 + dataset=dict( # 训练数据集 config + type=dataset_type, # 数据集类型 + ann_file='meta_info_DIV2K800sub_GT.txt', # 标注文件路径 + metainfo=dict(dataset_type='div2k', task_name='sisr'), + data_root=data_root + '/DIV2K', # 数据根目录 + data_prefix=dict( # 图像文件前缀 + img='DIV2K_train_LR_bicubic/X2_sub', gt='DIV2K_train_HR_sub'), + filename_tmpl=dict(img='{}', gt='{}'), # Filename 模板 + pipeline=train_pipeline)) +val_dataloader = dict( + batch_size=1, + num_workers=4, # 每个 GPU 上做 pre-fetch 的 worker 数 + persistent_workers=False, # 是否保持 workers instance 存活 + drop_last=False, # 是否丢弃最后未完成的 batch + sampler=dict(type='DefaultSampler', shuffle=False), # data sampler 类型 + dataset=dict( # Validation 数据集设置 + type=dataset_type, # 数据集类型 + metainfo=dict(dataset_type='set5', task_name='sisr'), + data_root=data_root + '/Set5', # 数据根目录 + data_prefix=dict(img='LRbicx2', gt='GTmod12'), # 图像文件前缀 + pipeline=test_pipeline)) +test_dataloader = val_dataloader +``` + +
From b3610ca9f65be6907ca5e96d1ff514a5225b152e Mon Sep 17 00:00:00 2001 From: Xin Li <7219519+xin-li-67@users.noreply.github.com> Date: Wed, 12 Jul 2023 14:38:14 +0800 Subject: [PATCH 2/8] Update docs/zh_cn/migration/data.md Co-authored-by: Range King --- docs/zh_cn/migration/data.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh_cn/migration/data.md b/docs/zh_cn/migration/data.md index 3dc6c33806..d70ea47636 100644 --- a/docs/zh_cn/migration/data.md +++ b/docs/zh_cn/migration/data.md @@ -16,7 +16,7 @@ - + From a005e473e23f235ee3fd750ef47e23b469725c53 Mon Sep 17 00:00:00 2001 From: Xin Li <7219519+xin-li-67@users.noreply.github.com> Date: Wed, 12 Jul 2023 14:38:21 +0800 Subject: [PATCH 3/8] Update docs/zh_cn/migration/data.md Co-authored-by: Range King --- docs/zh_cn/migration/data.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh_cn/migration/data.md b/docs/zh_cn/migration/data.md index d70ea47636..6f877796c0 100644 --- a/docs/zh_cn/migration/data.md +++ b/docs/zh_cn/migration/data.md @@ -17,7 +17,7 @@ - +
Original 原版本 New
原版本 New 新版本
From a5e3416ad61770eb87009938a69a90f4fd5456f0 Mon Sep 17 00:00:00 2001 From: Xin Li <7219519+xin-li-67@users.noreply.github.com> Date: Wed, 12 Jul 2023 14:38:28 +0800 Subject: [PATCH 4/8] Update docs/zh_cn/migration/data.md Co-authored-by: Range King --- docs/zh_cn/migration/data.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh_cn/migration/data.md b/docs/zh_cn/migration/data.md index 6f877796c0..e97fb61002 100644 --- a/docs/zh_cn/migration/data.md +++ b/docs/zh_cn/migration/data.md @@ -11,7 +11,7 @@ 在 MMagic 1.x 中我们更新了 data pipeline 的设置,有以下几个重要的修改: - 去除了 normalization 和 color space 转换的操作,这两部分移动到了 `data_preprocessor` 部分。 -- 原版本中 formatting 转换 pipeline 的 `Collect` 和 `ToTensor` 在新版本中被整合为 `PackInputs` 。更多的细节可以在 [转换文档](../howto/transforms.md) 中查看。 +- 原版本中格式化数据变换 pipeline 的 `Collect` 和 `ToTensor` 在新版本中被整合为 `PackInputs`。更多的细节可以在 [数据变换文档](../howto/transforms.md) 中查看。 From 3faf2d5ade0d7e29819459beb72fb0e1bbbc29f9 Mon Sep 17 00:00:00 2001 From: Xin Li <7219519+xin-li-67@users.noreply.github.com> Date: Wed, 12 Jul 2023 14:38:38 +0800 Subject: [PATCH 5/8] Update docs/zh_cn/migration/data.md Co-authored-by: Range King --- docs/zh_cn/migration/data.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh_cn/migration/data.md b/docs/zh_cn/migration/data.md index e97fb61002..b9ef4d59b1 100644 --- a/docs/zh_cn/migration/data.md +++ b/docs/zh_cn/migration/data.md @@ -10,7 +10,7 @@ 在 MMagic 1.x 中我们更新了 data pipeline 的设置,有以下几个重要的修改: -- 去除了 normalization 和 color space 转换的操作,这两部分移动到了 `data_preprocessor` 部分。 +- 去除了 `normalization` 和 `color space` 两种数据变换操作,并将它们移动到了 `data_preprocessor` 部分。 - 原版本中格式化数据变换 pipeline 的 `Collect` 和 `ToTensor` 在新版本中被整合为 `PackInputs`。更多的细节可以在 [数据变换文档](../howto/transforms.md) 中查看。
From 11750b8972d3008a2d921a831612ba668cfb25c7 Mon Sep 17 00:00:00 2001 From: Xin Li <7219519+xin-li-67@users.noreply.github.com> Date: Wed, 12 Jul 2023 14:38:45 +0800 Subject: [PATCH 6/8] Update docs/zh_cn/migration/data.md Co-authored-by: Range King --- docs/zh_cn/migration/data.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh_cn/migration/data.md b/docs/zh_cn/migration/data.md index b9ef4d59b1..ed71d83040 100644 --- a/docs/zh_cn/migration/data.md +++ b/docs/zh_cn/migration/data.md @@ -35,7 +35,7 @@ train_pipeline = [ # Train pipeline dict(type='RescaleToZeroOne', keys=['lq', 'gt']), # 将图片从 [0, 255] 缩放到 [0, 1] dict(type='Normalize', # normalize 图片的 augmentation pipeline keys=['lq', 'gt'], # 需要 normalized 的图片 - mean=[0, 0, 0], # Mean values + mean=[0, 0, 0], # 平均值 std=[1, 1, 1], # Standard variance to_rgb=True), # 是否转换到 rgb 通道 dict(type='PairedRandomCrop', gt_patch_size=96), # PairedRandomCrop From 20dcf33e830f2beba325f49da894b87bc2e9f4c1 Mon Sep 17 00:00:00 2001 From: Xin Li <7219519+xin-li-67@users.noreply.github.com> Date: Wed, 12 Jul 2023 14:38:51 +0800 Subject: [PATCH 7/8] Update docs/zh_cn/migration/data.md Co-authored-by: Range King --- docs/zh_cn/migration/data.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh_cn/migration/data.md b/docs/zh_cn/migration/data.md index ed71d83040..7ace29f813 100644 --- a/docs/zh_cn/migration/data.md +++ b/docs/zh_cn/migration/data.md @@ -36,7 +36,7 @@ train_pipeline = [ # Train pipeline dict(type='Normalize', # normalize 图片的 augmentation pipeline keys=['lq', 'gt'], # 需要 normalized 的图片 mean=[0, 0, 0], # 平均值 - std=[1, 1, 1], # Standard variance + std=[1, 1, 1], # 标准差 to_rgb=True), # 是否转换到 rgb 通道 dict(type='PairedRandomCrop', gt_patch_size=96), # PairedRandomCrop dict(type='Flip', # 翻转图片 From ee245edbd7e50f04c2c717cacd4d3da6daf21ec4 Mon Sep 17 00:00:00 2001 From: Xin Li <7219519+xin-li-67@users.noreply.github.com> Date: Wed, 12 Jul 2023 14:38:57 +0800 Subject: [PATCH 8/8] Update docs/zh_cn/migration/data.md Co-authored-by: Range King --- docs/zh_cn/migration/data.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh_cn/migration/data.md b/docs/zh_cn/migration/data.md index 7ace29f813..93c2ed51f0 100644 --- a/docs/zh_cn/migration/data.md +++ b/docs/zh_cn/migration/data.md @@ -41,7 +41,7 @@ train_pipeline = [ # Train pipeline dict(type='PairedRandomCrop', gt_patch_size=96), # PairedRandomCrop dict(type='Flip', # 翻转图片 keys=['lq', 'gt'], # 需要翻转的图片 - flip_ratio=0.5, # Flip ratio + flip_ratio=0.5, # 翻转概率 direction='horizontal'), # Flip 方向 dict(type='Flip', # Flip 图片 keys=['lq', 'gt'], # 需要翻转的图片