Deep Multi-scale Convolutional Neural Network for Dynamic Scene Deblurring论文阅读

发布于:2025-03-28 ⋅ 阅读:(30) ⋅ 点赞:(0)

摘要

非均匀盲去模糊(Non-uniform blind deblurring)是计算机视觉中的一项挑战性问题,因为模糊不仅由多个物体的运动引起,还可能源于相机抖动和场景深度变化。为了消除这些复杂的运动模糊,传统基于能量优化的方法依赖于简单假设(例如模糊核局部均匀或线性)。此外,近期的基于机器学习的方法也依赖于在这些假设下生成的合成模糊数据集。这使得传统去模糊方法难以处理模糊核难以参数化的情况(例如物体运动边界)。本文提出了一种多尺度卷积神经网络(CNN),以端到端方式恢复清晰图像,适用于由多种因素导致的模糊。同时,我们提出了一种多尺度损失函数,模拟传统的由粗到细(coarse-to-fine)优化方法。此外,我们构建了一个新的大规模数据集,提供真实模糊图像与对应的真实清晰图像(通过高速相机捕捉多帧并平均生成)。通过在该数据集上训练模型,我们通过实验证明,所提出的方法在动态场景去模糊任务中,无论在定性还是定量指标上均达到了最先进性能。


1. 引言

运动模糊是拍照时最常见的伪影之一。相机抖动和物体快速运动会降低图像质量,导致不希望的模糊图像。此外,深度变化、运动边界遮挡等因素使模糊更加复杂。单图像去模糊问题旨在根据模糊图像估计未知的清晰图像。早期研究主要关注消除由简单平移或旋转相机运动引起的模糊。近年来,更多工作尝试处理动态环境中由深度变化、相机抖动和物体运动引起的普遍非均匀模糊。大多数这些方法基于以下模糊模型 [28, 10, 13, 11]:

B = K S + n , 模糊图像是由清晰图像经过局部模糊处理并叠加噪声形成的 B = KS + n, 模糊图像是由清晰图像经过局部模糊处理并叠加噪声形成的 B=KS+n,模糊图像是由清晰图像经过局部模糊处理并叠加噪声形成的
其中, B B B S S S n \mathbf{n} n 分别为向量化后的模糊图像、潜在清晰图像和噪声。 K \mathbf{K} K 是一个大型稀疏矩阵,其每一行包含一个局部模糊核,作用于 S S S 生成一个模糊像素。实际上,模糊核是未知的。因此,盲去模糊方法试图同时估计潜在清晰图像 S S S 和模糊核 K \mathbf{K} K

为每个像素寻找模糊核是一个严重不适定(问题种类很多)问题。因此,一些方法尝试通过简单的假设对模糊模型进行参数化。在 [28, 10] 中,他们假设模糊仅由三维相机运动引起。然而,在动态场景中,由于存在多个移动物体以及相机运动,核估计更具挑战性。因此,Kim等人[14]提出了一种动态场景去模糊方法,联合分割和去模糊非均匀模糊图像,允许在分割区域内估计复杂的(非线性)核。此外,Kim和Lee[15]近似模糊核为局部线性,并提出一种联合估计潜在图像和局部线性运动的方法。然而,这些模糊核近似仍然不够准确,尤其是在运动突变和遮挡的情况下。需要注意的是,这种错误的核估计直接影响潜在图像的质量,导致不希望的振铃伪影。

最近,卷积神经网络(CNNs)被应用于众多计算机视觉问题,包括去模糊问题,并显示出有前景的结果 [29, 25, 26, 1]。由于没有真实模糊图像与地面真相清晰图像的配对可用于监督学习,它们通常使用合成模糊核生成的模糊图像。在 [29, 25, 1] 中,使用具有均匀模糊核的合成模糊图像进行训练。而在 [26] 中,分类 CNN 被训练以估计局部线性模糊核。因此,基于 CNN 的模型仍然只适用于某些特定类型的模糊,且对更常见的空间变化模糊存在限制。

因此,所有现有方法在推广和实际应用之前仍面临许多问题。这些问题主要是由于使用了简单且不现实的模糊核模型。为此,为了解决这些问题,在本文中,我们提出了一种用于动态场景去模糊的端到端深度学习方法

首先,我们提出了一种多尺度 CNN,直接恢复潜在图像,是不受限的模糊核模型。特别是,多尺度架构设计了粗到细优化方法。与其他方法不同,我们的方法不估计显式的模糊核。因此,我们的方法避免了因核估计错误而产生的伪影
其次,我们使用由粗到细架构的多尺度损失函数训练提出的模型,极大地增强了收敛性。此外,我们进一步通过引入对抗损失提高结果
第三,我们提出了一个新的真实模糊图像数据集,带有真实图像的清晰图像。为了获得无核模型的数据集用于训练,我们采用了 [17] 中介绍的数据集采集方法。由于模糊过程可以建模为快门时间内清晰图像的积分 [17, 21, 16],我们使用高速相机捕获动态场景的一系列清晰帧,并通过考虑伽马校正将它们平均生成模糊图像

通过使用提出的数据集进行了数据增强,我们的模型可以隐式地处理一般的局部模糊核。由于损失项优化结果使其接近真实图像,它甚至可以恢复模糊核极其复杂的遮挡区域,如图 1 所示。我们用数百万对图像块训练了我们的模型,并在动态场景去模糊方面取得了显著改进。广泛的实验结果表明,所提出方法的性能在定性和定量评估中均远优于最先进的动态场景去模糊方法。
在这里插入图片描述


1.1 相关工作

有几种方法利用 CNN 进行去模糊 [29, 26, 25, 1]。

Xu 等人 [29] 提出了一种图像去卷积 CNN,用于在非盲设置下去除模糊图像。他们基于可分离核特性构建了一个网络,即(逆)模糊核可以分解为少量显著滤波器。此外,他们还结合了降噪网络 [7],通过在提议网络末尾串联该模块来减少诸如噪声和颜色饱和度等视觉伪影。
另一方面,Schuler 等人 [25] 提出了基于 CNN 的盲去模糊方法。他们提出的网络模仿传统基于优化的去模糊方法,并以粗到细的方式迭代特征提取、核估计和潜在图像估计步骤。为了获取用于网络训练的清晰和模糊图像对,他们使用高斯过程生成均匀模糊核,并通过将其与从 ImageNet 数据集 [3] 收集的清晰图像卷积生成大量模糊图像。然而,由于其次优架构,他们报告了大模糊情况下的性能限制。
类似于 Couzinie-Devy 等人 [2] 的工作,Sun 等人 [26] 提出了一种顺序去模糊方法。首先,他们生成具有 73 个候选模糊核的模糊和清晰补丁对。接下来,他们训练分类 CNN 来测量局部补丁特定模糊核的可能性。然后,通过优化由 CNN 可能性和平滑先验组成的能量模型,获得平滑变化的模糊核。最后,使用传统优化方法 [30] 进行潜在图像估计。

请注意,以上方法都需要准确的核估计步骤来恢复潜在清晰图像。相比之下,我们的提议模型直接学习产生潜在图像,而无需估计模糊核。

在其他计算机视觉任务中,多种形式的粗到细架构或多尺度架构已被应用 [8, 6, 4, 23, 5]。然而,并非所有多尺度 CNN 都可以产生最优结果,比如在深度估计、光流估计等领域,网络的输出比输入图像分辨率还小(降采样导致细节丢失)。这样的网络即使采用多尺度架构,这些方法也难以处理长范围的依赖关系(图像中远距离像素或区域间的潜在关联)。

因此,我们设计了一种多尺度架构,既保留了精细细节信息,又保留了来自较粗尺度的长范围的依赖关系。通过使用多尺度损失训练网络,确保中间层网络明确地帮助最终阶段。


1.2 无核学习的动态场景去模糊

传统上,估计潜在图像隐藏在模糊背后的真实图像)之前必须找到模糊核。基于 CNN 的方法也不例外 [25, 26]。然而,估计模糊核涉及多个问题。
第一,假设简单的核卷积无法建模一些具有挑战性的场景,例如遮挡区域或深度变化
第二,核估计过程微妙(估计模糊核是一个非常敏感且复杂的过程)且对噪声和饱和度敏感(模糊核的估计容易受到图像中干扰因素的影响),除非模糊模型被精心设计,错误估计的核会导致潜在图像中的伪影
第三,在动态场景中为每个像素寻找空间变化的核需要大量的内存和计算资源。

因此,我们在模糊数据集生成和潜在图像估计中采用了无核方法(不再依赖于显式地估计或建模模糊核)。在模糊图像生成过程中,我们遵循近似相机成像过程,而不是假设特定运动(由某种简单、已知的运动模式引起的,例如相机抖动、物体直线运动),而是通过捕获连续清晰帧并进行积分来模拟模糊过程。详细步骤见第 2 节。需要注意的是,我们的数据集仅由模糊图像和清晰图像对组成,并且局部核信息隐含地嵌入其中(没有明确计算每个像素的模糊核,但模糊图像本身已经包含了模糊是如何产生的线索,这些线索被隐含在图像中)。如图 2 所示,我们的无核模糊图像与传统方法生成的均匀模糊核合成图像进行了比较。值得注意的是,我们方法生成的模糊图像表现出由移动的人和静态背景引起的现实且空间变化的模糊,而传统方法合成的模糊图像则没有这种效果。对于潜在图像估计,我们不假设模糊源,而是仅使用模糊图像和清晰图像对训练模型。因此,我们的方法在去模糊过程中不会受到与核相关的问题的影响
在这里插入图片描述


2. 模糊数据集

与其通过卷积一个核来生成模糊图像,我们选择记录在曝光过程中需要积分的清晰图像信息。由于相机传感器在曝光期间接收光线,每个时刻的清晰图像刺激会被累积,从而生成模糊图像 [13]。集成信号随后通过非线性CRF(Camera Response Function,相机响应函数)(接收到的光信号会被转化为图像的像素值)转换为像素值。因此,该过程可以通过累积高速视频帧的信号来近似。

模糊累积过程可以建模如下:

B = g ( 1 T ∫ t = 0 T S ( t ) d t ) ≃ g ( 1 M ∑ i = 0 M − 1 S [ i ] ) , (2) B = g \left( \frac{1}{T} \int_{t=0}^{T} S(t) dt \right) \simeq g \left( \frac{1}{M} \sum_{i=0}^{M-1} S[i] \right), \tag{2} B=g(T1t=0TS(t)dt)g(M1i=0M1S[i]),(2)

其中, T T T S ( t ) S(t) S(t) 分别表示曝光时间和时刻 t t t 的清晰图像传感器信号(光信号=原始光强度信息)。类似地, M M M S [ i ] S[i] S[i] 分别表示采样帧的数量和曝光时间内捕获的第 i i i 帧清晰帧信号。 g g g 是将潜在的清晰信号(真实场景中的光信号 S ( t ) S(t) S(t) 映射到观察到的图像(图像像素值 S ^ ( t ) \hat{S}(t) S^(t)CRF,使得 S ^ ( t ) = g ( S ( t ) ) \hat{S}(t) = g(S(t)) S^(t)=g(S(t)) S ^ [ i ] = g ( S [ i ] ) \hat{S}[i] = g(S[i]) S^[i]=g(S[i])。在实践中,我们只观察到了视频帧(模糊后的视频帧),而原始信号和 CRF 是未知的。

众所周知,当涉及非线性 CRF (相机传感器将光信号转换为像素值的过程是非线性的)时,非均匀去模糊变得非常困难,并且必须考虑非线性因素。然而,目前还没有针对空间变化模糊图像的 CRF 估计技术 [27]。当真实 CRF 未知时,一种常见的实用方法是将 CRF 近似为伽马曲线,其中 γ = 2.2 \gamma = 2.2 γ=2.2,如公式 (3) 所示,因为这被认为是已知 CRFs 的近似平均值 [27]。

g ( x ) = x 1 / γ . (3) g(x) = x^{1/\gamma}. \tag{3} g(x)=x1/γ.(3)

因此,通过校正伽马函数,我们可以从观察到的图像 S ^ [ i ] \hat{S}[i] S^[i] 中获得潜在帧信号 S [ i ] S[i] S[i],即 S [ i ] = g − 1 ( S ^ [ i ] ) S[i] = g^{-1}(\hat{S}[i]) S[i]=g1(S^[i]),然后使用公式 (2) 合成相应的模糊图像 B B B

我们使用 GOPRO4 Hero Black 相机生成我们的数据集。我们拍摄了 240 fps 的 GOPRO 视频,然后对不同数量的连续潜在帧(7 - 13 帧)进行平均,以产生不同强度的模糊效果。例如,平均 15 帧模拟了快门速度为 1/16 的照片,而对应清晰图像的快门速度为 1/240。值得注意的是,对于每张模糊图像,其对应的潜在清晰图像被定义为用于生成模糊图像的清晰帧序列中的中间帧。最后,我们的数据集由 3214 对分辨率分别为 1280×720 的模糊图像和清晰图像组成。提出的 GOPRO 数据集已在我们的网站上公开发布 [1]。

在这里插入图片描述


3. 提出的方法

3.1 模型架构

除了多尺度架构外,我们还采用了稍作修改的残差网络结构 [12] 作为模型的基本构建块。使用残差网络结构可以使架构更深,相较于普通的 CNN。此外,由于模糊图像和清晰图像在数值上相似,让参数仅学习它们之间的差异是高效的。我们发现,在原始残差构建块的跳跃连接后移除修正线性单元ReLU可以加速训练时的收敛速度。我们将修改后的构建块称为 ResBlock。原版和修改后的构建块如图 3 所示。
在这里插入图片描述
通过堆叠足够数量的卷积层与残差块(ResBlocks),每个尺度下的感受野(Receptive Field)得以扩展。具体细节将在后续段落中详细说明。为保持一致性,我们按分辨率从高到低的顺序定义尺度级别(即第1级对应最精细尺度)。除非另有说明,我们总共使用 K=3个尺度 。在训练时,输入与输出的高斯金字塔图像块分辨率被设定为 {256×256, 128×128, 64×64} 。相邻尺度间的比例为 0.5 。所有卷积层的滤波器尺寸均设置为 5×5 。由于我们的模型是全卷积网络(Fully Convolutional),在测试时,图像块尺寸可根据GPU内存容量灵活调整。整体架构如图4所示。
在这里插入图片描述
在这里插入图片描述


粗尺度网络

最粗尺度网络位于网络开始。第一层卷积1/4分辨率(64×64)的图像转换为64通道特征图。随后堆叠19个残差块(ResBlocks),最后通过一层卷积将特征图还原至输入维度。所有卷积层均采用零填充(zero padding)以保持分辨率不变。该尺度网络共计40层卷积。每个尺度层级的卷积层数经过设计,使得整体模型共包含120层卷积(3个尺度 × 40层)。因此,最粗尺度网络的感受野足以覆盖整个图像块(64×64)。在该阶段结束时,生成最粗尺度的潜在清晰图像。此外,最粗尺度的输出信息将被传递至下一阶段的更精细尺度网络。

为将最粗尺度的输出适配到下一更精细尺度的输入尺寸,输出图像块需经过转置卷积层(可以根据图像特征进行设计 卷积核参数需要训练)(Upconvolution)[22],而其他多尺度方法通常使用重塑(改形状)(Reshaping)[8]或上采样(通过线性插值)(Upsampling)[4,6,23]。由于清晰图像块与模糊图像块共享低频信息,通过可学习的上卷积生成特征,能够有效去除冗余信息。实验中,转置卷积(一种可学习的上采样方法,通过反向卷积操作恢复空间分辨率)相比传统上采样方法表现出更优性能。最终,上卷积生成的特征与更精细尺度的模糊图像块沿通道维度拼接,作为下一阶段的输入。


细尺度网络

细尺度网络的基本结构与粗尺度网络相同。然而,第一卷积层同时接收来自前一阶段的清晰特征以及其自身的模糊输入图像,并以拼接的形式处理。每个卷积滤波器大小为 5 × 5 5 \times 5 5×5,且特征图的数量与粗尺度相同。除了最精细尺度外,下一阶段之前都有一个转置卷积层。在最精细尺度,恢复出原始分辨率的清晰图像。


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


3.2 训练

我们的模型在提出的 GOPRO 数据集上进行训练。在 3214 对图像中,2103 对用于训练,其余用于测试。为了避免网络过拟合,采用了多种数据增强技术。在几何变换方面,图像块随机水平或垂直翻转,并旋转 90 度。对于颜色,RGB 通道随机排列(让模型不过度依赖颜色信息,关注更本质的特征,不用恢复)。为了考虑图像退化,HSV 颜色空间(HSV将颜色分为色相(Hue)、饱和度(Saturation)、明度(Value))中的饱和度乘以一个随机数,范围为 [ 0.5 , 1.5 ] [0.5, 1.5] [0.5,1.5]。此外,向模糊图像添加高斯随机噪声。为了使网络对不同强度的噪声具有鲁棒性,噪声的标准差从高斯分布 N ( 0 , ( 2 / 255 ) 2 ) N(0, (2/255)^2) N(0,(2/255)2) 中随机采样。然后,超出 [ 0 , 1 ] [0, 1] [0,1] 范围的值被裁剪。最后,减去 0.5,以使输入和输出值范围以零为中心,范围为 [ − 0.5 , 0.5 ] [-0.5, 0.5] [0.5,0.5]

在这里插入图片描述


在优化网络参数时,我们结合了两种损失:多尺度内容损失和对抗损失。

多尺度内容损失

基本上,粗到细的方法希望每个中间输出成为对应尺度的清晰图像。因此,我们训练网络使得中间输出形成清晰图像的高斯金字塔均方误差(MSE)准则应用于金字塔的每一级。因此,损失函数定义如下:

L cont = 1 2 K ∑ k = 1 K 1 c k w k h k ∥ L k − S k ∥ 2 , \mathcal{L}_{\text{cont}} = \frac{1}{2K} \sum_{k=1}^{K} \frac{1}{c_k w_k h_k} \| L_k - S_k \|^2, Lcont=2K1k=1Kckwkhk1LkSk2,

其中, L k L_k Lk S k S_k Sk 分别表示第 k k k 级尺度的模型输出和GT清晰图像。每级尺度的损失通过通道数 c k c_k ck、宽度 w k w_k wk 和高度 h k h_k hk(即元素总数)进行归一化。


对抗损失

最近,对抗网络被报道能够生成锐利逼真的图像 [9, 4, 24]。根据 [24] 中引入的架构,我们构建判别器如表 1 所示。判别器将最精细尺度的输出或GT清晰图像作为输入,并分类它是去模糊图像还是清晰图像。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

对抗损失定义如下:普通对抗损失函数

L adv = E S ∼ p sharp ( S ) [ log ⁡ D ( S ) ] + E B ∼ p blurry ( B ) [ log ⁡ ( 1 − D ( G ( B ) ) ) ] , \mathcal{L}_{\text{adv}} = \mathbb{E}_{S \sim p_{\text{sharp}}(S)}[\log D(S)] + \mathbb{E}_{B \sim p_{\text{blurry}}(B)}[\log(1 - D(G(B)))], Ladv=ESpsharp(S)[logD(S)]+EBpblurry(B)[log(1D(G(B)))],

其中, G G G D D D 分别表示生成器(即图 4 中的多尺度去模糊网络)和判别器(分类器)。在训练过程中, G G G 尝试最小化对抗损失,而 D D D 尝试最大化它。

最后,通过结合多尺度内容损失和对抗损失,生成器网络(多尺度去模糊网络)和判别器网络联合训练。因此,我们的最终损失项为:

L total = L cont + λ × L adv , \mathcal{L}_{\text{total}} = \mathcal{L}_{\text{cont}} + \lambda \times \mathcal{L}_{\text{adv}}, Ltotal=Lcont+λ×Ladv,

其中,权重常数 λ = 1 × 1 0 − 4 \lambda = 1 \times 10^{-4} λ=1×104

我们使用 ADAM [18] 优化器,批量大小为 2 进行训练。学习率自适应调整,初始值为 5 × 1 0 − 5 5 \times 10^{-5} 5×105。经过 3 × 1 0 5 3 \times 10^5 3×105 次迭代后,学习率降低到先前学习率的 1 / 10 1/10 1/10。总训练需要 9 × 1 0 5 9 \times 10^5 9×105 次迭代才能收敛。


实验部分不说了,本文完结,撒花★,°:.☆( ̄▽ ̄)/$:.°★ !!!