基于深度学习的图像去模糊算法:MPRNet (Multi-Stage Progressive Image Restoration Network)
题目描述
图像去模糊是一个经典的计算机视觉问题,旨在从一张因相机抖动、物体运动或对焦失误等原因导致的模糊图像中,恢复出清晰的图像。这是一个典型的“病态”逆问题,因为多个不同的清晰图像理论上都可能退化(模糊)为同一张模糊图像。
传统的去模糊方法通常依赖于对模糊核(点扩散函数)的建模和估计,然后进行反卷积。但这类方法计算复杂,且对模糊模型的假设很敏感。近年来,基于深度学习的方法直接从大量“模糊-清晰”图像对中学习映射关系,取得了显著的性能提升。
MPRNet (Multi-Stage Progressive Image Restoration Network) 是2021年提出的一种高效、高性能的图像恢复网络,在多个图像恢复任务(如去模糊、去雨、去噪)上都取得了当时最先进的性能。我们今天将重点讲解其在图像动态去模糊(去除因相机或物体运动产生的模糊)中的应用。
它的核心思想是:“分阶段渐进式处理” 和 “多尺度特征融合” ,通过逐步细化特征和图像,从而高效地恢复细节。
解题过程(算法讲解)
我们将MPRNet拆解为几个关键部分,循序渐进地讲解。
第1步:问题的建模与网络架构总览
-
问题定义:
- 输入:一张模糊图像 \(I_{blurry}\)。
- 输出:一张恢复后的清晰图像 \(I_{sharp}\)。
- 假设退化过程可以简化建模为:\(I_{blurry} = I_{sharp} \otimes k + n\)。
- \(\otimes\) 表示卷积操作。
- \(k\) 是未知的、可能很复杂的空间可变模糊核。
- \(n\) 是加性噪声。
- 深度学习模型的目标是学习一个映射函数 \(F_{\theta}\),使得 \(F_{\theta}(I_{blurry}) \approx I_{sharp}\)。
-
MPRNet总体架构:
MPRNet的设计灵感来自于人类处理复杂问题的方式:从整体到细节,逐步求精。它由三个主要阶段构成:- 阶段一(Stage 1): 编码器-解码器(En-De):
- 输入是原始分辨率的模糊图像。
- 通过一个编码器-解码器结构的子网络,初步提取全局上下文信息并进行粗略的去模糊。
- 这个阶段的输出是一个粗略恢复的图像和一个多尺度特征集合。
- 阶段二(Stage 2): 跨阶段特征融合(CSFF):
- 这是MPRNet的关键创新之一。阶段一输出的多尺度特征(从编码器、瓶颈层、解码器提取的不同分辨率特征)会被传递到阶段二。
- 阶段二自身也是一个编码器-解码器,它的作用是融合来自阶段一的多尺度特征,并对阶段一的输出图像进行进一步的特征级和图像级的细化。这好比是先用“大笔刷”画出轮廓,再用“小笔刷”结合之前的草图细化细节。
- 阶段三(Stage 3): 图像重构网络(ORN):
- 这是一个轻量级的、全卷积的“精炼”网络。
- 它接收阶段二输出的、已经比较清晰的图像,专注于恢复最精细的图像纹理和边缘细节。这个阶段不进行下采样,直接在原始分辨率上操作。
这三个阶段是端到端联合训练的,共同优化一个损失函数。
- 阶段一(Stage 1): 编码器-解码器(En-De):
第2步:核心模块详解
-
互补特征处理块(Complementary Feature Processing Block, CFPB):
这是MPRNet内部每个阶段编码器-解码器使用的基本特征变换单元。它的设计旨在高效地提取和融合特征。- 并行多分支结构:CFPB内部有几条并行的路径。
- 主路径:常规的卷积层,用于提取局部特征。
- 互补路径:通过扩张卷积(空洞卷积)来捕获更大范围的上下文信息,这对于理解模糊的模式至关重要。
- 特征融合:将主路径和互补路径提取的特征进行融合(例如,通过拼接或相加),然后通过一个通道注意力模块(如SENet中的Squeeze-and-Excitation模块)来自适应地重新校准通道权重,强调重要的特征通道。
- 优点:在不显著增加计算量的前提下,同时建模局部细节和长距离依赖关系。
- 并行多分支结构:CFPB内部有几条并行的路径。
-
跨阶段特征融合(Cross-Stage Feature Fusion, CSFF):
这是连接阶段一和阶段二的桥梁,是实现“渐进式”恢复的关键。- 多尺度特征传递:阶段一的编码器-解码器在三个不同的分辨率层级(高、中、低)上,各自会输出一组特征图。
- 对齐与融合:阶段二的编码器-解码器在相应的层级上,会将来自阶段一的、经过上/下采样的对应层特征,与当前阶段本层新提取的特征进行特征相加。
- 作用:
- 引导:阶段一的粗糙特征为阶段二的细化过程提供了明确的指导,防止第二阶段“跑偏”。
- 特征复用:避免第二阶段从零开始学习,提升了信息流动的效率。
- 稳定训练:通过传递多尺度信息,缓解了深度网络中的梯度消失问题。
-
监督注意力模块(Supervised Attention Module, SAM):
位于阶段一和阶段二的末尾,连接每个阶段的输出到下一个阶段。- 结构:对于一个阶段输出的图像 \(I_{stage}\),SAM先用一个轻量级卷积块从中提取一个注意力图(Attention Map)。
- 计算:这个注意力图与输入的模糊图像残差(模糊图-阶段输出图)进行逐元素相乘,生成一个“注意力加权的残差”,再与 \(I_{stage}\) 相加,作为下一个阶段的初始输入。
- 作用:让网络学会“关注”哪些区域还存在明显的模糊(残差大),在下一阶段集中“火力”处理这些区域。这是一个可学习的、自适应的、基于中间监督的注意力机制。
第3步:损失函数与训练策略
网络性能的好坏离不开合适的监督信号。
- 分阶段监督:MPRNet的每个阶段都会输出一个恢复图像(\(I_{S1}, I_{S2}, I_{S3}\))。
- 损失函数构成:
- 主损失(Charbonnier Loss):在每个阶段的输出上,计算其与真实清晰图像(GT)的像素级差异。Charbonnier Loss 是L1损失的鲁棒变体,能更好地处理异常值,公式为:\(L_{char} = \sqrt{ (I_{pred} - I_{gt})^2 + \epsilon^2 }\),其中 \(\epsilon\) 是一个很小的常数。
- 多尺度结构相似性损失(MS-SSIM Loss):仅在最终输出(\(I_{S3}\))上计算。SSIM衡量两幅图像在亮度、对比度和结构上的相似性。多尺度(MS)版本在多个图像分辨率下计算SSIM,能更好地保留图像的结构和纹理细节。
- 总损失:\(L_{total} = L_{char}^{S1} + L_{char}^{S2} + L_{char}^{S3} + \lambda L_{ms-ssim}^{S3}\),其中 \(\lambda\) 是平衡权重。
第4步:算法流程总结
现在,我们将所有部分串联起来,理解MPRNet去模糊的完整工作流程:
- 输入:原始模糊图像 \(I_{in}\)。
- 阶段一(粗略恢复):
- \(I_{in}\) 输入到第一个编码器-解码器网络(由CFPB块构成)。
- 网络输出粗略去模糊结果 \(I_{S1}\) 和多尺度特征。
- \(I_{S1}\) 经过SAM模块处理,生成阶段二的输入之一。
- 阶段二(特征级细化):
- CSFF:阶段一的多尺度特征被融合进阶段二的编码器-解码器网络中。
- 阶段二网络以上一步SAM的输出为起点,在阶段一特征的引导下,进行更精细的特征处理。
- 输出细化结果 \(I_{S2}\) 和新的多尺度特征(用于内部循环)。
- \(I_{S2}\) 经过SAM模块处理,生成阶段三的输入。
- 阶段三(像素级精炼):
- 一个轻量的全卷积网络(ORN)接收 \(I_{S2}\) 经过SAM处理后的结果。
- 此网络不进行下采样,直接在原分辨率上对图像进行最后的“抛光”,恢复最精细的纹理。
- 输出最终的去模糊结果 \(I_{S3}\)。
- 训练:在训练过程中,\(I_{S1}, I_{S2}, I_{S3}\) 都会与真实清晰图像进行比较,计算Charbonnier损失,并且 \(I_{S3}\) 额外计算MS-SSIM损失,通过反向传播联合优化所有网络参数。
核心优势
- 渐进式恢复:从粗略到精细,符合认知过程,使优化过程更稳定,结果更准确。
- 信息高效流动:通过CSFF和SAM,实现了跨阶段的、多层次的信息交互与引导。
- 多任务通用性:相同的架构思想(多阶段、CSFF、SAM)可以很好地迁移到去雨、去噪等任务,证明了其设计的鲁棒性和通用性。
通过这种精心设计的逐步求精架构,MPRNet能够在复杂动态模糊的场景下,有效地恢复出清晰、自然的图像细节。