HuggingFace镜像/edsr
模型介绍文件和版本分析
下载使用量0

用于单图像超分辨率的增强型深度残差网络(EDSR)

EDSR 模型在 DIV2K 数据集(800 张训练图像,经数据增强至 4000 张,100 张验证图像)上进行了预训练,适用于 2 倍、3 倍和 4 倍图像超分辨率。该模型由 Lim 等人在 2017 年的论文《Enhanced Deep Residual Networks for Single Image Super-Resolution》中提出,并首次在 this repository 发布。

图像超分辨率的目标是从单张低分辨率(LR)图像恢复出高分辨率(HR)图像。下图展示了真实图像(HR)、双三次 2 倍上采样结果以及 EDSR 2 倍上采样结果。

Comparing Bicubic upscaling against the models x4 upscaling on Set5 Image 4

模型描述

EDSR 采用更深更宽的网络架构(32 个残差块和 256 个通道)来提升性能。它同时使用全局和局部跳跃连接,并在网络末端进行上采样。该模型不使用批归一化层(输入和输出具有相似的分布,对中间特征进行归一化可能并不理想),而是采用恒定缩放层以确保训练稳定。它使用 L1 损失函数(绝对误差)而非 L2 损失函数(均方误差),作者通过实验证明 L1 损失能带来更好的性能,且计算量更小。

这是一个基础模型(约 5MB,而完整版约 100MB),仅包含 16 个残差块和 64 个通道。

预期用途与局限性

您可以使用预训练模型对图像进行 2 倍、3 倍和 4 倍上采样。您也可以使用训练器在自己的数据集上训练模型。

如何使用

该模型可与 super_image 库配合使用:

pip install super-image

以下是如何使用预训练模型对图像进行超分辨率处理的方法:

import torch
import torch_npu
import argparse
from openmind import pipeline, is_torch_npu_available
from super_image import EdsrModel, ImageLoader
from PIL import Image
import requests

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--model_name_or_path",
        type=str,
        help="Path to model",
        default=None,
    )
    args = parser.parse_args()
    return args


def main():
    args = parse_args()
    model_path = args.model_name_or_path
    
    if is_torch_npu_available():
        device = "npu:0"
    else:
        device = "cpu"
    
    url = 'https://paperswithcode.com/media/datasets/Set5-0000002728-07a9793f_zA3bDjj.jpg'
    image = Image.open(requests.get(url, stream=True).raw)

    model = EdsrModel.from_pretrained(model_path, scale=2).to(device)
    inputs = ImageLoader.load_image(image).to(device)
    preds = model(inputs)

    ImageLoader.save_image(preds, './scaled_2x.png')                      
    ImageLoader.save_compare(inputs, preds, './scaled_2x_compare.png') 

if __name__=="__main__":
    main()

在 Colab 中打开

训练数据

用于 2 倍、3 倍和 4 倍图像超分辨率的模型在 DIV2K 上进行了预训练。DIV2K 是一个包含 800 张高质量(2K 分辨率)训练图像的数据集,通过数据增强扩充至 4000 张图像,并使用 100 张验证图像(编号 801 至 900 的图像)作为开发集。

训练过程

预处理

我们遵循 Wang 等人 的预处理和训练方法。 低分辨率(LR)图像通过双三次插值作为调整大小的方法,将高分辨率(HR)图像的尺寸缩小 2 倍、3 倍和 4 倍来创建。 在训练期间,使用来自 LR 输入的尺寸为 64×64 的 RGB 补丁及其对应的 HR 补丁。 在预处理阶段对训练集进行数据增强,从原始图像的四个角和中心创建五张图像。

在 Colab 中打开

评估结果

评估指标包括 PSNR(峰值信噪比) 和 SSIM(结构相似性)。

下面的结果列以 PSNR/SSIM 表示。它们与双三次插值基线进行了比较。

数据集缩放倍数双三次插值edsr
Set52x33.64/0.929238.19/0.9612
Set53x30.39/0.867835.31/0.9421
Set54x28.42/0.810132.5/0.8986
Set142x30.22/0.868333.99/0.9215
Set143x27.53/0.773731.18/0.862
Set144x25.99/0.702328.92/0.7899
BSD1002x29.55/0.842533.89/0.9266
BSD1003x27.20/0.738229.77/0.8224
BSD1004x25.96/0.667228.62/0.7689
Urban1002x26.66/0.840832.68/0.9331
Urban1003x29.75/0.8825
Urban1004x23.14/0.657326.53/0.7995

Set5 图像 2 上双三次插值放大与模型 4 倍放大的比较

您可以在下面找到一个笔记本,以便轻松对预训练模型进行评估:

BibTeX 条目和引用信息

@InProceedings{Lim_2017_CVPR_Workshops,
  author = {Lim, Bee and Son, Sanghyun and Kim, Heewon and Nah, Seungjun and Lee, Kyoung Mu},
  title = {Enhanced Deep Residual Networks for Single Image Super-Resolution},
  booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR) Workshops},
  month = {July},
  year = {2017}
}