实验——基于pytorch的超分和去噪网络联合fine tuning

版权声明: https://blog.csdn.net/gwplovekimi/article/details/85260137

本博文是本人实现超分和去噪网络联合训练与fine tuning的实验笔记

先基于之前博文《基于pytorch的噪声估计网络》处理的噪声图片,进行bicubic downsample的操作(应该先bicubic再加噪)

进入对应子目录下,运行

$  matlab -nodesktop -nosplash -r matlabfile

python train.py -opt options/train/train_sub_sr.json

首先生成subnetwork板块(在networks.py)

#########################################################################################################################
def define_sub(opt):
    gpu_ids = opt['gpu_ids']
    opt_net = opt['network_sub']
    which_model = opt_net['which_model_sub']

    if which_model == 'noise_estimation':
        subnet = arch.NENET(in_nc=opt_net['in_nc'], out_nc=opt_net['out_nc'], nf=opt_net['nf'], nb=opt_net['nb'],
                                norm_type=opt_net['norm_type'], mode=opt_net['mode'])
    else:
        raise NotImplementedError('subnet model [{:s}] not recognized'.format(which_model))

    if gpu_ids:
        assert torch.cuda.is_available()
        subnet = nn.DataParallel(subnet)
    return subnet
############################################################################################################################

对于setting,也就是.jason文件,如下

{
  "name": "debug_finetune_srresnet_dncnn_DIVIK800" //  please remove "debug_" during training
  , "tb_logger_dir": "sr_c16s06"
  , "use_tb_logger": true
  , "model":"sr_sub"///////this is important
  , "scale": 4
  , "crop_scale": 4
  , "gpu_ids": [3,5]
//  , "init_type": "kaiming"
//
  , "finetune_type": "sft" //sft | basic
//  , "init_norm_type": "zero"

  , "datasets": {
    "train": {
      "name": "DIV2K800"
//      , "mode": "LQHQ"
//      , "dataroot_HR": "/media/sdc/jwhe/BasicSR_v2/data/DIV2K/DIV2K800_sub"
//      , "dataroot_HQ": "/media/sdc/jwhe/BasicSR_v2/data/DIV2K/DIV2K800_sub_Gaussian15"
//      , "dataroot_LQ": "/media/sdc/jwhe/BasicSR_v2/data/DIV2K/DIV2K800_sub_Gaussian50"
      , "mode": "LRHR"
      , "dataroot_HR": "/home/guanwp/BasicSR_datasets/DIV2K800_sub"
      , "dataroot_LR": "/home/guanwp/BasicSR_datasets/DIV2K800_sub_bicLRx4_noiseALL"
      , "subset_file": null
      , "use_shuffle": true
      , "n_workers": 8
      , "batch_size": 24 // 16
      , "HR_size": 128 // 128 | 192 | 96
//      , "noise_gt": true
      , "use_flip": true
      , "use_rot": true
    }
//
//    , "val": {
//      "name": "val_CBSD68_Gaussian50",
//      "mode": "LRHR",
//      "dataroot_HR": "/home/jwhe/workspace/BasicSR_v3/data/CBSD68/mod2/CBSD68_mod",
//      "dataroot_LR": "/home/jwhe/workspace/BasicSR_v3/data/CBSD68/mod2/CBSD68_Gaussian50"
////      , "noise_gt": true
//    }
//   , "val": {
//      "name": "val_CBSD68_s08_c03",
//      "mode": "LRHR",
//      "dataroot_HR": "/home/jwhe/workspace/BasicSR_v3/data/CBSD68/mod2/CBSD68_mod",
//      "dataroot_LR": "/home/jwhe/workspace/BasicSR_v3/data/CBSD68/mod2/CBSD68_s08_c03"
//      , "noise_gt": true
//    }

//  , "val": {
//      "name": "val_CBSD68_clean",
//      "mode": "LRHR",
//      "dataroot_HR": "/media/sdc/jwhe/BasicSR_v2/data/CBSD68/mod2/CBSD68_mod",
//      "dataroot_LR": "/media/sdc/jwhe/BasicSR_v2/data/CBSD68/mod2/CBSD68_mod"
//    }

//    , "val": {
//      "name": "val_LIVE1_gray_JEPG10",
//      "mode": "LRHR",
//      "dataroot_HR": "/media/hjw/jwhe/BasicSR_v2/data/val/LIVE1_val/LIVE1_gray_mod",
//      "dataroot_LR": "/media/hjw/jwhe/BasicSR_v2/data/val/LIVE1_val/LIVE1_gray_jpg10"
//    }

//      , "val": {
//      "name": "val_LIVE1_JEPG80",
//      "mode": "LRHR",
//      "dataroot_HR": "/media/hjw/jwhe/BasicSR_v2/data/val/LIVE1_val/LIVE1_mod",
//      "dataroot_LR": "/media/hjw/jwhe/BasicSR_v2/data/val/LIVE1_val/LIVE1_jpg80"
//    }

//    , "val_2": {
//      "name": "val_Classic5_gray_JEPG30",
//      "mode": "LRHR",
//      "dataroot_HR": "/media/sdc/jwhe/BasicSR_v2/data/val/Classic5_val/classic5_mod",
//      "dataroot_LR": "/media/sdc/jwhe/BasicSR_v2/data/val/Classic5_val/classic5_jpg30"
//    }

//    , "val": {
//      "name": "val_BSD68_gray_Gaussian50",
//      "mode": "LRHR",
//      "dataroot_HR": "/media/sdc/jwhe/BasicSR_v2/data/BSD68/mod2/BSD68_mod",
//      "dataroot_LR": "/media/sdc/jwhe/BasicSR_v2/data/BSD68/mod2/BSD68_gray_Gaussian50"
//    }

//    , "val": {
//      "name": "val_set5_x4_gray_mod4"
//      , "mode": "LRHR"
//      , "dataroot_HR": "/media/sdc/jwhe/BasicSR_v2/data/val/Set5_val/mod4/Set5_gray_mod4"
//      , "dataroot_LR": "/media/sdc/jwhe/BasicSR_v2/data/val/Set5_val/mod4/Set5_gray_bicx4"
//    }
//
//    , "val": {
//      "name": "val_set5_x45_mod18",
//      "mode": "LRHR",
//      "dataroot_HR": "/media/sdc/jwhe/BasicSR_v2/data/val/Set5_val/mod18/Set5_mod18",
//      "dataroot_LR": "/media/sdc/jwhe/BasicSR_v2/data/val/Set5_val/mod18/Set5_bicx45"
//    }

//    , "val": {
//      "name": "val_set5_x3_mod6"
//      , "mode": "LRHR"
//      , "dataroot_HR": "/media/sdc/jwhe/BasicSR_v2/data/val/Set5_val/mod6/Set5_mod6"
//      , "dataroot_LR": "/media/sdc/jwhe/BasicSR_v2/data/val/Set5_val/mod6/Set5_bicx3"
//    }
//  }
  , "val": {
      "name": "SET5",
      "mode": "LRHR",
      "dataroot_HR": "/home/guanwp/BasicSR_datasets/val_set5/Set5",
      "dataroot_LR": "/home/guanwp/BasicSR_datasets/val_set5/Set5_sub_bicLRx4_noiseALL"
    }
//
//    , "val": {
//      "name": "val_set5_x3_gray_mod6"
//      , "mode": "LRHR"
//      , "dataroot_HR": "/media/sdc/jwhe/BasicSR_v2/data/val/Set5_val/mod6/Set5_gray_mod6"
//      , "dataroot_LR": "/media/sdc/jwhe/BasicSR_v2/data/val/Set5_val/mod6/Set5_gray_bicx3"
//    }
  }

  , "path": {
    "root": "/home/guanwp/BasicSR-master/"
//  , "pretrain_model_G": "../experiments/pretrained_models/sr_c16s06/LR_srx4_c16s06_resnet_denoise_DIV2K/c16s06_basicmodel_704000.pth"
  , "pretrain_model_G": "/home/guanwp/BasicSR-master/experiments2/sr_resnet_x4_baesline/models/latest_G.pth"
//  , "pretrain_model_G": "../experiments/pretrained_models/noise_c16s06/bicx4_nonorm_denoise_resnet_DIV2K/c16s06_basicmodel_992000.pth"
//  , "pretrain_model_G": "../experiments/pretrained_models/sr_c16s06/LR_srx4_c16s06_resnet_denoise_DIV2K/c16s06_basicmodel_704000.pth"
//    , "pretrain_model_G": "../noise_from15to75/experiments/gaussian_from15to75_resnet_denoise_DIV2K/models/986000_G.pth"
//    , "pretrain_model_G": "../experiments/pretrained_models/noise_from15to75/gaussian_from15to75_resnet_denoise_DIV2K/basic_model_986000.pth"
//    , "pretrain_model_sub": "../noise_from15to75/experiments/gaussion_from15to75_subnet_DIV2K/models/596000_G.pth"
  , "pretrain_model_sub": "/home/guanwp/BasicSR-master/experiments/noise_estimation_gt_1e-3/models/203000_G.pth",
    "experiments_root": "/home/guanwp/BasicSR-master/experiments/",
    "models": "/home/guanwp/BasicSR-master/experiments/finetune_srresnet_dncnn_DIVIK800/models",
    "log": "/home/guanwp/BasicSR-master/experiments/finetune_srresnet_dncnn_DIVIK800",
    "val_images": "/home/guanwp/BasicSR-master/experiments/finetune_srresnet_dncnn_DIVIK800/val_images"
    }

  , "network_G": {
    "which_model_G": "sr_resnet" // RRDB_net | sr_resnet
//    , "norm_type": "adaptive_conv_res"
    , "norm_type": null//"sft"
    , "mode": "CNA"
    , "nf": 64
    , "nb": 16
    , "in_nc": 3
    , "out_nc": 3
//    , "gc": 32
    , "group": 1
    , "gate_conv_bias": false
  }

//    , "network_G": {
//    "which_model_G": "denoise_resnet" // RRDB_net | sr_resnet
////    , "norm_type": "adaptive_conv_res"
//    , "norm_type": null
//    , "mode": "CNA"
//    , "nf": 64
//    , "nb": 16
//    , "in_nc": 6
//    , "out_nc": 3
////    , "gc": 32
//    , "group": 1
//    , "down_scale": 2
//  }
////
  , "network_sub": {
    "which_model_sub": "noise_estimation" // RRDB_net | sr_resnet | modulate_denoise_resnet |noise_subnet
//    , "norm_type": "adaptive_conv_res"
    , "norm_type": null//"batch"
    , "mode": "CNA"
    , "nf": 64
//    , "nb": 16
    , "in_nc": 3
    , "out_nc": 3
    , "group": 1
  }


  , "train": {
//    "lr_G": 1e-3
    "lr_G": 1e-4
    , "lr_scheme": "MultiStepLR"
//    , "lr_steps": [200000, 400000, 600000, 800000]
    , "lr_steps": [500000]
//    , "lr_steps": [600000]
//    , "lr_steps": [1000000]
//    , "lr_steps": [50000, 100000, 150000, 200000, 250000]
//    , "lr_steps": [100000, 200000, 300000, 400000]
    , "lr_gamma": 0.2
//    , "lr_gamma": 0.5

    , "pixel_criterion_basic": "l1"
    , "pixel_criterion_noise": "l2"
    , "pixel_weight_basic": 1.0
    , "pixel_weight_noise": 1.0
    , "val_freq": 1e3

    , "manual_seed": 0
    , "niter": 1e6
//    , "niter": 6e5
  }

  , "logger": {
    "print_freq": 200
    , "save_checkpoint_freq": 1e3
  }
}

结果如下图所示

猜你喜欢

转载自blog.csdn.net/gwplovekimi/article/details/85260137