1. Contribution
- 提出了一种新的去模糊框架。该框架不仅可以去模糊,还可以模糊图像,生成真实的模糊图像。
- 引入了相对模糊损失
- 提出了一个数据集RWBI
1.1 BGAN: Learning to Blur
BGAN这一模块是本文提出的方法同其他去模糊方法最大的区别。设计的初衷是:考虑到合成的模糊图片和真实的模糊图片之间有区别,这相对于深度学习来说,是学习所用到的知识正确性的问题,因此,肯定也是影响性能的因素。
其他方法所使用的数据集中,模糊/清晰图片中大都有一类是合成的,大都是模糊图片是合成的,这在目前无法避免。本文不同的是,它合成的模糊图片是向真实模糊图片靠近的模糊图片,也就是说,从神经网络的角度靠近了合成模糊图片与真实模糊图片的距离(现在想想,这一创新,直白来讲就是用神经网络合成模糊图片,之前模糊图片大都是根据估计的模糊核来生成)。
值得一提的是,这一过程巧妙利用了神经网络发展最好的领域之一的分类任务上,这让它在选择网络架构上有了太多的参考。
1.1.1 BGAN_G
首先明确BGAN_G的输入输出。如名字一般,输入是一张清晰图片,输出是一张接近真实场景的模糊图片。
为了模拟现实生活中可能出现的不同噪声,本文在输入时加入了噪声的机制。具体实现方式为:从高斯分布中提取一个长度为4的向量(没有指出为什么长度是4),然后将这一向量复制128*128次(应该是输入清晰图片的分辨率),这种做法在论文【Toward multimodal image-to-image translation】NeurIPS 2017
网络结构方面,采用的是一个卷积层,9个ResBlock(ResNet中的)和两个卷积层
1.1.2 BGAN_D
网络结构同VGG19一致
1.1.3 loss
采用 感知损失和对抗损失
1.2 DBGAN
1.2.1 DBGAN_G
网络结构方面,采用的是一个卷积层,16个ResBlock(ResNet中的)和两个卷积层。不同的是,去掉了其中的BN层(增加计算量并且降低最终效果)
1.2.1 DBGAN_D
同VGG19一致
2 Loss
2.1 Perceptual Loss
同Johnson的工作不同,这里的Perceptual Loss的计算是在ReLu激活函数之前,而不是在ReLu之后
2.2 Content Loss
生成图像和真是图像之间的MSE
2.3 Relativistic Blur Loss
为了使得生成的图片更加接近真实的图片,这里就提出了一种RBL损失达成这一目标,更具体的来讲,它是为了使得合成的模糊图片真实概率接近0.5,使得真实模糊图片也接近0.5,达到所谓的将0push到0.5,将1pull到0.5。
具体实现方式时将图片经过特征提取后,减去一个batch内的平均值,再经过sigmoid函数。以对数的形式表示了最后的loss。
Experiment
Dataset
GoPro Dataset
RWBI Dataset
用于训练BGAN并测试去模糊模型的性能
3112张不同模糊图片
评价指标
- PSNR
- SSIM
相关方法
【Dynamic scene deblurring】ICCV 2013
【Learning a convolutional neural network for non-uniform motion blur removal】 CVPR 2015
【Deep multi-scale convolutional neural network for dynamic scene deblurring】CVPR 2017
【Scale-recurrent network for deep image deblurring】CVPR 2018
【Human-aware motion deblurring】 ICCV 2019
【Dynamic scene deblurring with parameter selective sharing and nested skip connections】CVPR 2019
实验过程
无相关配置,训练时间。