NTIRE2017
首尔国立大学团队NTIRE2017超分辨率挑战赛双冠军方案,Torch7实现的EDSR/MDSR模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
首尔国立大学团队NTIRE2017超分辨率挑战赛双冠军方案,Torch7实现的EDSR/MDSR模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2017年的CVPR Workshop现场,当NTIRE2017超分辨率挑战赛成绩公布时,来自首尔国立大学计算机视觉实验室(SNU CVLab)的团队以EDSR和MDSR两个模型横扫榜单——分别拿下第一名和第二名。这不是巧合,而是一篇发表在CVPR 2017 Workshop上的论文,最终捧走了最佳论文奖。
这个仓库,正是他们的官方实现。
想象你手头有一张200×200像素的老照片,想放大到800×800做打印。传统的双三次插值只是"猜"像素——看周围几个点大概什么颜色就填进去,细节基本是糊的。
而超分辨率(Super-Resolution, SR)要做的,是让AI真正理解图像内容:这不只是"色块",这是一只猫的毛发、一块砖墙的纹理、一行文字的笔画。AI学会了图像的底层规律后,再放大,就能把"丢失的细节"合理地"推理"出来。
这项技术在卫星遥感影像增强、医学影像分辨率提升、老照片修复、视频超分等场景中有广泛应用。
团队在标准ResNet的基础上做了两处关键改动,发表了那篇著名的论文:
1. 移除 Batch Normalization(BN)层
通常认为BN能加速训练、稳定梯度,但论文发现:BN层在推理时会"抹平"输入特征的尺度差异,限制了网络的表达能力,尤其在超分这类需要精确像素重建的任务上影响明显。去掉BN后,EDSR的表达能力更强,但也需要更多训练迭代和更大的学习率衰减空间。
2. 增大模型规模
标准ResNet的残差块数量和特征通道数都相对保守。EDSR将残差块从标准ResNet的18个增加到32个,特征通道从64维扩展到256维,参数量达43M——这在当时的单图像超分领域是绝对的"大模型"。

图1:EDSR架构图 — 主干网络由多个残差块堆叠构成,最后通过亚像素卷积层完成上采样
如果需要同时支持2倍、3倍、4倍放大,按传统做法要分别训练三个模型。MDSR(Multi-Scale Dense ResNet)用共享特征提取 backbone + 倍数特定上采样模块的方式,让一个模型同时搞定所有倍数,参数量控制在8M,大幅减少部署成本。

图2:MDSR架构图 — 共享特征提取 + scale-specific 上采样路径
代码仓库采用标准Torch7框架组织:
| 模块 | 路径 | 说明 |
|---|---|---|
| 主入口 | code/main.lua | 调度数据加载、模型构建、训练循环 |
| 训练器 | code/train.lua | Trainer类管理SGD/ADAM/RMSPROP等优化器 |
| 数据加载 | code/dataloader.lua | DIV2K/Flickr2K/ImageNet多数据集支持 |
| 模型定义 | code/model/ | 包含resnet、edsr、mdsr、vdsr等11种架构 |
| 损失函数 | code/loss/ | MSE损失及自定义Kernel损失 |
| 工具脚本 | code/tools/ | 性能评测、早停、模型融合等辅助工具 |
-- code/model/init.lua 中的模型工厂
local models = {
resnet = require('model/resnet'),
edsrmr = require('model/resnet_cu'),
msresnet = require('model/msresnet'),
multiscale_unknown = require('model/multiscale_unknown'),
vdsr = require('model/recurVDSR'),
}
训练流程:命令行指定 -scale 2 -nResBlock 36 -nFeat 256 等超参数,加载预训练模型支持课程学习(先训x2再训x3/x4)。通过 -netType 参数切换不同架构。

图3:NTIRE2017挑战赛最终排名 — EDSR和MDSR分别获得双赛道冠军和亚军

图4:与其他SOTA方法的PSNR对比 — EDSR在bicubic降采样设置下全面超越VDSR、SRResNet等前人方法
这是一个纯学术研究代码库,而非面向终端用户的工具包:
优点:
缺点:
快速测试(无需训练):
# 下载预训练模型
cd demo/model/
wget https://cv.snu.ac.kr/research/EDSR/model_paper.tar
# 运行demo(需先安装Torch7)
cd demo/
th test.lua -model EDSR_x2 -input your_image.png
作者随后发布了 thstkdgus35/EDSR-PyTorch,PyTorch版本更易用,也获得了更多社区关注。该版本已被广泛集成到MMEditing等开源工具中。
| 维度 | 评价 |
|---|---|
| 学术影响力 | ★★★★★ — CVPRW Best Paper,NTIRE双赛道冠军 |
| 代码质量 | ★★★★☆ — 模块清晰、文档详细,但依赖老旧 |
| 工程可用性 | ★★☆☆☆ — Torch7框架、无Docker、需GPU |
| 社区活跃度 | ★★★☆☆ — PyTorch版本更活跃,原版已不再维护 |
| 复现难度 | 高 — 依赖Torch7环境,数据集大,训练资源要求高 |
适合谁用? 超分辨率方向的研究者希望复现论文、对比基线;工程落地建议直接用PyTorch版本或集成到MMEditing/OpenMMSR等框架中。