"vscode:/vscode.git/clone" did not exist on "aa4bb1f669b9fe80bfe7fcddb047b8ae7be5d175"
Commit a246df9c authored by Rayyyyy's avatar Rayyyyy
Browse files

update tiny_datasets

parent d118e789
...@@ -4,18 +4,18 @@ ...@@ -4,18 +4,18 @@
## 模型结构 ## 模型结构
生成网络: 采用ESRGAN的生成网络对于x4倍的超分辨网络完全按照ESRGAN的生成器执行;对x2和x1倍的超分辨网络先进行pixel-unshuffle(pixel-shuffl的反操作pixel-shuffle可理解为通过压缩图像通道而对图像尺寸进行放大)以降低图像分辨率为前提对图像通道数进行扩充然后将处理后的图像输入网络进行超分辨重建。 生成网络: 采用ESRGAN的生成网络, 对于x4倍的超分辨, 网络完全按照ESRGAN的生成器执行;对x2和x1倍的超分辨, 网络先进行pixel-unshuffle(pixel-shuffl的反操作, pixel-shuffle可理解为通过压缩图像通道而对图像尺寸进行放大), 以降低图像分辨率为前提, 对图像通道数进行扩充, 然后将处理后的图像输入网络进行超分辨重建。
<div align=center> <div align=center>
<img src="./doc/ESRGAN.png"/> <img src="./doc/ESRGAN.png"/>
</div> </div>
对抗网络: 由于使用的复杂的构建数据集的方式所以需要使用更先进的判别器对生成图像进行判别。使用U-Net判别器可以在像素角度对单个生成的像素进行真假判断这能够在保证生成图像整体真实的情况下注重生成图像细节。 对抗网络: 由于使用的复杂的构建数据集的方式, 所以需要使用更先进的判别器对生成图像进行判别。使用U-Net判别器可以在像素角度, 对单个生成的像素进行真假判断, 这能够在保证生成图像整体真实的情况下, 注重生成图像细节。
<div align=center> <div align=center>
<img src="./doc/UNet.png"/> <img src="./doc/UNet.png"/>
</div> </div>
## 算法原理 ## 算法原理
通过使用更实用的退化过程合成训练对扩展强大的ESRGAN以恢复一般的真实世界LR图像。 通过使用更实用的退化过程合成训练对, 扩展强大的ESRGAN以恢复一般的真实世界LR图像。
<div align=center> <div align=center>
<img src="./doc/High-order的pipeline.png"/> <img src="./doc/High-order的pipeline.png"/>
</div> </div>
...@@ -102,18 +102,23 @@ python setup.py develop ...@@ -102,18 +102,23 @@ python setup.py develop
├── datasets ├── datasets
│ ├── DF2K │ ├── DF2K
│ ├── DF2K_HR # 将DIV2K和Flickr2K的HR图像放于这里 │ ├── DF2K_HR # 将DIV2K和Flickr2K的HR图像放于这里
│ ├── DF2K_HR_sub # 生成的
│ ├── DF2K_multiscale # 生成的 │ ├── DF2K_multiscale # 生成的
│ ├── DF2K_multiscale_sub # 生成的 │ ├── DF2K_multiscale_sub # 生成的
│ └── meta_info # 生成的 │ └── meta_info # 生成的
│ ├── OST │ ├── OST
│ ├── train_HR # 将OST的HR图像放于这里
│ ├── train_HR_sub # 生成的
``` ```
项目提供了tiny_datasets进行快速上手测试, 如需使用tiny_datasets, 下面的生成步骤的数据路径需进行对应修改。
### 预处理数据集 ### 预处理数据集
#### 1.【可选】生成多尺寸图片 #### 1.【可选】生成多尺寸图片
针对 DF2K 数据集我们使用多尺寸缩放策略,对 HR 图像进行下采样获得多尺寸的标准参考(Ground-Truth)图像。 <br> 针对 DF2K 数据集, 我们使用多尺寸缩放策略,对 HR 图像进行下采样, 获得多尺寸的标准参考(Ground-Truth)图像。 <br>
使用 [scripts/generate_multiscale_DF2K.py](scripts/generate_multiscale_DF2K.py) 脚本快速生成多尺寸的图像。<br> 使用 [scripts/generate_multiscale_DF2K.py](scripts/generate_multiscale_DF2K.py) 脚本快速生成多尺寸的图像。<br>
如果只想简单试试而不进行准确训练那么该过程可选。 如果只想简单试试而不进行准确训练, 那么该过程可选。
```bash ```bash
# example # example
...@@ -122,11 +127,11 @@ python scripts/generate_multiscale_DF2K.py --input datasets/DF2K/DF2K_HR --outpu ...@@ -122,11 +127,11 @@ python scripts/generate_multiscale_DF2K.py --input datasets/DF2K/DF2K_HR --outpu
#### 2.【可选】裁切为子图像 #### 2.【可选】裁切为子图像
使用脚本 [scripts/extract_subimages.py](scripts/extract_subimages.py) 将 DF2K 图像裁切为子图像以加快 IO 和处理速度。<br> 使用脚本 [scripts/extract_subimages.py](scripts/extract_subimages.py) 将 DF2K 图像裁切为子图像, 以加快 IO 和处理速度。<br>
如果你的 IO 够好或储存空间有限那么此步骤是可选的。 如果你的 IO 够好或储存空间有限, 那么此步骤是可选的。
```bash ```bash
# example # example
python scripts/extract_subimages.py --input datasets/DF2K/DF2K_multiscale --output datasets/DF2K/DF2K_multiscale_sub --crop_size 400 --step 200 python scripts/extract_subimages.py --input datasets/DF2K/DF2K_HR --output datasets/DF2K/DF2K_HR_sub --crop_size 400 --step 200
``` ```
#### 3. 准备元信息 txt #### 3. 准备元信息 txt
...@@ -158,9 +163,9 @@ train: ...@@ -158,9 +163,9 @@ train:
type: disk type: disk
``` ```
如果需要指定预训练路径到其他文件`pretrain_network_g` 参数对应的值, 当前默认保存为`experiments/train_RealESRNetx4plus_1000k_B12G4_fromESRGAN/model/net_g_1000000.pth` 如果需要指定预训练路径到其他文件, `pretrain_network_g` 参数对应的值, 当前默认保存为`experiments/train_RealESRNetx4plus_1000k_B12G4_fromESRGAN/model/net_g_1000000.pth`
3. 如果你想在训练过程中执行验证就取消注释这些内容并进行相应的修改: 3. 如果你想在训练过程中执行验证, 就取消注释这些内容并进行相应的修改:
```yml ```yml
# 取消注释这些以进行验证 # 取消注释这些以进行验证
# val: # val:
...@@ -180,7 +185,7 @@ train: ...@@ -180,7 +185,7 @@ train:
# save_img: True # save_img: True
# metrics: # metrics:
# psnr: # 指标名称可以是任意的 # psnr: # 指标名称, 可以是任意的
# type: calculate_psnr # type: calculate_psnr
# crop_border: 4 # crop_border: 4
# test_y_channel: false # test_y_channel: false
...@@ -188,14 +193,14 @@ train: ...@@ -188,14 +193,14 @@ train:
### 微调训练 ### 微调训练
你可以用自己的数据集微调 Real-ESRGAN。一般地微调(Fine-Tune)程序可以分为两种类型: 你可以用自己的数据集微调 Real-ESRGAN。一般地, 微调(Fine-Tune)程序可以分为两种类型:
1. [动态生成降级图像](#动态生成降级图像) 1. [动态生成降级图像](#动态生成降级图像)
2. [使用**已配对**的数据](#使用已配对的数据) 2. [使用**已配对**的数据](#使用已配对的数据)
#### 动态生成降级图像 #### 动态生成降级图像
只需要高分辨率图像在训练过程中使用 Real-ESRGAN 描述的降级模型生成低质量图像。 只需要高分辨率图像, 在训练过程中, 使用 Real-ESRGAN 描述的降级模型生成低质量图像。
1. 下载预训练模型到 `experiments/pretrained_models` 目录下: 1. 下载预训练模型到 `experiments/pretrained_models` 目录下:
...@@ -209,7 +214,7 @@ train: ...@@ -209,7 +214,7 @@ train:
wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.3/RealESRGAN_x4plus_netD.pth -P experiments/pretrained_models wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.2.3/RealESRGAN_x4plus_netD.pth -P experiments/pretrained_models
``` ```
2. 修改选项文件 [options/finetune_realesrgan_x4plus.yml](options/finetune_realesrgan_x4plus.yml)特别是 `datasets` 部分: 2. 修改选项文件 [options/finetune_realesrgan_x4plus.yml](options/finetune_realesrgan_x4plus.yml), 特别是 `datasets` 部分:
```yml ```yml
train: train:
...@@ -223,16 +228,16 @@ train: ...@@ -223,16 +228,16 @@ train:
#### 使用已配对的数据 #### 使用已配对的数据
你还可以用自己已经配对的数据微调 RealESRGAN这个过程更类似于微调 ESRGAN。 你还可以用自己已经配对的数据微调 RealESRGAN, 这个过程更类似于微调 ESRGAN。
1. 数据准备 1. 数据准备
假设你已经有两个文件夹(folder): 假设你已经有两个文件夹(folder):
- **gt folder**(标准参考高分辨率图像):*datasets/DF2K/DIV2K_train_HR_sub* - **gt folder**(标准参考, 高分辨率图像):*datasets/DF2K/DIV2K_train_HR_sub*
- **lq folder**(低质量低分辨率图像):*datasets/DF2K/DIV2K_train_LR_bicubic_X4_sub* - **lq folder**(低质量, 低分辨率图像):*datasets/DF2K/DIV2K_train_LR_bicubic_X4_sub*
然后使用脚本 [scripts/generate_meta_info_pairdata.py](scripts/generate_meta_info_pairdata.py) 生成元信息(meta_info)txt 文件。 然后, 使用脚本 [scripts/generate_meta_info_pairdata.py](scripts/generate_meta_info_pairdata.py) 生成元信息(meta_info)txt 文件。
```bash ```bash
python scripts/generate_meta_info_pairdata.py --input datasets/DF2K/DIV2K_train_HR_sub datasets/DF2K/DIV2K_train_LR_bicubic_X4_sub --meta_info datasets/DF2K/meta_info/meta_info_DIV2K_sub_pair.txt python scripts/generate_meta_info_pairdata.py --input datasets/DF2K/DIV2K_train_HR_sub datasets/DF2K/DIV2K_train_LR_bicubic_X4_sub --meta_info datasets/DF2K/meta_info/meta_info_DIV2K_sub_pair.txt
...@@ -254,7 +259,7 @@ python scripts/generate_meta_info_pairdata.py --input datasets/DF2K/DIV2K_train_ ...@@ -254,7 +259,7 @@ python scripts/generate_meta_info_pairdata.py --input datasets/DF2K/DIV2K_train_
3. finetune 3. finetune
修改选项文件 [options/finetune_realesrgan_x4plus_pairdata.yml](options/finetune_realesrgan_x4plus_pairdata.yml) 特别是 `datasets` 部分: 修改选项文件 [options/finetune_realesrgan_x4plus_pairdata.yml](options/finetune_realesrgan_x4plus_pairdata.yml) , 特别是 `datasets` 部分:
```yml ```yml
train: train:
...@@ -268,7 +273,7 @@ train: ...@@ -268,7 +273,7 @@ train:
``` ```
### 训练命令 ### 训练命令
#### 单机多卡 #### 单机多卡
默认auto_resume模式根据完整训练或者微调训练修改-opt参数对应的yml文件。当前默认为完整训练 默认auto_resume模式, 根据完整训练或者微调训练, 修改-opt参数对应的yml文件。当前默认为完整训练
```bash ```bash
bash train_multi.sh bash train_multi.sh
``` ```
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment