# Not exactly the same as SRResNet in <Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network>
# With 16 Residual blocks w/o BN

#### general settings
name: 001_MSRResNetx4_scratch_DIV2K
use_tb_logger: true
model: sr
distortion: sr
scale: 4
gpu_ids: [0]

#### datasets
datasets:
  train:
    name: DIV2K
    mode: LQGT
    dataroot_GT: ../datasets/DIV2K/DIV2K800_sub.lmdb
    dataroot_LQ: ../datasets/DIV2K/DIV2K800_sub_bicLRx4.lmdb

    use_shuffle: true
    n_workers: 6  # per GPU
    batch_size: 16
    target_size: 128
    use_flip: true
    use_rot: true
    color: RGB
  val:
    name: val_set5
    mode: LQGT
    dataroot_GT: ../datasets/val_set5/Set5
    dataroot_LQ: ../datasets/val_set5/Set5_bicLRx4

#### network structures
network_G:
  which_model_G: MSRResNet
  in_nc: 3
  out_nc: 3
  nf: 64
  nb: 16
  upscale: 4

#### path
path:
  pretrain_model_G: ~
  strict_load: true
  resume_state: ~

#### training settings: learning rate scheme, loss
train:
  lr_G: !!float 2e-4
  lr_scheme: CosineAnnealingLR_Restart
  beta1: 0.9
  beta2: 0.99
  niter: 1000000
  warmup_iter: -1  # no warm up
  T_period: [250000, 250000, 250000, 250000]
  restarts: [250000, 500000, 750000]
  restart_weights: [1, 1, 1]
  eta_min: !!float 1e-7

  pixel_criterion: l1
  pixel_weight: 1.0

  manual_seed: 10
  val_freq: !!float 5e3

#### logger
logger:
  print_freq: 100
  save_checkpoint_freq: !!float 5e3