# epoch: 3000 for total batch size=16
total_iters: 400000
output_dir: output_dir

model:
  name: MPRModel
  generator:
    name: MPRNet
    n_feat: 96
    scale_unetfeats: 48
    scale_orsnetfeats: 32

  char_criterion:
    name: CharbonnierLoss
  edge_criterion:
    name: EdgeLoss

dataset:
  train:
    name: MPRTrain
    rgb_dir: data/GoPro/train
    num_workers: 4
    batch_size: 2 # 8GPUs
    img_options:
      patch_size: 256
  test:
    name: MPRVal
    rgb_dir: data/GoPro/test
    num_workers: 1
    batch_size: 1
    img_options:
      patch_size: 256

lr_scheduler:
  name: CosineAnnealingRestartLR
  learning_rate: !!float 1e-4
  periods: [400000]
  restart_weights: [1]
  eta_min: !!float 1e-6

validate:
  interval: 5000
  save_img: false

  metrics:
    psnr: # metric name, can be arbitrary
      name: PSNR
      crop_border: 4
      test_y_channel: false
    ssim:
      name: SSIM
      crop_border: 4
      test_y_channel: false

optimizer:
  name: Adam
  # add parameters of net_name to optim
  # name should in self.nets
  net_names:
    - generator
  beta1: 0.9
  beta2: 0.999
  epsilon: 1e-8

log_config:
  interval: 100
  visiual_interval: 5000

snapshot_config:
  interval: 5000
