實驗——基於pytorch的超分和去噪網路聯合fine tuning
阿新 • • 發佈:2019-01-10
本博文是本人實現超分和去噪網路聯合訓練與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 } }
結果如下圖所示