学习笔记 Deblur系列 【1】-- Blind Motion Deblurring Using Conditional Adversarial Network

介绍DeblurGAN,一种基于条件生成对抗网络的盲运动去模糊方法,使用多元损失函数,无需模糊核信息,速度快五倍。提出随机轨迹生成模糊图像,改进目标检测效果评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习笔记 Deblur系列 【1】-- Blind Motion Deblurring Using Conditional Adversarial Network
欢迎转载交流学习,跟我说一下就行

论文创新点

  1. 新的loss function,在motion deblurring方面比现有方法快五倍。
  2. 新的产生模糊图像的方法,基于random trajectory。
  3. 评价deblurring algorithm 效果的新视角,通过目标检测的结果来反映。

论文内容

1. Introduction
本文研究了单幅图像的blind motion deblurring。在图像超分辨率和图像修复方面GAN的应用取得了很大的进步。 众所周知,GAN能够保留图像纹理细节,并且看起来与原图像非常相似。在GAN图像超分辨率和图对图转换等方面应用的启发下,我们可以把deblurring当作一个图对图的转换问题。因此,提出了基于条件生成对抗神经网络和多元损失函数的DeblurGAN。不同于之前我们使用的含有梯度惩罚和感知损失的Wasserstein GAN,这个方法在感知上比较难区分处理后与真实图像,并且相比于使用传统的MSE或者MAE标准作为优化目标,它能够获得更好的纹理细节。
本文有三点贡献。首先,我们提出了在motion deblurring 方面获得很好效果的损失函数,其速度是其他方法的五倍。其次,我们提出了基于随机轨迹的模糊图像生成方法,能够在清晰图像数据库中自动化得产生motion deblurring 训练库。结合motion deblurring 数据库进行训练后相比于只用真实图像数据库的效果要好很多。最后,我们提出了基于如何提高目标检测效果的评价deblurring algorithm效果的新方法。

2. Related Work

2.1 Image Deblurring
非均匀模糊核模型一般形式如下:
在这里插入图片描述
IB是模糊图像,k(M) 是未知模糊核由运动M决定,IS是潜在清晰图像,*表示卷积操作,N是加入的噪声。所有的deblurring 问题都分为两类,blind 和 non-blind deblurring。早期的研究阶段主要研究non-blind deblurring,对模糊核进行模拟。主要依赖于Lucy-Richardson 算法,Wiener 或者 Tikhonov 滤波来进行去卷积操作并获得对潜在清晰图像的估计。一般来说模糊函数是未知的,所以blind deblurring算法主要对潜在清晰图像以及模糊核进行估计。寻找能够对应于每一个像素的模糊函数是一个病态问题,并且现有大部分算法都依赖于heuristics,图像的统计数据以及对模糊形成的猜想。这些方法主要用于解决因相机抖动而在图像中形成的均匀模糊。 首先,通过模糊核可以估计相机运动,然后进行去卷积来得到逆向的效果。在Fergus取得成功之后,过去是十年间出现了很多方法,一些是基于迭代方法,通过使用参数先验模型在每一次迭代中来提高对运动模糊核和潜在图像的估计。然而,运行时间同停止机制一样对于这类方法来说是很重要的问题。另一些方法使用对模糊函数的局部线性度猜想和simple heuristics来快速估计模糊核。这类方法比较快但是只在小的图像集合中表现较好。
最近,Whyte 提出了新的非均匀的blind deblurring 算法,这个算法是根据相机曝光时的角速度来设计了一个图像模糊过程的参数几何模型。Gupta 也猜想模糊是由于3D相机的移动产生的。在过去的几年里,出现很多基于CNN的方法。Sun 使用CNN来估计模糊核,Chakrebarti 使用模糊核的傅里叶系数在傅里叶空间内进行blind deblurring,Gong使用全卷积网络进行运动流估计。最近,Noorozi和Nah提出了无需模糊核的端到端的方法,这个方法使用多级CNN来直接去模糊。Ramakrishnan使用pix2pix的框架和密集的连接卷积网络来进行blind deblurring 。这种方法能够处理不同类型的模糊图像。

2.2 Generative adversarial networks
Goodfellow提出了GAN,将网络定义为两个部分,判别器和生成器。在生成器中输入噪声来生成样本,判别器接受真实样本输出产生样本,并试图区分他们。生成器的目的是通过与真实样本差不多的感知样本来欺骗判别器。这个生成器G和判别器D之间的游戏形式如下:在这里插入图片描述
Pr是数据分布,Pg是模型分布,由˜ x = G(z),z ~ P(z)决定,输入Z是简单噪声分布的一个样本。尽管GANs能够产生感知质量比较好的样本,但是其训练面临许多问题,比如mode collapse, vanishing gradient等。缩小GAN中的函数值相当于缩小了数据和模型分布之间的 x 的Jensen-Shannon divergence。Arjovsky对由于JS divergence估计导致的GAN训练困难进行了讨论,并试图用Earth-Mover(也叫做Wasserstein-1)距离W(q,p)。WGAN的值函数用Kantorovich-Rubinstein duality 来构造,如下:
在这里插入图片描述
D是1-Lipschitz 函数的子集,Pg还是模型分布。关键在于K*W(Pr,Pθ),K是Lipschitz常数,W(Pr,Pθ)是Wasserstein 距离。在这个式子中,判别器的网络被称为critic 并且用于估计样本间的距离。为了加强Lipschitz在WGAN的限制,Arjovsky将权重剪裁至【-c,c】。Gulrajani 提出增加梯度惩罚过程来代替,如下:在这里插入图片描述
对于值函数来说是一个可以选择的增强Lipschitz限制的方法。这个方法几乎不需要超参数并且对于生成器的结构鲁棒。这对于image deblurring 来说很重要,因为我们可以用新的轻权重神经网络结构而不是之前使用的标准deep ResNet 结构。

2.3. Conditional adversarial networks
GAN 曾用于解决不同的图像到图像的转换问题,例如超分辨率,风格转移,照片生成等。Isola写了一篇对于上述方法详细的综述,并提出了条件GAN结构,也被称为pix2pix。不像 vanilla GAN,cGAN从被观察的图像中学到mapping 和随机噪声向量z, to y :G : x,z → y。Isola 也对判别器设置了一个条件,并且使用U-net结构作为生成器,Markovian 判别器在很多任务中都能得到很好的结果,例如合成来自于label maps 的照片,从edge maps 中重建目标,以及给图像上色等。

3. The proposed method
我们的目标是只输入blurred image IB ,来得到sharp image IS,所以不需要任何模糊核信息。通过训练好的生成器CNN GθG 来进行deblurring,对于每一个IB都一个对应的IS,此外,在训练阶段,我们采用严格对待 DθD 网络并对两个都已一种对抗性的方式进行训练。

3.1. Loss function
本文的损失函数是将content loss 与adversarial loss 相结合得出的:

在这里插入图片描述
λ在所有的实验中都为100。我们没有像Isola那样对判别器设置条件,同时我们也没有对输入与输出之间的错误匹配进行惩罚。很多条件GAN使用vanilla GAN 来作为损失函数,最近,出现了相对于least aquare GAN 这种稳定,能产生高质量结果的方法的另一种选择。我们使用WGAN-GP作为critic function ,这对于生成器的结构具有一定鲁棒性。我们的对于各种不同的结构的初步试验表明,在使用了WGAN-GP之后,就能够用更加比ResNet152更加轻量化的结构,在之后的部分可以见到。损失函数的计算公式如下:
在这里插入图片描述
DeblurGAN在没有GAN组分收敛的情况下训练最后得到了模糊图像。
对于原始像素来说,两种经典的content loss 函数分别为L1或者MAE loss,L2 或者 MSE loss 。使用这些函数作为单一优化目标会导致生成的图像中出现模糊,这是因为像素空间的像素平均引起的。所以,我们采用最近提出的感知损失函数。感知损失函数是一个简单的L2-loss,但是是基于生成图像与目标图像CNNfeature mapping 之间的差别得到的:
在这里插入图片描述
φi,j是VGG19网络的第i最大池化层之前的第j次卷积时获得的,用ImageNet进行预训练,Wi,j 和 Hi,j 表示feature mapping 的维度。在我们的研究中,用VGG3,3卷积层用来激活。激活层越深,意味着特征更加抽象。对抗式损失函数主要用于图像纹理细节的复原,而感知损失函数则致力于复原大概内容。DeblurGAN没有用感知损失函数进行训练或者只是在像素层面用一个简单的MSE进行训练也会收敛到一定程度。
在Additional regularization方面,我们也尝试添加TV正则化和模型,但是训练之后的效果更差了。

4. Motion blur generation
并不存在很容易的方法来获取用于训练的对应的sharp 和 blurred images。一种经典的方法就是使用高帧率相机并且使用视频中清晰帧的平均来模拟模糊图像。这种方法可以产生真实模糊图像,但是,图像的空间被限制在视频涉及的场景内,并且标定数据集的时候也非常复杂。Sun创造了一种合成模糊图像的方法,通过73种线性motion kernels其中一个与清晰自然图像进行卷积得到模糊图像。Xu也是使用linear motion kernel 来创造合成的blurred image。Chakrebarti 通过对六种随机点进行取样并用曲线去拟合从而得到blurred image。我们在Boracchi和Foi提到过的随机轨迹生成方法基础上进一步提出了一种方法,其模拟过程更加真实,模糊核也更复杂。模糊核是通过对轨迹向量进行上采样插值得到的,每一个轨迹向量都是一个复杂的矢量,与连续区域内2D随机运动的物体所产生的离散位置点相对应。轨迹由Markov过程产生,算法如下:
在这里插入图片描述
下一点的轨迹由前一点的速度和位置,高斯扰动,脉冲扰动以及确定的惯性部分这些因素影响,随机产生。

5. Training Details
我们使用Pytorch深度学习框架来运行模型。训练过程使用了一块Maxwell GTX Titan-X GPU和三个数据库。第一个模型为DeblurGANwild,用1000张GoPro训练数据库图像进行下采样得到的尺寸为256256的图像进行训练。第二个模型为DeblurGANsynth, 用的是前面提到的方法获得的256256MS-COCO数据库模糊图像。我们也用合成模糊图像和拍摄图像来训练DeblurGANcomb模型,合成图像和拍摄图像的比例为2:1。当模型经过训练后,就能都应用于任意大小的图像。我们使用了【 M. Arjovsky, S. Chintala, and L. Bottou. Wasserstein GAN. ArXiv e-prints, Jan. 2017.】这篇论文里的优化方法,并且在DθD中加入了5个梯度下降步骤,在GθG中加入一个,使用Adam作为求解器。生成器和判别器最初的学习率都设置为10^-4,在运行了150epochs之后,下一个150epochs时学习率降低到接近于0。在inference time 中应用了dropout 和 instance normalization。所有训练的模型其batch size = 1,其效果相对最好。DeblurGAN训练过程用了6天时间。

6. Experimental evaluation
6.1. GoPro Dataset

GoPro 数据集包括2103对blurred 和 sharp 来自各个场景的720P图像。我们将模型结果与其他先进方法相比较,并且记录了在单块GPU上运行时间。结果见表一:
在这表一里插入图片描述
DeblurGAN的表现在SSIM方面远超其他方法,PSNR也与其他方法很接近,并且提供了更好的视觉效果。相比于其他神经网络,我们这个没有在像素空间使用L2距离,所以在PSNR方面没有得到直接地优化。这个模型可以处理由相机抖动以及目标移动造成的模糊,不需要受到模糊核估计方法的限制,同时处理时间相较于Multi-scale CNN 要快6倍。实验结果如下图:
在这里插入图片描述
6.2. Kohler dataset
Kohler 数据集由四种图片并对每一种图片都用12中不同的卷积核进行处理得到的图片组成。这是一个标准的用于评估blind deblurring 算法的基准数据集。通过对放置在机器平台上的相机的真实运动进行记录和分析而产生了这个数据集,对6D相机运动轨迹进行取样就得到了连续的sharp image。结果如下表:在这里插入图片描述
6.3. Object Detection benchmark on YOLO
目标检测是计算机视觉中研究最火热的方向之一,其应用在从自动驾驶到智能安防不同的领域。在过去的几年里,基于深度卷积神经网络的方法相较于传统方法具有更优异的表现,然而,这些神经网络由有限的数据集训练的,并且真实图片往往由于各种原因变得模糊,包括motion deblur。我们研究了motion deblur 在目标检测中的影响并提出了基于预训练后的YOLO网络的目标检测结果来评价deblurring algorithm 的新方法。
因此,我们通过使用高帧率相机来模拟相机抖动的方法来获得sharp 和 blur 数据集。在用240fps相机获得的视频中随机抽取5至25帧并计算中间帧的模糊部分作为这些帧的平均值。所有帧都经过伽马矫正,γ=2.2,然后用反函数来得到最后模糊图像。总的说来,数据集由410对blurred 和sharp 图像组成,主要内容是街道和有不同数量和类型的车辆的停车场。
模糊的来源包括相机抖动和车辆移动。数据集和补充的代码网上都有。sharp image 用于训练YOLO网络并将经过视觉验证后的结果标记为ground truth。然后,用YOLO处理blurred image ,计算处理后的图片以及获得结果与ground truth 之间的平均精度。与PSNR相比,这个方法能够在视觉质量和生成图像的sharpness方面评价deblurring 模型在处理实际问题的效果。对于边界模糊和没有检测到的较小的目标来说,这个方法能体现出DeblurGAN的优势,如图:

在这里插入图片描述
下表中是检测结果:
在这里插入图片描述
DeblurGAN 在recall 和F1score 方面远远好于其他方法。

7.Conclusion
本文中我们介绍了无需kernel 的blind motion deblurring 方法,即基于条件对抗生成网络,使用多元损失函数的DeblurGAN。此外,我们用了新的方法来创造真实合成的运动核,以此来模拟各种模糊核。还介绍了新的基于目标检测结果的基准和评估方法,结果显示DeblurGAN对于模糊图像的检测有重要意义。

论文中其他图:
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

论文下载链接:
https://arxiv.org/pdf/1711.07064.pdf

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值