博客
关于我
实验——基于pytorch的SRResNet的复现
阅读量:515 次
发布时间:2019-03-07

本文共 2684 字,大约阅读时间需要 8 分钟。

SRResNet: 基于残差网络的图像超分辨率方法优化与实现

在图像超分辨率(SR)领域,残差网络(ResNet)及其衍生物一直是研究热点之一。SRResNet(Shortcut Residual Network)作为一种高效的图像超分辨率方法,在大比例放大的场景中表现优异。本文将详细介绍SRResNet的网络结构、训练设置及实际效果。


1. 网络结构分析

SRResNet的核心架构由多个残差块构成,具体流程如下:

  • 输入层:接收 }}/home/guanwp/BasicSR-master/codes/下的输入图像,经过初次卷积层提取低层特征。
  • 残差块:包含多个RGB化残差块,每个块包含:
    • 卷积层:用于降低维度并提取特征。
    • 批归一化层:保持层间通用性。
    • 激活函数:选择ReLU或LeakyReLU,视具体实现而定。
  • 中间层:通过平移层(如PixelShuffle)调整体积,实现高效的超分辨率。
  • ** Upscaler**:逐层放大输出图像至目标分辨率。
  • 输出层:生成最终的超分辨率图像。
  • 网络深度通过控制残差块数量(如23个或16个)调整,适用于不同超分辨率倍数的应用场景。


    2. 代码实现与训练设置

    2.1 代码配置

    代码主要位于 /home/guanwp/BasicSR-master/codes/,运行以下命令启动训练和测试:

    python train.py -opt options/train/train_sr.jsonpython test.py -opt options/test/test_sr.json

    训练参数配置样例(train_sr.json)如下:

    {  "name": "sr_resnet_baesline",  "use_tb_logger": true,  "model": "sr",  "scale": 4,  "gpu_ids": [1],  "datasets": {    "train": {      "name": "DIV2K800",      "mode": "LRHR",      "dataroot_HR": "/home/guanwp/BasicSR_datasets/DIV2K800_sub",      "dataroot_LR": "/home/guanwp/BasicSR_datasets/DIV2K800_sub_bicLRx4",      "subset_file": null,      "use_shuffle": true,      "n_workers": 8,      "batch_size": 16,      "HR_size": 128,      "use_flip": true,      "use_rot": true    },    "val": {      "name": "val_set5",      "mode": "LRHR",      "dataroot_HR": "/home/guanwp/BasicSR_datasets/val_set5/Set5",      "dataroot_LR": "/home/guanwp/BasicSR_datasets/val_set5/Set5_sub_bicLRx4"    }  },  "path": {    "root": "/home/guanwp/BasicSR-master",    "pretrain_model_G": null,    "experiments_root": "/home/guanwp/BasicSR-master/experiments/",    "models": "/home/guanwp/BasicSR-master/experiments/sr_resnet_baesline/models",    "log": "/home/guanwp/BasicSR-master/experiments/sr_resnet_baesline",    "val_images": "/home/guanwp/BasicSR-master/experiments/sr_resnet_baesline/val_images"  },  "network_G": {    "which_model_G": "sr_resnet",    "norm_type": null,    "mode": "CNA",    "nf": 64,    "nb": 23,    "in_nc": 3,    "out_nc": 3,    "gc": 32,    "group": 1  },  "train": {    "lr_G": 1e-3,    "lr_scheme": "MultiStepLR",    "lr_steps": [200000, 400000, 600000, 800000, 1000000, 1500000],    "lr_gamma": 0.5,    "pixel_criterion": "l1",    "pixel_weight": 1.0,    "val_freq": 5e3,    "manual_seed": 0,    "niter": 2e6  },  "logger": {    "print_freq": 200,    "save_checkpoint_freq": 5e3  }}

    3. 实验结果

    3.1 测试效果

    在DIV2K800和SET5 datasets上测试,SRResNet在x4倍放大的场景中表现优异。测试结果如下:

    • SRResNet: 32.05 dB PSNR值,SSIM指标显示良好的结构相似度。
    • FSRCNN(对比实验):30.55 dB PSNR值,表现稍逊。

    3.2 超面性能

    代码实现中,批量处理支持8个线程,单次批量量共16张图像。建议根据硬件性能调整批量大小。


    4. 补充说明

    4.1 激活函数选择

    • ReLU:适合普通残差网络。
    • LeakyReLU:适合光滑化处理(如ESRGAN)。部分实现中可选用LeakyReLU替代ReLU。

    4.2 MOS测试

    虽然本文未详细描述MOS测试结果,但支持使用NIQE等更具代表性的质量评估工具。


    通过以上分析,SRResNet在图像超分辨率任务中展现出优异性能,是目前高比例放大场景的标准配置。

    转载地址:http://xiajz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现connected components连通分量算法(附完整源码)
    查看>>
    Objective-C实现Connected Components连通分量算法(附完整源码)
    查看>>
    Objective-C实现Convex hull凸包问题算法(附完整源码)
    查看>>
    Objective-C实现convolution neural network卷积神经网络算法(附完整源码)
    查看>>
    Objective-C实现convolve卷积算法(附完整源码)
    查看>>
    Objective-C实现coulombs law库仑定律算法(附完整源码)
    查看>>
    Objective-C实现counting sort计数排序算法(附完整源码)
    查看>>
    Objective-C实现countSetBits设置位的数量算法(附完整源码)
    查看>>
    Objective-C实现currency converter货币换算算法(附完整源码)
    查看>>
    Objective-C实现cycle sort循环排序算法(附完整源码)
    查看>>
    Objective-C实现data transformations数据转换算法(附完整源码)
    查看>>
    Objective-C实现datamatrix二维码识别 (附完整源码)
    查看>>
    Objective-C实现DateToDay 方法算法(附完整源码)
    查看>>
    Objective-C实现DBSCAN聚类算法(附完整源码)
    查看>>
    Objective-C实现DBSCAN聚类算法(附完整源码)
    查看>>
    Objective-C实现decision tree决策树算法(附完整源码)
    查看>>
    Objective-C实现degreeToRadian度到弧度算法(附完整源码)
    查看>>
    Objective-C实现depth first search深度优先搜索算法(附完整源码)
    查看>>
    Objective-C实现DES和3DES加解密算法(附完整源码)
    查看>>
    Objective-C实现des文件加密算法(附完整源码)
    查看>>