Maol commited on
Commit
dbe40fc
1 Parent(s): 2f4c112

Upload Training.md

Browse files
Files changed (1) hide show
  1. Training.md +100 -0
Training.md ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # :computer: How to Train Real-ESRGAN
2
+
3
+ The training codes have been released. <br>
4
+ Note that the codes have a lot of refactoring. So there may be some bugs/performance drops. Welcome to report issues and I will also retrain the models.
5
+
6
+ ## Overview
7
+
8
+ The training has been divided into two stages. These two stages have the same data synthesis process and training pipeline, except for the loss functions. Specifically,
9
+
10
+ 1. We first train Real-ESRNet with L1 loss from the pre-trained model ESRGAN.
11
+ 1. We then use the trained Real-ESRNet model as an initialization of the generator, and train the Real-ESRGAN with a combination of L1 loss, perceptual loss and GAN loss.
12
+
13
+ ## Dataset Preparation
14
+
15
+ We use DF2K (DIV2K and Flickr2K) + OST datasets for our training. Only HR images are required. <br>
16
+ You can download from :
17
+
18
+ 1. DIV2K: http://data.vision.ee.ethz.ch/cvl/DIV2K/DIV2K_train_HR.zip
19
+ 2. Flickr2K: https://cv.snu.ac.kr/research/EDSR/Flickr2K.tar
20
+ 3. OST: https://openmmlab.oss-cn-hangzhou.aliyuncs.com/datasets/OST_dataset.zip
21
+
22
+ For the DF2K dataset, we use a multi-scale strategy, *i.e.*, we downsample HR images to obtain several Ground-Truth images with different scales.
23
+
24
+ We then crop DF2K images into sub-images for faster IO and processing.
25
+
26
+ You need to prepare a txt file containing the image paths. The following are some examples in `meta_info_DF2Kmultiscale+OST_sub.txt` (As different users may have different sub-images partitions, this file is not suitable for your purpose and you need to prepare your own txt file):
27
+
28
+ ```txt
29
+ DF2K_HR_sub/000001_s001.png
30
+ DF2K_HR_sub/000001_s002.png
31
+ DF2K_HR_sub/000001_s003.png
32
+ ...
33
+ ```
34
+
35
+ ## Train Real-ESRNet
36
+
37
+ 1. Download pre-trained model [ESRGAN](https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.1/ESRGAN_SRx4_DF2KOST_official-ff704c30.pth) into `experiments/pretrained_models`.
38
+ ```bash
39
+ wget https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.1/ESRGAN_SRx4_DF2KOST_official-ff704c30.pth -P experiments/pretrained_models
40
+ ```
41
+ 1. Modify the content in the option file `options/train_realesrnet_x4plus.yml` accordingly:
42
+ ```yml
43
+ train:
44
+ name: DF2K+OST
45
+ type: RealESRGANDataset
46
+ dataroot_gt: datasets/DF2K # modify to the root path of your folder
47
+ meta_info: realesrgan/meta_info/meta_info_DF2Kmultiscale+OST_sub.txt # modify to your own generate meta info txt
48
+ io_backend:
49
+ type: disk
50
+ ```
51
+ 1. If you want to perform validation during training, uncomment those lines and modify accordingly:
52
+ ```yml
53
+ # Uncomment these for validation
54
+ # val:
55
+ # name: validation
56
+ # type: PairedImageDataset
57
+ # dataroot_gt: path_to_gt
58
+ # dataroot_lq: path_to_lq
59
+ # io_backend:
60
+ # type: disk
61
+
62
+ ...
63
+
64
+ # Uncomment these for validation
65
+ # validation settings
66
+ # val:
67
+ # val_freq: !!float 5e3
68
+ # save_img: True
69
+
70
+ # metrics:
71
+ # psnr: # metric name, can be arbitrary
72
+ # type: calculate_psnr
73
+ # crop_border: 4
74
+ # test_y_channel: false
75
+ ```
76
+ 1. Before the formal training, you may run in the `--debug` mode to see whether everything is OK. We use four GPUs for training:
77
+ ```bash
78
+ CUDA_VISIBLE_DEVICES=0,1,2,3 \
79
+ python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 realesrgan/train.py -opt options/train_realesrnet_x4plus.yml --launcher pytorch --debug
80
+ ```
81
+ 1. The formal training. We use four GPUs for training. We use the `--auto_resume` argument to automatically resume the training if necessary.
82
+ ```bash
83
+ CUDA_VISIBLE_DEVICES=0,1,2,3 \
84
+ python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 realesrgan/train.py -opt options/train_realesrnet_x4plus.yml --launcher pytorch --auto_resume
85
+ ```
86
+
87
+ ## Train Real-ESRGAN
88
+
89
+ 1. After the training of Real-ESRNet, you now have the file `experiments/train_RealESRNetx4plus_1000k_B12G4_fromESRGAN/model/net_g_1000000.pth`. If you need to specify the pre-trained path to other files, modify the `pretrain_network_g` value in the option file `train_realesrgan_x4plus.yml`.
90
+ 1. Modify the option file `train_realesrgan_x4plus.yml` accordingly. Most modifications are similar to those listed above.
91
+ 1. Before the formal training, you may run in the `--debug` mode to see whether everything is OK. We use four GPUs for training:
92
+ ```bash
93
+ CUDA_VISIBLE_DEVICES=0,1,2,3 \
94
+ python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 realesrgan/train.py -opt options/train_realesrgan_x4plus.yml --launcher pytorch --debug
95
+ ```
96
+ 1. The formal training. We use four GPUs for training. We use the `--auto_resume` argument to automatically resume the training if necessary.
97
+ ```bash
98
+ CUDA_VISIBLE_DEVICES=0,1,2,3 \
99
+ python -m torch.distributed.launch --nproc_per_node=4 --master_port=4321 realesrgan/train.py -opt options/train_realesrgan_x4plus.yml --launcher pytorch --auto_resume
100
+ ```