论文笔记:《DeblurGAN: Blind Motion Deblurring Using Conditional Adversarial Networks》
论文来源:arXiv2017
论文作者:Orest Kupyn,Volodymyr Budzan等
论文主要贡献:
- 提出使用DeblurGAN对模糊图像去模糊,网络结构基于cGAN和“content loss”。获得了目前最佳的去模糊效果
- 将去模糊算法运用到了目标检测上,当待检测图像是模糊的的时候,先对图像去模糊能提高目标检测的准确率
- 提出了一个新的合成模糊图像的方法
Introduction
最近,生成式对抗网络(GAN)在图像超分辨率重建、in-painting等问题上取得了很好的效果。GAN能够保留图像中丰富的细节、创造出和真实图像十分相近的图像。而在CVPR2017上,一篇由Isola等人提出的《Image-to-Image Translation with Conditional Adversarial Networks》的论文更是使用条件生成式对抗网络(cGAN)开启了“image-to-image translation”任务的大门。
![](https://i-blog.csdnimg.cn/blog_migrate/8db76b52349b7d90c010b89fab009a25.png)
![](https://i-blog.csdnimg.cn/blog_migrate/56e360f7d474667f2f4b9982014d1f7d.png)
本文的思想主要受近期图像超分辨率重建和“image-to-image translation”的启发,把去模糊问题当做“image-to-image translation”的一个特例。使用的网络是 image-to-image translation 论文中使用的cGAN(pix2pix)。
Proposed method:DeblurGAN的实现
给出一张模糊的图像 ,我们希望重建出清晰的图像
。为此,作者构建了一个生成式对抗网络,训练了一个CNN作为生成器
和一个判别网络
。
网络结构
整体结构如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/50b0a2aab621ed6b25eee167b6bfedad.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7670c91b28ded023601d17f86f896140.png)
生成器CNN的结构如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/9ee5c4bf26e79cfbe4386fb3afd97ce3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/603fad2bd639a7d8f55ed7a21481b76d.png)
网络结构类似Johnson在风格迁移任务中提出的网络。作者添加了“ResOut”,即“global skip connection”。CNN学习的是残差,即 ,这种方式使得训练更快、模型泛化能力更强。
判别器的网络结构与PatchGAN相同(即 image-to-image translation 论文中采用的判别网络)。
损失函数
损失函数使用的是“content loss”和“adversarial loss”之和:
![](https://i-blog.csdnimg.cn/blog_migrate/f6f89b53ebd4364306536e1923e5a9c2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8fd65915f24ff71e0790472c323d804d.png)
在文章实验中, 。
Adversarial loss
训练原始的GAN(vanilla GAN)很容易遇到梯度消失、mode collapse等问题,训练起来十分棘手。后来提出的“Wassertein GAN”(WGAN)使用“Wassertein-1”距离,使训练不那么困难。之后Gulrajani等提出的添加“gradient penalty”项,又进一步提高了训练的稳定性。WGAN-GP实现了在多种GAN结构上稳定训练,且几乎不需要调整超参数。本文使用的就是WGAN-GP,adversarial loss的计算式为:
![](https://i-blog.csdnimg.cn/blog_migrate/4d995906bf2cb608cdbc87ee2083b0d5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6434393004f6acce1f0f12f52475f54a.png)
Content loss
内容损失,也就是评估生成的清晰图像和ground truth之间的差距。两个常用的选择是L1(也称为MAE,mean absolute error)损失,和L2(也称为MSE)损失。最近提出了“perceptual loss”,它本质上就是一个L2 loss,但它计算的是CNN生成的feature map和ground truth的feature map之间的距离。定义如下:
![](https://i-blog.csdnimg.cn/blog_migrate/0d38ebae9f164df755e511f613a7fb5b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7c0c8539513961cc345c1f4a19ebf7bc.png)
其中, 表示将图像输入VGG19(在ImageNet上预训练的)后在第i个max pooling层前,第j个卷积层(after activation)输出的feature map。
表示feature map的维度。
Motion blur generation
相比其他的image-to-image translation任务,例如超分辨率和风格化,去模糊问题很难获得清晰-模糊的图像对用于训练。一种常见的办法是使用高速摄像头拍摄视频,从视频帧中获得清晰图像、合成模糊图像(详见我的另一篇文章:论文笔记:《Deep Multi-scale Convolutional Neural Network for Dynamic Scene Deblurring》)。另一种方法就是用清晰图像卷积上各式各样的“blur kernel”,获得合成的模糊图像。作者在现有第二种方法的基础上进一步拓展,提出的方法能够模拟更复杂的“blur kernel”。
首先,作者采用了Boracchi和Foi[1]提出的运动轨迹随机生成方法(用马尔科夫随机过程生成);然后对轨迹进行“sub-pixel interpolation”生成blur kernel。当然,这种方法也只能在二维平面空间中生成轨迹,并不能模拟真实空间中6D相机的运动。(具体细节arXiv上ver.2还没有提及,有待作者的更新)
Training Details
DeblurGAN的代码在很大程度上借鉴了pix2pix的代码,使用的框架是pyTorch。作者一共在不同数据集上训练了三个model,分别是:
:训练数据是GOPRO数据集,将其中的图像随机裁剪成256×256的patches输入网络训练
:训练数据集是MS COCO生成的模糊图像(根据上面提到的方法),同样随机裁剪成256×256的patches
:在以上两个数据集的混合数据集上训练,合成图像:GOPRO=2:1
所有模型训练时的batch size都为1。作者在单张Titan-X GPU上训练,每个模型需要6天的训练时间。
实验结果对比
GoPro数据集
![](https://i-blog.csdnimg.cn/blog_migrate/6f8b1e6fc449f4d6bf273387d871a756.png)
![](https://i-blog.csdnimg.cn/blog_migrate/902268d980f603485df4ca6536a2c788.png)
上图是DeblurGAN和Nah等人提出的 Deep Multi-scale Convolutional Neural Network for Dynamic Scene Deblurring 方法的结果对比。左侧一列是输入的模糊图像,中间是Nah等人的结果,右侧是DeblurGAN的结果。PSNR、SSIM两项指标的评估结果可以参见下表。
![](https://i-blog.csdnimg.cn/blog_migrate/59dbd5e52134c34f9b843cfbaadcc7d3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0bf79763e01cf28cb422af8e33461b46.png)
Kohler标准数据集
![](https://i-blog.csdnimg.cn/blog_migrate/b494b444203b2b792f4d3fe45dbb4e6b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/bd7529713ca277af37c27662609a02d9.png)
参考文献
[1]G. Boracchi and A. Foi. Modeling the performance of image restoration from motion blur. Image Processing, IEEE Transactions on, 21(8):3502 –3517, aug. 2012.