MIRNetv2
统一框架搞定去噪/超分/去模糊/增强,TPAMI 2022 论文,634次引用
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
统一框架搞定去噪/超分/去模糊/增强,TPAMI 2022 论文,634次引用
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否有过这样的经历:外出旅行拍了一夜景,照片却糊成一团、噪点密布?或者翻拍的老照片,色彩黯淡、分辨率低得没法放大?这些问题的本质,都是图像降质(Image Degradation)——原始的高质量图像信息,在拍摄、传输或存储过程中被各种因素"污染"了。
传统图像复原算法(如去噪的BM3D、超分辨率的插值方法)通常针对单一任务设计,且依赖人工设计的先验知识。面对真实场景中"噪声+模糊+分辨率低下"的复合降质,它们往往力不从心。更关键的是,一个场景训练一个模型的做法,导致模型泛化能力极差——为去噪训练的模型,未必能处理增强任务。
MIRNet-v2 正是为了解决这些问题而生。它由 Syed Waqas Zamir 等研究者提出,发表在 IEEE TPAMI 2022(国际顶级期刊),论文被引用 634 次。核心目标是:用一个统一框架,同时搞定去噪、散焦去模糊、超分辨率和图像增强四大任务,且在多个真实基准数据集上达到最优(SOTA)水平。
图1:输入的低质量图像示例(噪声+低光)
MIRNet-v2 的核心创新在于 Selective Kernel Feature Fusion(SKFF) 模块,以及配套的 多尺度残差块(Multi-scale Residual Block) 和 信道与空间注意力机制。
在传统的卷积神经网络中,卷积核的大小通常是固定的(如 3×3 或 5×5)。不同感受野大小的特征被同等对待,难以适应输入图像中不同尺度纹理的变化。SKFF 的解决思路非常优雅:让网络自己学会"看情况"——根据输入特征的内容,动态决定融合不同感受野特征时的权重。
SKFF 的工作流程分为三步:
这意味着,当网络遇到细腻纹理时,会自动给小型卷积核分支更高权重;遇到大面积平滑区域时,大卷积核分支贡献更大。整个过程无需人工干预,是真正的"数据驱动"注意力机制。
MIRNet-v2 还引入了上下文感知的信道注意力机制。传统的信道注意力(如 SE-Net)只考虑全局平均池化信息,MIRNet-v2 则通过一个巧妙的掩膜(Mask)分支,让每个空间位置都能参与计算信道间的依赖关系。这种方式让网络能够区分"重要信道"(如边缘、纹理)和"次要信道"(如噪声),从而实现更精细的特征筛选。
训练配置中有一个非常值得关注的细节:渐进式训练(Progressive Training)。训练从 128×128 的小 patch 开始,随着训练迭代次数增加,逐步增大到 384×384。这种课程学习(Curriculum Learning)策略帮助模型先从简单样本学习,再逐步适应复杂纹理,显著提升了收敛速度和最终性能。
图2:MIRNet-v2 复原后的高质量图像(对应图1的处理结果)
MIRNet-v2 的全能体现在它同时覆盖了四种主流图像复原任务:
| 任务 | 解决的问题 | 训练数据集 | 测试数据集 |
|---|---|---|---|
| 真实图像去噪(Real Denoising) | 去除真实场景中的复杂噪声 | SIDD(智能手机图像去噪) | SIDD Benchmark |
| 散焦去模糊(Defocus Deblurring) | 修复因镜头焦距问题造成的模糊 | DPDD(Dual-Pixel Defocus Deblurring) | DPDD Benchmark |
| 超分辨率(Super-Resolution) | 将低分辨率图像放大并恢复细节 | DIV2K + Flicker2K | Set5/Set14/Urban100 |
| 图像增强(Image Enhancement) | 改善图像的色彩、对比度、亮度 | FiveK + LOL | LOL/Test/SDSD |
以真实去噪为例,在 SIDD 数据集上,MIRNet-v2 的 PSNR(峰值信噪比)达到 39.88 dB,SSIM(结构相似性)达到 0.962,超越了此前的去噪方案。这种性能提升在视觉上表现为:复原后的图像既去除了恼人的彩色噪声,细节纹理(发丝、织物编织纹)也得到了有效保留,不会出现过度平滑"抹掉"细节的问题。
从代码结构来看,MIRNet-v2 基于 BasicSR 训练框架(一个专门为图像/视频复原设计的开源库),使用 PyTorch 实现。核心网络配置如下:
basicsr 目录下包含了完整的训练、测试、数据加载和指标计算逻辑。其 metrics 模块支持 PSNR、SSIM、NIQE、FID 等多种图像质量评价指标,可以满足学术研究的严格评测需求。
MIRNet-v2 提供了 Google Colab 在线体验,无需配置本地环境即可测试预训练模型。命令行使用方式也非常直接:
# 真实图像去噪
python demo.py --task real_denoising --input_dir './demo/degraded/' --result_dir './demo/restored/'
# 散焦去模糊
python demo.py --task defocus_deblurring --input_dir './demo/degraded/' --result_dir './demo/restored/'
# 超分辨率(2x放大)
python demo.py --task super_resolution --input_dir './demo/degraded/' --result_dir './demo/restored/' --scale 2
# 图像增强
python demo.py --task image_enhancement --input_dir './demo/degraded/' --result_dir './demo/restored/'
对于高分辨率大图,还支持 tile 分块推理(避免显存溢出):
python demo.py --task real_denoising --input_dir 'large_image.png' --result_dir './output/' --tile 720 --tile_overlap 32
硬件门槛高是 MIRNet-v2 最主要的局限。模型训练需要 8 块 NVIDIA GPU(论文中使用的是 V100),推理也建议在有 CUDA 支持的 GPU 上运行,显存需求 6GB 以上。CPU 推理虽然可行,但速度极慢(单张图像可能需要数十秒)。
无开箱即用的 Docker 部署。项目仅提供 conda 环境配置脚本,不支持容器化快速部署。对于想在服务器或云端快速集成的用户,需要自己编写 Dockerfile。
模型权重需手动下载。预训练权重托管在 Google Drive,需要额外安装 gdown 或手动下载解压到指定目录,不够方便。
MIRNet-v2 在学术和工业界都有重要影响:
从发展趋势看,图像复原正从"单任务专家"走向"多任务统一模型"。MIRNet-v2 的设计理念——通过选择性特征融合实现跨任务泛化——为后续更通用的图像修复模型奠定了基础。对于 AI 开发者而言,理解 MIRNet-v2 的 SKFF 机制,是深入低层视觉任务的绝佳起点。