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 倍上采样结果。

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()用于 2 倍、3 倍和 4 倍图像超分辨率的模型在 DIV2K 上进行了预训练。DIV2K 是一个包含 800 张高质量(2K 分辨率)训练图像的数据集,通过数据增强扩充至 4000 张图像,并使用 100 张验证图像(编号 801 至 900 的图像)作为开发集。
我们遵循 Wang 等人 的预处理和训练方法。 低分辨率(LR)图像通过双三次插值作为调整大小的方法,将高分辨率(HR)图像的尺寸缩小 2 倍、3 倍和 4 倍来创建。 在训练期间,使用来自 LR 输入的尺寸为 64×64 的 RGB 补丁及其对应的 HR 补丁。 在预处理阶段对训练集进行数据增强,从原始图像的四个角和中心创建五张图像。
评估指标包括 PSNR(峰值信噪比) 和 SSIM(结构相似性)。
下面的结果列以 PSNR/SSIM 表示。它们与双三次插值基线进行了比较。
| 数据集 | 缩放倍数 | 双三次插值 | edsr |
|---|---|---|---|
| Set5 | 2x | 33.64/0.9292 | 38.19/0.9612 |
| Set5 | 3x | 30.39/0.8678 | 35.31/0.9421 |
| Set5 | 4x | 28.42/0.8101 | 32.5/0.8986 |
| Set14 | 2x | 30.22/0.8683 | 33.99/0.9215 |
| Set14 | 3x | 27.53/0.7737 | 31.18/0.862 |
| Set14 | 4x | 25.99/0.7023 | 28.92/0.7899 |
| BSD100 | 2x | 29.55/0.8425 | 33.89/0.9266 |
| BSD100 | 3x | 27.20/0.7382 | 29.77/0.8224 |
| BSD100 | 4x | 25.96/0.6672 | 28.62/0.7689 |
| Urban100 | 2x | 26.66/0.8408 | 32.68/0.9331 |
| Urban100 | 3x | 29.75/0.8825 | |
| Urban100 | 4x | 23.14/0.6573 | 26.53/0.7995 |

您可以在下面找到一个笔记本,以便轻松对预训练模型进行评估:
@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}
}