File size: 11,397 Bytes
9effc03
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302

# Reading and Operating this file
# ~ is basically Null/None/False e.t.c, you can either use ~ as the value, or comment out the line
# A commented-out line's value is typically it's default but is disabled due to it being commented out
# When a line starts with two #'s (comment line starting with #), then when un-commenting, it's intended to be disabled
# for example, under network_G everything but ESRGAN's values are commented-out, so to show which should still be
# enabled/disabled, a double-comment is used

name: sollevante  # put "debug" in the name to enable debug mode, only enable to test code works!!!
use_tb_logger: true
model: srragan  # srragan | sr | srgan | ppon | asrragan
scale: 4
gpu_ids:
- 0

datasets:
  train:
    name: sollevante-train
    mode: LRHR
    # high resolution / ground truth images
    dataroot_HR:
    - /mnt/8tb-hdd-1/datasets/sollevante/hr/train
    # low resolution images. If there are missing LR images, they will be generated on the fly from HR
    dataroot_LR:
    - /mnt/8tb-hdd-1/datasets/sollevante/lr/train
    subset_file: ~
    use_shuffle: true
    znorm: false  # true | false // To normalize images in [-1, 1] range. Default = None (range [0,1]). Can use with activation function like tanh.
    n_workers: 8  # 0 to disable CPU multithreading, or an integrer representing CPU threads to use for dataloading
    batch_size: 32
    HR_size: 128  #patch size. Default: 128. Needs to be coordinated with the patch size of the features network
    # Color space conversion: "color" for both LR and HR, "color_LR" for LR independently, "color_HR" for HR independently
    #color: y  # remove for no conversion (RGB) | "y" for Y in YCbCr | "gray" to convert RGB to grayscale | "RGB" to convert gray to RGB
    #color_LR: y  # remove for no conversion (RGB) | "y" for Y in YCbCr | "gray" to convert RGB to grayscale | "RGB" to convert gray to RGB
    #color_HR: y  # remove for no conversion (RGB) | "y" for Y in YCbCr | "gray" to convert RGB to grayscale | "RGB" to convert gray to RGB
    # LR and HR modifiers. Random flip LR and HR or ignore provided LRs and generate new ones on the fly with defined probability:
    #rand_flip_LR_HR: false  # flip LR and HR during training.
    #flip_chance: 0.05  # Example: 0.05 = 5% chance of LR and HR flipping during training.
    #aug_downscale: 0.2  # Example: 0.6 = 60% chance of generating LR on the fly, even if LR dataset exists

    # If manually configuring on the fly generation of LR: (else, it will automatically default to Matlab-like downscale algorithm (777) when/if required
    lr_downscale: true
    lr_downscale_types:
    # select from [0,1,2,3,4,5,777] where each number is: (scale algorithm)
    # - cv2.INTER_NEAREST
    # - cv2.INTER_LINEAR
    # - cv2.INTER_CUBIC
    # - cv2.INTER_AREA
    # - cv2.INTER_LANCZOS4
    # - cv2.INTER_LINEAR_EXACT
    # - matlab.bicubic
    - 1
    - 2
    - 777

    # Rotations augmentations:
    use_flip: true  # flip lr with hr and hr with lr
    use_rot: true  # rotate images in 90 degree angles,
    hr_rrot: false  # rotate images in random degrees between -45 and 45

    # Noise and blur augmentations:
    lr_blur: false
    lr_blur_types:
    # select from: average | box | gaussian | bilateral | clean, `median` and `motion` aren't working yet
    - gaussian
    - clean
    - clean
    - clean
    lr_noise: false
    lr_noise_types:
    # select from: gaussian | JPEG | quantize | poisson | dither | s&p | speckle | clean
    - gaussian
    - clean
    - clean
    - clean
    - clean
    lr_noise2: false
    lr_noise_types2:
    # select from: gaussian | JPEG | quantize | poisson | dither | s&p | speckle | clean
    - dither
    - dither
    - clean
    - clean
    hr_noise: false
    hr_noise_types:
    # select from: gaussian | JPEG | quantize | poisson | dither | s&p | speckle | clean
    - gaussian
    - clean
    - clean
    - clean
    - clean

    # Color augmentations
    #lr_fringes: true
    #lr_fringes_chance: 0.4
    #auto_levels: HR  # "HR" | "LR" | "Both" //add auto levels to the images to expand dynamic range. Can use with SPL loss or (MS)-SSIM.
    #rand_auto_levels: 0.7  # Example: 0.4 = 40% chance of adding auto levels to images on the fly
    #unsharp_mask: true  # add a un-sharpening mask to HR images. Can work well together with the HFEN loss function.
    #rand_unsharp: 1  # Example: 0.5 = 50% chance of adding un-sharpening mask to HR images on the fly

    # Augmentations for classification or (maybe) in-painting networks:
    #lr_cutout: false
    #lr_erasing: false
  val:
    name: sollevante-val
    mode: LRHR
    dataroot_HR:
    - /mnt/8tb-hdd-1/datasets/sollevante/hr/val
    dataroot_LR:
    - /mnt/8tb-hdd-1/datasets/sollevante/lr/val
    znorm: false  # true | false // To normalize images in [-1, 1] range. Default = None (range [0,1]). Can use with activation function like tanh.

    # Color space conversion: "color" for both LR and HR, "color_LR" for LR independently, "color_HR" for HR independently
    #color: y  # remove for no conversion (RGB) | "y" for Y in YCbCr | "gray" to convert RGB to grayscale | "RGB" to convert gray to RGB
    #color_LR: y  # remove for no conversion (RGB) | "y" for Y in YCbCr | "gray" to convert RGB to grayscale | "RGB" to convert gray to RGB
    #color_HR: y  # remove for no conversion (RGB) | "y" for Y in YCbCr | "gray" to convert RGB to grayscale | "RGB" to convert gray to RGB

    #hr_crop: false
    lr_downscale: false
    lr_downscale_types:
    # select from [0,1,2,3,4,5] where each number is: (scale algorithm)
    # - cv2.INTER_NEAREST
    # - cv2.INTER_LINEAR
    # - cv2.INTER_CUBIC
    # - cv2.INTER_AREA
    # - cv2.INTER_LANCZOS4
    # - cv2.INTER_LINEAR_EXACT
    - 0
    - 1
path:
  root: /home/owner/github/BasicSR
  pretrain_model_G: ../experiments/pretrained_models/RRDB_PSNR_x4.pth
  resume_state: ../experiments/sollevante/training_state/140000.state

# Generator options:
network_G:
  # ESRGAN:
  which_model_G: RRDB_net  # RRDB_net | sr_resnet
  norm_type: ~
  mode: CNA
  nf: 64  # number of discriminator filters in the first convolution layer
  nb: 23
  in_nc: 3  # of input image channels: 3 for RGB and 1 for grayscale
  out_nc: 3  # of output image channels: 3 for RGB and 1 for grayscale
  gc: 32
  group: 1
  convtype: Conv2D  # convolution, Conv2D | PartialConv2D
  net_act: leakyrelu  # network activation, swish | leakyrelu
  #finalact: tanh  # in testing, activation function to make outputs fit in [-1,1] range. Coordinate with znorm

  # ASRGAN:
  #which_model_G: asr_resnet  # asr_resnet | asr_cnn
  #nf: 64

  # PPON:
  #which_model_G: ppon
  ##norm_type: ~
  #mode: CNA
  #nf: 64
  #nb: 24
  #in_nc: 3
  #out_nc: 3
  ##gc: 32
  #group: 1
  ##convtype: Conv2D  # Conv2D | PartialConv2D

  # SRGAN:
  #which_model_G: sr_resnet  # RRDB_net | sr_resnet
  #norm_type: ~
  #mode: CNA
  #nf: 64
  #nb: 16
  #in_nc: 3
  #out_nc: 3

  # SR:
  #which_model_G: RRDB_net  # RRDB_net | sr_resnet
  #norm_type: ~
  #mode: CNA
  #nf: 64
  #nb: 23
  #in_nc: 3
  #out_nc: 3
  #gc: 32
  #group: 1

# Discriminator options:
network_D:
  # ESRGAN (default) | PPON
  which_model_D: discriminator_vgg_128  # discriminator_vgg_128 | discriminator_vgg
  norm_type: batch
  act_type: leakyrelu
  mode: CNA  # CNA | NAC
  nf: 64
  in_nc: 3

  # ASRGAN (feature extraction)
  #which_model_D: discriminator_vgg_128_fea
  #norm_type: batch
  #act_type: leakyrelu
  #mode: CNA  # CNA | NAC
  #nf: 64
  #in_nc: 3
  #spectral_norm: true
  #self_attention: true
  #max_pool: true
  #poolsize: 4

# Schedulers options:
train:
  lr_G: !!float 1e-4  # starting lr_g
  weight_decay_G: 0
  beta1_G: 0.9
  lr_D: !!float 1e-4  # starting lr_d
  weight_decay_D: 0
  beta1_D: 0.9

  # For MultiStepLR (ESRGAN, default):,
  lr_scheme: MultiStepLR
  lr_steps:
  - 50000
  - 100000
  - 200000
  - 300000
  lr_gamma: 0.5  # lr change at every step (multiplied by)

  # For StepLR_Restart (PPON):
  # lr_gamma: 0.9  # lr change at every step (multiplied by)
  # lr_scheme: StepLR_Restart  # MultiStepLR | MultiStepLR_Restart | StepLR | StepLR_Restart | CosineAnnealingLR_Restart
  # lr_step_sizes:  # Steps for each restart for "StepLR_Restart"
  # - 200
  # - 100
  # - 250
  # restarts:  # Restart iterations for MultiStepLR_Restart | StepLR_Restart | CosineAnnealingLR_Restart
  # - 138000
  # - 172500
  # restart_weights: # lr_() * each weight in "restart_weights" for each restart in "restarts"
  # - 1
  # - 0.5
  # - 0.5
  ## clear_state: true

  # For MultiStepLR_Restart:
  # lr_gamma: 0.9
  # lr_scheme: MultiStepLR_Restart  # MultiStepLR | MultiStepLR_Restart | StepLR | StepLR_Restart | CosineAnnealingLR_Restart
  # lr_steps:  # For "MultiStepLR" and "MultiStepLR_Restart"
  # - 34500
  # - 69000
  # - 103500
  # - 155250
  # - 189750
  # - 241500
  # restarts:  # Restart iterations for MultiStepLR_Restart | StepLR_Restart | CosineAnnealingLR_Restart
  # - 138000
  # - 172500
  # restart_weights:  # lr_() * each weight in "restart_weights" for each restart in "restarts"
  # - 0.5
  # - 0.5
  ## clear_state: true

  # Losses:
  pixel_criterion: l1  # pixel loss, l1 | l2 | cb | elastic | relativel1 | l1cosinesim
  pixel_weight: !!float 1e-2  # 1e-2 | 1
  feature_criterion: l1  # feature loss (VGG feature network), l1 | l2 | cb | elastic
  feature_weight: 1
  #dis_feature_criterion: l1  # discriminator feature loss, asrragan only, l1 | l2 | cb | elastic
  #dis_feature_weight: 1
  #hfen_criterion: l1  # helps in deblurring and finding edges/lines, l1 | l2 | rel_l1 | rel_l2
  #hfen_weight: !!float 1e-1
  #tv_type: normal  # helps in denoising, reducing upscale artefacts
  #tv_weight: !!float 1e-6
  #tv_norm: 1  # 1 == l1 or 2 == l2. Change "tv_weight" so the l_g_tv is around 1e-02
  #ssim_type: ms-ssim  # ssim | ms-ssim  # helps to maintain luminance, contrast and covariance between SR and HR
  #ssim_weight: 1
  gan_type: vanilla  # vanilla | basic
  gan_weight: !!float 5e-3
  #lpips_weight: 1  # perceptual loss
  #lpips_type: net-lin  # net-lin | net
  #lpips_net: squeeze  # vgg | alex | squeeze
  #spl_weight: !!float 1e-3  # SPL loss function. note: needs to add a cap in the generator (finalcap) or it becomes unstable
  #spl_type: spl  # spl | gpl | cpl

  # for wgan-gp:
  #D_update_ratio: 1
  #D_init_iters: 0
  #gp_weigth: 10

  # For PPON:
  #train_phase: 1  # Training starting phase, can skip the first phases
  #phase1_s: 100  # -1 to skip. Need to coordinate with the LR steps. //COBranch: lr =  2e−4, decreased by the factor of 2 for every 1000 epochs (1.38e+5 iterations) 138k
  #phase2_s: 200  # -1 to skip. Need to coordinate with the LR steps. //SOBranch: λ = 1e+3 (?), lr = 1e−4 and halved at every 250 epochs (3.45e+4iterations) 34.5k
  #phase3_s: 5000000 # -1 to skip. Need to coordinate with the LR steps. //POBranch: η = 5e−3,  lr = 1e−4 and halved at every 250 epochs (3.45e+4iterations) 34.5k
  #phase4_s: 100100

  # Other training options:
  #finalcap: tanh  # Test. Cap Generator outputs to fit in: [-1,1] range ("tanh"), rescale tanh to [0,1] range ("scaltanh"), cap ("sigmoid") or clamp ("clamp") to [0,1] range. Default = None. Coordinate with znorm.
  #manual_seed: 0,  # only set if you want reproducibility as it will incur a performance cut, 0 to 2^32-1
  niter: !!float 5e5
  val_freq: !!float 5e3
logger:
  print_freq: 200
  save_checkpoint_freq: !!float 5e3