"Deep Generative Filter for motion deblurring"(用于消除运动模糊的深度生成网络)是2017年9月挂到arXiv上的一篇论文,论文连接: https://arxiv.org/abs/1709.03481
由于相机抖动导致的运动模糊由于其本身的病态属性,一直是计算机视觉领域一个具有挑战性的问题。在3D空间中,相机和被拍摄物体之间的相对运动导致的运动模糊会在整幅图像上产生模糊效应。
在本文中,我们提出了一种新的基于对抗神经网络(GAN)的滤波网络结构去解决运动模糊这一问题,我们的这种新的结构是在对抗神经网络(GAN)的基础上,增加了稀疏连接和稠密连接。我们的模型,通过估算模糊核的过程,极大的减少了测试时间,这在实际应用在很重要。
在基准数据集上的实验证明了该方法的有效性,它优于目前最先进的盲去模糊( blind deblurring)算法。
运动模糊是一种常见的问题,主要发生在使用像手机这样的轻量级设备捕获图像时。由于有限的曝光间隔和捕获装置与捕获对象之间的相对运动,所获得的图像常常存在模糊。
在参考文献[19]中,展示了在高质量图像上训练的标准网络模型,当应用于由于失焦或被摄体/摄像机运动而产生的模糊的图像时,性能受到显著的影响。所以需要专门处理运动模糊这一问题。由于运动引起的模糊在空间上是不均匀的,模糊核是未知的,加之深度变化,对象的分割边界和摄像机和场景对象之间的相对运动,使得空间变化的非均匀核变得非常困难。
在本文中,我们介绍了一个生成性对抗网络(GAN)为基础的深度学习架构,以解决这一具有挑战性的问题。我们获得了比现有最先进的算法更好的结果。
文献中的大部分先前的工作解决相机抖动的问题,是通过将其建模为盲解卷积问题,并使用图像统计作为先验或正则化工具来获得模糊核。虽然这些方法在基准数据库中取得了巨大的成功,但是他们的算法局限性限制了它们在实际中的应用。此外,大多数文献中的这些工作一直致力于解决盲解卷积(或称盲反卷积,指在两个卷积因子未知的情况下,通过卷积结果来获得卷积因子的过程)的问题,并且假设模糊核在空间上是均匀的。
也有很少的工作提出通过空间上变化的模糊核去解决这一挑战,它们把图像分割成更小的区域,并分别估算每个区域的模糊核(参考文献4)。获得了图像上每个区域的反卷积核之后,再利用OLA(重叠相加)方法组合生成最终的去卷积图像。
文献中也有首次提出用深度学习方法处理运动模糊的。他们首先尝试预测给定图像中的小区域中运动模糊信息的概率分布,然后尝试利用这种模糊观察来恢复锐利图像[18]。我们了解到,只有一个工作尝试直接从给定的模糊图像中恢复出锐利的图像[16]。然而,由于作者利用多尺度框架来获得去模糊图像,所以计算成本很高。因此,我们的目的是直接恢复无伪影图像,而不使用多尺度框架。盲反卷积算法去模糊的调查可以参看参考文献[11]。
在我们的模型中,我们允许深度网络中的每个卷积单元基于低级别激活的整个阵列进行独立的决策。与[12]和[16]中利用残差模块作为基本的结构单元,把较低水平的激活值与高水平的输出相加,我们希望来自不同语义水平的信息可以在整个网络中不减弱的传递。为了实现这一目标,我们提出了一个密集连接的“生成网络”。
3.1 模型结构
我们的结构包括一个密集连接的生成器和鉴别器。 生成器的任务是重复利用跨越了多个尺度的特征来生成图像,使得鉴别器认为生成的图像是来自于目标图像的分布。因此,我们可以根据给定的模糊图像生成视觉上完整并且统计上一致的去模糊图像。鉴别器的任务是通过分析每个图像上不同的小块,来识别每个输入图像的分布。正文中我们会详细阐述生成器和鉴别器模型。
3.1.1 生成器
与[6]不同的是,我们不减少信息的维数,并使其在整个网络中保持恒定。这样做确实增加了内存消耗,但是却可以保护网络不产生依赖于反卷积的网络中通常发现的棋盘伪影,从而产生视觉上完整的图像[7]。同时,与其他基于卷积网络的非均匀运动去模糊方法相比,通过复用所有网络层级上的特征,我们的生成器获得了更好的性能以及较浅的深度[16],[3],[18]。这种特征复用方法使得训练更加流畅,测试时间更短,并且内存利用率更高。我们的生成器模型包含4部分,分别是头部、密集连接模快、尾部和全局选择连接模块,如下图所示:
a) 头部
我们定义超参数“信道率”(CHR)作为由每个卷积层输出的激活信道的恒定数量。信道率为64。头部包括简单的3×3卷积层,卷积层在原始输入图像上卷积,并输出4×信道速率(4x64=256)个特征激活。这提供了足够的第一层激活特征图以用来触发密集连接层。
b) 密集连接模块
这一部分由N个卷积块组成,它们依次顺序地放置,所有输出都与它们前面的层的输出(也就是本层的输入)完全连接。通过将密集连接模块中每一层的输出激活与前层的输出激活连接起来,有效的实现了密集连接。所以输入到第m层的激活特征图数量应该是 ‘4*chr*(m-1)*chr’。下图显示了密集连接模块的结构:
第一个操作是Leaky ReLU,它不仅增加了输入激活的非线性,还避免了使用稀疏梯度,提高了GAN训练的稳定性。通过1X1卷积操作,把激活图的数目提升到最大值4Xchr(即256个)。当原始激活通道输入的数量是6×CHR(384)或更多时,这节省了密集模块的深层层中的参数和数据存储量。在每个密集快的最有一层使用的是卷积核是3X3的卷积,最终在每个密集块最后产生4Xchr的激活图。密集连接模块中的3×3卷积在空间卷积和具有线性增加的扩张因子的“扩张”卷积之间交替使用。在密集模块的偶数层我们使用扩充卷积[22]。我们将膨胀因子线性地增大到最大,直到密集模块的中心,然后对称地减小直到到达尾部。这有助于以每层的指数率增加接收场,而参数空间线性增加,从而在到达随后的密集层的激活图的多个尺度之间引入更高的视差。我们避免使用池化和跨越卷积操作,以保持输出映射的尺寸是恒定的,并且等于整个网络中图像的大小。在每个块的末尾添加“dropout”帮助我们有效地将高斯噪声添加到生成器(G)中的每个层的输入中,从而通过使生成器随机地模拟抖动分布来防止GaN崩溃问题。
c) 尾部
尾部模块添加了非线性并且通过1×1卷积把特征图的数量增加到4×chr。
d) 全局选择连接模块
深层卷积生成网络通常面临的问题是很容易就记住了深层的边缘特征,因为使用多个卷积操作后获取到的第一级特征已经变得微不足道了。这也导致网络不能从抖动图像上恢复出尖锐的边界。我们将网络头部的输出和尾部的输出相连接,这使得生成图片的性能得到改善,因为这样使得梯度可以从尾部直接流向第一卷积层,并且影响前层网络的参数更新。更重要的是,这种单一的连接驱使网络中心的整个密集连接模块能够扩展它对于真实图像和模糊图像之间的差别的认识。同时,也优化了从输入给生成器的真实图像的类gabor特征。然而,不同于传统的残差网络用于图像恢复模型,我们不使用级联跳过求和。相反,我们通过较密集的连接将较低层次的知识传递给上层,并引导整个密集场来单独计算全局残差,如实验所示,使我们的网络能够更快地获得,获得更好的收敛性,并显示明显更好的去模糊性能。
3.1.2 判别器
在我们的GAN框架中,判别器主要用来引导生成器去恢复模糊图像,同时我们不希望判别器网络太深,以至于它记住了更容易分类的任务。我们采用一个马尔科夫补丁鉴别器[13]与10个卷积层,这类似于一个趋于良好定义的非重叠滑动窗口,去获取图像上多个局部的结构特征。这也增强了生成的自然图像中丰富的色彩[7]。
a) l1和对抗损失
传统上,基于学习的图像恢复工作在基准图像和矫正图像之间使用l1或l2的损失作为主要目标函数[1]。假设一个对抗网络被用于这样的目的,那么损失函数和衡量生成器相对于鉴别器性能的对抗损失是合并在一起的。然而,在卷积模型中仅仅使用[1]中的损失会导致生成的图像过于平滑,因为像素误差函数在遇到不确定情况时,趋向于向平均收敛。这样就产生了不清晰的边缘,并且更为严重的是,在边缘和角落仍然存在大量的模糊。同时单独使用对抗损失确实可以保留边缘,并产生更为真实的颜色分布[1],但它存在以下缺点:它仍然没有结构上抽象的概念,仅仅基于判别器的输出图像而没有考虑模糊输入图像。我们利用感知损失函数来消除这些限制,并将它添加到[4]中给出的损失函数中。
b) 感知损失
我们需要增加结构知识到生成器中,以对抗马尔可夫鉴别器的分段判断。一个这样的损失函数,如在[8]中引入的,是基准的深卷积激活和产生的输出图像之间的欧几里的差异,也被称为“知觉损失”。这个损失项是在以下公式中给出的。
3.2.1 条件对抗网络框架
在我们的GAN框架中,我们将两个图像一起输送给鉴别器中,一个是由模糊图像和生成器生成的图像组成,而另一个是由输入模糊图像和对应的基准图像(锐利的图像)组成。在给定输入图像的情况下,这与生成器建模潜在图像的条件分布一致,该结果将帮助生成的图像在给定输入和其输出之间保持高度统计一致性。 这基本上就是我们所需要的,因为我们希望'G'保持输出对模糊输入的依赖性,以适应不同种类和数量的抖动模糊,并防止它在“糊弄”鉴别器的过程中摇摆太远。 因此,我们可以将条件GAN视为图像到图像网络中的“相关正则化器”。 在数学上,这将改变我们的任务中使用的原始GAN优化问题,该问题将通过以下方式给出:
其中,K1和K2是超参数,在我们的实验中分别设置为145和170。 从表3中,我们注意到通过引入此技术可以显着提高所有指标的性能。 在这个阶段,我们的网络已经超越了为我们的任务修改和训练的两个基线模型:[12]使用的非常深的连续ResNet模型和[7]使用的U-net模型。值得注意的是,我们的密集模型层数少得多(10个密集块)。而且比[12]中的模型(有15个残差块)收敛得更快,表明我们的模型和框架更好。
4.1 实验设置
我们用torch7库实现了我们的模型。 所有实验均在配备i7处理器和NVIDIA GTX Titan X GPU的工作站上进行。
网络参数:我们通过ADAM方案[9]优化我们的损失函数,并使用随机梯度下降(SGD)对其进行收敛。 在整个实验中,我们将训练的批量大小保持为3,并将固定基础学习率和动量分别保持在0.0002和0.9。 与[7]类似,我们在测试时使用实例规范化代替训练批量统计。
关于未来框架的实验:我们还对模型框架进行了简单的切除实验,以研究密集网络中哪些连接对于图像恢复更为重要,以便进一步探索我们的模型。我们使用两个命名为“A”和“B”的子密集框架来完成这项工作,切除研究的结果在下表中给出:
A模型:在这个模型中,我们的“密集场”的三个较低和较高的极端层被[12]和[16]的连续残差所取代,而中间层保持密集。通过这样做,我们发现与最终模型相比,性能显着下降。 这是因为中心部分具有“遗忘”的入门级特征,这对于计算头部和尾部之间的全局残差至关重要。
B模型:切换残差和密集层的位置比具有完全残留网络[12]和集中密集网络(A)的性能更好。 虽然我们的最终模型略胜一筹,但它通过减少大量数据连接来节省大量的GPU内存。 因此,当实现最远层之间的连接时,密集连接最有效。 这有助于网络继续回收较低的功能,以实现全局化更高层的认知。
4.2 数据库
为了训练我们的模型,我们从GoPRO数据集中提取了大小为256×256×3的小块,并将它们与从MS-COCO [14]和Imagenet数据集[2](调整为256×256×3)中随机抽样的图像相结合。生成我们的训练数据集。然后,我们在从MS-COCO和ImageNet数据集采样的图像上应用类似于[11]的非均匀模糊。 我们还通过使用平移和旋转翻转来执行数据增强,从而产生由50万个模糊和去模糊图像的训练图像对组成的最终数据集。
我们对由我们综合生成的一个数据集进行渐进模型的比较,并将我们的方法与三种不同基准数据集上的其他最先进方法的性能进行比较。 继Lai等人之后。 [11],我们使用了8个完整的参考指标来定量分析我们的去抖模型。 这些指标的详细描述可以在[11]中找到。 为了进行比较,我们选择了由Xu等人提出的最先进的blind deblurring去模糊算法。对比结果如下:
我们设计了一种新颖的端到端条件基于GAN的滤波器模型,该模型执行抖动图像的blind deblurring。 我们的结果表明,我们的模型和框架优于非均匀去模糊的最新技术。 我们模型的快速执行时间使其可以轻松部署在相机和照片编辑工具中。 同时表明,密集连接的卷积网络对于图像生成和分类一样有效。