Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译

香港中文大学,腾讯优图实验室

摘要

在单图像去模糊中,“粗到细”方案(即在金字塔中以不同分辨率逐步还原清晰图像)在传统的基于优化的方法和最新的基于神经网络的方法中都非常成功。 在本文中,我们研究了这种策略,并提出了用于该去模糊任务的规模递归网络(SRN-DeblurNet)。与[25]中许多基于学习的新方法相比,它具有更简单的网络结构,更少的参数数量并且更易于训练。 我们在具有复杂运动的大规模去模糊数据集上评估我们的方法。结果表明,与现有技术相比,我们的方法在定量和定性方面都能产生更好的质量结果。

Introduction

图像去模糊一直是计算机视觉和图像处理中的一个重要课题。对于由摄像机抖动、物体运动或离焦引起的运动或焦模糊图像,去模糊的目标是恢复具有必要边缘结构和细节的清晰的潜在图像。
单图像去模糊是一种高度不适定的方法。传统的方法对模糊特性(如均匀/非均匀/深度感知)应用各种约束,并利用不同的自然图像先验[1,3,6,39,14,40,26,27]对解空间进行正则化。这些方法大多涉及启发式参数调整和复杂的计算。此外,对模糊模型的简化假设通常会阻碍其在现实世界示例中的性能,在这些示例中,模糊比建模要复杂得多,并且会与相机内图像处理管道纠缠在一起。
还提出了基于学习的方法进行去模糊。 早期的方法[29,34,38]用学习的参数替换了传统框架中的一些模块或步骤,以利用外部数据。 最近的工作开始使用端到端的可训练网络去模糊图像[25]和视频[18、33、37]。其中,Nah等人他使用多尺度卷积神经网络(CNN)取得了最先进的结果。 该方法从非常粗糙的模糊图像开始,逐渐以更高的分辨率恢复潜像,直到达到全分辨率为止。 该框架遵循传统方法中的多尺度机制,在处理大型模糊内核时,粗到细流水线是常见的[6]。
在本文中,我们探索了一种用于多尺度图像去模糊的更有效的网络结构。 我们提出了新的规模递归网络(SRN),该网络解决了基于CNN的去模糊系统中的两个重要且普遍的问题。

Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译

Scale-recurrent Structure

在公认的多尺度方法中,每个尺度的求解器和相应参数通常是相同的。 从直觉上讲,这是一种自然的选择,因为在每种规模下,我们都致力于解决相同的问题。 还发现,在每个尺度上变化的参数都可能引入不稳定性,并引起无限制解空间的其他问题。 另一个问题是输入图像可能具有不同的分辨率和运动比例。 如果允许在每个比例中进行参数调整,则解决方案可能会过分适合特定的图像分辨率或运动比例。
我们认为,出于相同的原因,该方案也应应用于基于CNN的方法。 但是,最近的级联网络[4,25]仍对其规模使用各自独立的参数。 在这项工作中,我们建议跨尺度共享网络权重,以显着降低训练难度并引入明显的稳定性好处。
优点是双重的。 首先,它大大减少了可训练参数的数量。 即使使用相同的训练数据,对共享权重的循环利用也以类似于多次使用数据来学习参数的方式工作,这实际上等于关于尺度的数据增强。 其次,我们提出的结构可以合并循环模块,其中隐藏状态捕获有用的信息并有益于跨规模恢复.

Encoder-decoder ResBlock Network

受到最近用于各种计算机视觉任务的编码器-解码器结构成功的启发[23、33、35、41],我们探索了使其适应图像去模糊的有效方法。 在本文中,我们表明直接应用现有的编解码器结构无法产生最佳结果。 相反,我们的编码器-解码器残差块(ResBlock)网络会放大各种CNN结构的优点,并在训练中产生可行性。 它还产生很大的接受域,这对于大运动去模糊至关重要。
我们的实验表明,利用递归结构并结合以上优点,我们的端到端深度图像去模糊框架可以极大地提高训练效率([25]的1/4训练时间来完成类似的恢复)。 我们仅使用少于1/3的可训练参数,并且测试时间要快得多。
如图1所示,除了训练效率,我们的方法在数量上和质量上都比现有方法产生更高的质量结果,将在以后进行详细说明。 我们将此框架命名为递归网络(SRN)。
Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译

  1. Related Work
    在这一节中,我们将简要回顾图像去模糊方法和最近用于图像处理的CNN结构。
    Image/Video Deblurring
    经过Fergus等[12] 和Shan等 人[30]的开创性工作。针对恢复质量和对不同情况的适应性,提出了许多去模糊方法。 设计自然图像先验以抑制伪影并提高质量。 它们包括全变差(TV)[3],稀疏图像先验[22],重尾梯度先验(heavy-tailed gradient prior)[30],超拉普拉斯先验[21],L0范数梯度先验[40]等。 方法遵循从粗到精(coarse-to-fine)的框架。 频域方法[8,14]除外,它们仅适用于有限的情况。
    图像去模糊还受益于深层CNN的最新发展。 Sun等[34]使用网络来预测模糊的方向和宽度。 舒勒等[29]以粗糙到精细的方式堆叠了多个CNN,以模拟迭代优化。 Chakrabarti [2]在频域中预测了反卷积核。 这些方法遵循传统框架,其中几个部分被CNN模块取代。 Su等[33]使用具有跳过连接的编码器-解码器网络来学习视频去模糊。 Nah等[25]训练了一个多尺度的深度网络来逐步还原清晰的图像。 这些端到端(end to end)方法通过不同的结构利用多尺度信息。
    CNNs for Image Processing
    与分类任务不同,用于图像处理的网络需要特殊设计。 作为最早的方法之一,SRCNN [9]使用3个平面卷积层(具有相同的特征图大小)来实现超分辨率。 U-net [28](如图2(a)所示)也得到了改进,也称为编码器-解码器网络[24],极大地提高了回归能力,并广泛用于FlowNet [10]的最新工作中,视频去模糊[33],视频超分辨率[35],帧合成[23]等。多尺度CNN [25]和级联优化网络(CRN)[4](图2(b))简化了训练 通过从小规模开始逐步完善输出。 它们分别在图像去模糊和图像合成方面是成功的。 图2(c)显示了一个不同的结构[5],该结构使用了具有增加速率的扩张卷积层,这近似地增加了内核大小。
    Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译

  2. Network Architecture
    所提出的网络的总体架构(我们称为SRN-DeblurNet)在图3中进行了说明。该网络以不同的比例从输入图像中向下采样一系列模糊图像作为输入,并生成一组相应的清晰图像。 全分辨率下最清晰的是最终输出。
    3.1. Scale-recurrent Network (SRN)
    如第二节所述。 如图1所示,我们采用了从粗到精策略中跨多个规模的新颖循环结构。 我们将在每个比例下生成清晰的潜像作为图像去模糊任务的子问题,该子问题将模糊图像和初始去模糊结果(从先前比例上采样)作为输入,并在此比例下估计清晰图像:
    Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译

其中,i是比例指数,i = 1代表最佳比例。 Bi和Ii分别是第i个尺度的模糊和估计潜像。 NetSR是我们提出的尺度递归网络,其训练参数表示为θSR。 由于网络是经常性的,因此隐藏状态功能会跨尺度流动。 隐藏状态从先前的较粗尺度捕获图像结构和内核信息。 (·)↑是用于从第(i +1)到第i比例调整特征或图像的算子。
式 (1)给出了网络的详细定义。 实际上,网络设计具有极大的灵活性。 首先,循环网络可以采用不同的形式,例如普通RNN,长期短期记忆(LSTM)[16、32]和门控循环单元(GRU)[7]。 我们选择ConvLSTM [32],因为它在我们的实验中表现更好。 分析将在第4节中给出。 其次,运算符(·)↑的可能选择包括解卷积层,子像素卷积层[31]和图像大小调整。我们在所有实验中都使用双线性插值,因为其充实和简单。 正确设计以获得最佳效果以恢复清晰图像,下面将详细介绍我们的方法。

3.2. Encoder-decoder with ResBlocks
Encoder-decoder Network
编码器-解码器网络[24、28]指的是对称的CNN结构,该结构首先将输入数据逐步转换为具有较小空间大小和更多通道的特征图(在编码器中),然后将它们转换回输入的形状(在解码器中) )。 相应特征图之间的跳过连接被广泛用于组合不同级别的信息。 它们还可以有益于梯度传播并加速收敛。 通常,编码器包含具有步幅的卷积层的多个阶段,并且解码器模块使用一系列解卷积层[23、33、35]或调整大小来实现。 在每个级别之后插入其他卷积层,以进一步增加深度。
编码器-解码器结构已被证明在许多视觉任务中[23、33、35、41]都是有效的。 但是,出于以下考虑,直接使用编码器/解码器网络不是我们任务的最佳选择。
首先,对于去模糊的任务,接收场需要很大以处理剧烈的运动,从而导致为编码器/解码器模块堆叠更多的水平。 但是,在实践中不建议使用此策略,因为它会随着大量的中间特征通道而迅速增加参数的数量。 此外,中间特征图的空间大小太小而无法保留空间信息以进行重建。 其次,在编码器/解码器模块的每个级别上添加更多的卷积层将使网络收敛缓慢(在每个级别上具有平坦的卷积)。 最后,我们提出的结构需要内部具有隐藏状态的循环模块。
Encoder/decoder ResBlock
我们进行了一些修改,以使编码器-解码器网络适应我们的框架。 首先,我们通过引入剩余学习块来改进编码器/解码器模块[15]。 基于[25]的结果和我们的实验,我们选择使用ResBlocks代替ResNet [15]中的原始块(不进行批量归一化)。 如图3所示,我们提出的编码器ResBlock(EBlock)包含一个卷积层,然后是几个ResBlock。 卷积层的步幅为2。它将上一层的内核数量加倍,并将特征图下采样到一半。 以下每个ResBlocks包含2个卷积层。 此外,所有卷积层都具有相同数量的内核。 解码器ResBlock(DBlocks)与EBlock对称。 它包含几个ResBlock,然后是一个反卷积层。 去卷积层用于将特征图的空间大小加倍,并将通道减半。
其次,我们的规模递归结构需要网络内部的递归模块。 与[35]的策略类似,我们在瓶颈层插入卷积层以隐藏状态以连接连续的音阶。 最后,我们为每个卷积层使用大小为5×5的大卷积核。
修改后的网络表示为:
Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译

其中NetE和NetD是具有参数θE和θD的编码器和解码器CNN。 NetE和NetD中分别使用了三个阶段的EBlock和DBlock。 θLSTM是ConvLSTM中的参数集。 隐藏状态hi可能包含有关中间结果和模糊模式的有用信息,这些信息会传递到下一个比例尺,从而有利于精细比例尺问题。
在此指定模型参数的详细信息。 我们的SRN包含3个秤。 第(i +1)个标度是第i个标度的一半。 对于编码器/解码器ResBlock网络,有1个InBlock,2个EBlock,然后是1个卷积LSTM块,2个DBlock和1个OutBlock,如图3所示。InBlock产生32通道特征映射。 OutBlock将先前的特征映射作为输入并生成输出图像。 每个EBlock / DBlock内所有卷积层的内核数均相同。 对于EBlock,内核数分别为64和128。 对于DBlock,它们分别为128和64。EBlocks和反卷积层中卷积层的步幅大小为2,而其他所有卷积为1。整流线性单位(ReLU)用作所有层和所有内核大小的**函数 设置为5。

3.3. 损失函数Losses
我们在网络输出和地面真相之间(使用双线性插值降采样为相同大小),对每个尺度使用欧几里得损失:

其中Ii和Ii ∗分别是我们在第i尺度上的网络输出和地面实况。 { ki }是每个秤的权重。 我们凭经验设定κi= 1.0。 Ni是要归一化的Ii中的元素数。 我们还尝试了全变差和对抗损失。 但是我们注意到L2范数足以产生清晰的结果。
Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译

  1. 实验
    我们的实验是在装有Intel Xeon E5 CPU和NVIDIA Titan X GPU的PC上进行的。 我们在TensorFlow平台上实现我们的框架[11]。 我们的评估是全面的,可以验证不同的网络结构以及各种网络参数。 为了公平起见,除非另有说明,否则所有实验均在具有相同训练配置的同一数据集上进行。

Data Preparation
为了创建大型训练数据集,基于早期学习的方法[2,29,34]通过将清晰的图像与实际或生成的均匀/不均匀模糊内核进行卷积来合成模糊图像。 由于简化了图像形成模型,因此合成数据仍然与相机捕获的数据不同。 最近,研究人员[25,33]提出了通过对高速相机(例如高速相机)拍摄的视频中连续的短曝光帧求平均来生成模糊图像的方法。 GoPro Hero 4 Black相机,可近似长时间曝光的模糊画面。 这些生成的帧更加逼真,因为它们可以模拟复杂的相机抖动和物体运动,这在真实照片中很常见。
为了公平地比较网络结构,我们使用[25]的GOPRO数据集训练了网络,其中包含3,214个模糊/清晰图像对。 遵循与[25]中相同的方式,我们使用2,103对图像进行训练,其余1,111对进行评估。

模型训练
对于模型训练,我们使用β1= 0:9,β2= 0:999和€= 10-8的Adam求解器[19]。 使用功率0.3,在2000个时代,学习率从0:0001的初始值呈指数下降到1e-6。 根据我们的实验,2,000(epochs)次训练足以收敛,大约需要72个小时。 在每次迭代中,我们对一批16张模糊图像进行采样,并随机裁剪256×256像素斑块作为训练输入。 相应地会生成真实清晰的补丁(patches)。 所有可训练变量都使用Xavier方法[13]初始化。 上述参数对于所有实验都是固定的。
对于涉及递归模块的实验,我们仅将梯度剪辑应用于ConvLSTM模块的权重(已被全局准则3限制)以稳定训练。 由于我们的网络是完全卷积的,因此只要GPU内存允许,就可以将任意大小的图像作为输入。 对于尺寸为720×1280的测试图像,我们提出的方法的运行时间约为1.87秒。
Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译

4.1. 多尺度策略Multi-scale Strategy
为了评估提议的规模递归网络,我们设计了几个基线模型。 为了评估网络结构,我们为所有卷积层使用了内核大小3,以获得合理的效率。 单尺度模型SS使用与我们提出的结构相同的结构,除了仅以其原始分辨率获取单尺度图像作为输入。 循环模块被一个卷积层代替,以确保相同数量的卷积层。
Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译

基线模型SC指的是[4,25]中的级联结构,它使用3个阶段的独立网络。 每个单级网络均与型号SS相同。 因此,该模型的可训练参数比我们的方法大3倍。 模型w / oR在瓶颈层(即模型SS)中不包含显式的递归模块,这是模型SC的共享权重版本。 RNN模型使用原始RNN结构代替ConvLSTM。
表1显示了测试数据集上不同方法的结果,从中我们得出了一些有用的观察结果。 首先,多尺度策略对于图像去模糊任务非常有效。 SS模型使用与我们建议的SRN结构相同的结构和相同数量的参数,但在PSNR方面表现更差(28.40dB vs 29.98dB)。 在图4中给出了一种视觉比较,其中(b)中的单比例模型SS可以从严重模糊的图像中恢复结构。 但是字符仍然不够清晰,无法识别。
如图4(c)所示,当使用2个标度时,结果得到了改善,因为多标度信息已得到有效合并。 具有3个等级的更完整的模型在图4(d)中进一步产生了更好的结果。 但是改善已经很小。
其次,每个标度的独立参数不是必需的,甚至可能是有害的,这一事实证明了Model SC的性能比w / oR,RNN和SR-EDRB3模型差(后者具有3个ResBlock共享相同的编码器-解码器ResBlock结构) 。 我们认为,原因是,尽管更多的参数导致了更大的模型,但它也需要更长的训练时间和更大的训练数据集。 在具有固定数据集和训练时期的约束环境中,模型SC可能未得到最佳训练。
最后,我们还测试了不同的循环模块。 结果表明,原始RNN优于不使用RNN,ConvLSTM使用SREDRB3模型获得了最佳结果。

4.2. 编解码器重块网络Encoder-decoder ResBlock Network
我们还设计了一系列基准模型来评估具有ResBlock结构的编码器-解码器的有效性。 为了公平地比较,这里的所有模型都使用我们的规模递归(SR)框架。 SR-Flat模型用平坦的卷积层代替了编码器-解码器体系结构,其数目与所提出的网络的数目相同,即43层。 SR-RB模型用ResBlock替换了所有EBlock和DBlock。 不包括跨步或合并。 这使要素图具有相同的大小。 SR-ED模型使用原始的编码器-解码器结构,所有ResBlocks都替换为2个卷积层。 我们还比较了EBlock / DBlock中不同数量的ResBlock。 SR-EDRB1,SR-EDRB2和SR-EDRB3模型分别指的是使用1、2和3 ResBlock的模型
定量结果显示在表1中。Flat卷积模型Flat在PSNR和SSIM方面表现最差。 在我们的实验中,要达到与其他结果相同的质量水平,需要花费更多的时间。 RB模型要好得多,因为ResBlock结构是为更好的训练而设计的。 最好的结果是通过我们提出的SR-EDRB1-3模型实现的。 随着ResBlock数量的增加,定量结果也变得更好。 我们在建议的模型中选择了3个ResBlock,因为超出3个ResBlock的改进是微不足道的,并且在效率和性能之间取得了很好的平衡。

4.3. 比较
我们将我们的方法与评估数据集和真实图像上的现有最新图像去模糊方法进行了比较。 由于我们的模型处理的是一般的相机抖动和物体运动(即去运动模糊[17]),因此与传统的统一去模糊方法进行比较是不公平的。 Whyte等人的方法[36]被选作非均匀模糊的代表性传统方法。 请注意,对于测试数据集中的大多数示例,模糊图像仅是由相机抖动引起的。 因此,[36]中的非均匀假设成立。
Kim等人的方法 [17]应该能够处理动态模糊。 但是没有提供代码或可执行文件。 相反,我们将其与Nah等人的最新作品[25]进行比较,显示出非常好的结果。 Sun等[34]使用CNN估计模糊核,并使用传统的反卷积方法恢复清晰的图像。 我们使用作者提供的带有默认参数的官方实现。 表2列出了GOPRO测试数据集和Kohler数据集[20]的定量结果。 视觉上的比较在图5-6。更多结果在我们的补充材料中。
Benchmark Datasets
图5的第一行包含来自GOPPRO测试数据集的图像,由于大型摄像机和物体运动,这些图像会遭受复杂的模糊。 尽管传统方法[36]建立了通用模型,对于摄像机平移和旋转的非均匀模糊,在图5(a),(c)和(d)中仍以摄像机运动为主,但仍然失败。 这是因为前进/后退运动以及场景深度在真实的模糊图像中起着重要作用。 此外,违反假定模型会导致令人讨厌的振铃效应,使还原后的图像甚至比输入图像差。
Sun等人使用CNN预测内核方向。 但是在此数据集上,复杂的模糊模式与它们的综合训练集完全不同。 因此,这种方法在大多数情况下都无法预测可靠的内核,并且结果仅略微锐化。 最近的最新技术[25]可以产生高质量的结果,同时保留一些模糊的结构和伪影。 由于设计了框架,我们的方法有效地产生了具有更清晰结构和更清晰细节的出色结果。 根据我们的实验,即使在极端情况下,运动对于先前的解决方案而言过大,我们的方法仍然可以对重要部分产生合理的结果,并且不会在其他区域上引起很多视觉伪像,如图6的最后一种情况所示。 定量结果与我们的观察一致,我们的框架在很大程度上优于其他框架。
Real Blurred Images
GoPro测试图像是从高速相机合成的,可能与实际的模糊输入有所不同。 我们在图6中显示了对真实捕获的模糊图像的结果。我们的训练模型对这些图像进行了很好的概括,如图6(d)所示。 与Sun等人和Nah等人的结果相比,我们的质量更高。
Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译
Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译
Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译
Scale-recurrent Network for Deep Image Deblurring(SRN-DeblurNet)翻译

  1. 结论
    在本文中,我们已经解释了在图像去模糊中使用“粗到细”方案的正确网络结构是什么。 我们还提出了一个标度循环网络,以及每个标度中的编码器-解码器ResBlocks结构。 这种新的网络结构比以前的多尺度去模糊参数具有更少的参数,并且更易于训练。 我们的方法所产生的结果在定性和定量上都是最新的。 我们相信这种规模递归网络可以应用于其他图像处理任务,我们将在未来进行探索。