论文链接:https://arxiv.org/abs/1803.03363

CVPR2018

摘要

提出了一种基于数据驱动的判别先验的盲图像去模糊方法。此项工作是基于这样一个事实:一个好的图像先验应该有利于清晰的图像而不是模糊的图像。在本文中,我们将图像先验表示为一个二值分类器,它可以通过一个深度卷积神经网络 ( CNN ) 来实现。学习到的先验能够区分输入图像是否清晰。嵌入到最大后验 ( MAP ) 框架中之后,它有助于在各种场景 (包括自然图像、人脸图像、文本图像和低照明图像) 中进行盲图去模糊。然而,由于去模糊方法涉及非线性 CNN,很难将模糊的方法与已有的图像进行优化。为此,本文提出了一种基于半二次分割法和梯度下降法的数值求解方法。此外,该模型易于推广到非均匀去模糊任务中。定性和定量的实验结果表明,与当前最优的图像去模糊算法以及特定领域的图像去模糊方法相比,该方法具备有良好的性能。

简介

盲图去模糊是计算机视觉与图像处理中非常重要的问题,它的目标是从模糊的输入中恢复潜在的图像。当模糊形状在空间上具有不变性时,模糊过程可以由(1)式建模:

                                       (1)

其中⊗代表的是卷积算子,B、I、k 和 n 分别代表模糊图像、隐藏的清晰图像、模糊核以及噪声。式(1)中的问题是不适定性,因为 I 和 k 都是未知的,存在无穷多个解。为了解决这个问题,关于模糊核和图像的额外约束和先验知识都是必需的。

图 1: 一个去模糊的例子。本文提出了一个判别图像先验,它是从一个深度二分类网络中学习得到的,并用于图像去模糊。

对于图(a)是盲图B,其清晰图像是I。

图(b)是【38】表示梯度算子,图(c)是【27】表示黑暗的通道,以及图(d)是我们提出的分类器。

近年来去模糊方法的主成功主要来自于有效的图像先验和边缘预测策略的发展。然而,基于边缘预测的方法通常涉及启发式的边缘选择步骤,当边缘不可用时,它的性能就不太好。为了避免启发式的边缘选择步骤,人们提出了很多基于自然图像先验的算法,包括稀疏性归一化(normalized sparsity),L0梯度和暗通道先验(dark channel prior)。这些算法在一般的自然图像上表现良好,但是并不适用于特殊的场景,例如文本、人脸以及低光照图像。大多数上述的图像先验都有相似的效果,它们更加适用于清晰的图像,而不是模糊的图像,这种属性有助于基于MAP(最大后验)的盲图像去模糊方法的成功。然而,大多数先验都是手工设计的,它们主要是基于对特定图像统计的有限观察。这些算法不能很好地泛化来处理自然环境中的多种场景。所以,开发能够使用MAP框架来处理不同场景的图像先验是很有意义的。

为达到这个目的,研究者将图像先验表示为能够区分清晰图像和模糊图像的二值分类器。具体来说,他们训练深度卷积神经网络来分类模糊图像 (标记为 1 ) 和清晰图像 (标记为 0 )。由于基于 MAP(最大后验)的去模糊方法通常使用 coarse-to-fine(由粗到精)策略,因此在MAP 框架中插入具有全连接层的 CNN 无法处理不同大小的输入图像。为了解决这个问题,他们在 CNN 中采用了全局平均池化层,以允许学习的分类器处理不同大小的输入。此外,为了使分类器对不同输入图像尺寸具有更强的鲁棒性,他们还采用多尺度训练策略。然后将学习到的 CNN 分类器作为 MAP(最大后验)框架中潜在图像对应的正则项。如图 1 所示,本文提出的图像先验比目前最先进的人工设计的先验更具区分性。

然而,使用学习到的图像先验去优化这个去模糊方法是很困难的,因为这里涉及到了一个非线性 CNN。因此,本文提出了一种基于半二次方分裂法(half-quadratic splitting method)和梯度下降算法的高效数值算法。这个算法在实际使用中可以快速地收敛,并且可以应用在不同的场景中。此外,它还可以直接应用在非均匀去模糊任务中。

贡献

提出了一种高效判别图像先验,它可以通过深度卷积神经网络学习到,用于盲图像去模糊。为了保证这个先验(也就是分类器)能够处理具有不同大小的输入图像,研究者利用全局平均池化和多尺度训练策略来训练这个卷积神经网络。

将学习到的分类器作为 MAP(最大后验)框架中潜在图像对应的正则化项,并且提出了一种能够求解去模糊模型的高效优化算法。

研究者证明,与当前最佳算法相比,这个算法在广泛使用的自然图像去模糊基准测试和特定领域的去模糊任务中都具备有竞争力的性能。

研究者展示了这个方法可以直接泛化到非均匀去模糊任务中。

二分类网络

我们的目标是通过卷积神经网络来训练一个二分类器。这个网络以图像作为输入,并输出一个标量数值,这个数值代表的是输入图像是模糊图像的概率。因为我们的目标是将这个网络作为一种先验嵌入到由粗到精的 MAP(最大后验)框架中,所以这个网络应该具备处理不同大小输入图像的能力。所以,我们将分类其中常用的全连接层用全局平均池化层代替。全局平均池化层在 sigmoid 层之前将不同大小的特征图转换成一个固定的大小。此外,全局平均池化层中没有额外的参数,这样就消除了过拟合问题。图 2 展示了整个网络架构和二分类网络的细节参数。

图 2. 本文中使用的二分类网络的架构和参数,其中使用了全局平均池化层取代全连接层来应对不同大小的输入。CR 代表的是后面跟着一个 ReLU 非线性函数的卷积层,M 代表的是最大池化层,C 代表的是卷积层,G 指的是全局平均池化层,S 代表的是 Sigmoid 非线性函数。

基于map的盲图像去模糊方法通常解决以下问题

损失函数

我们表示x为输入图像,ϴ作为优化的网络参数。深度网络学习一个映射函数f(x;ϴ)=P(xϵ2模糊|x),它预测输入图像的概率是模糊的。我们通过二元交叉熵损失函数来优化网络:

N表示一个批次的训练样本数量,

是分类器的输出,

是输入图像的标签。我们为模糊的图像分配

,并为清晰的图像分配

训练细节

我们从Huiskes和Lew的数据集中抽取了500个清晰的图像,包括自然的、人造的场景、脸部、低照度和文本图像。我们使用Boracchi和Foi的方法生成200个随机模糊核,大小从7 *7到50* 50不等。我们通过将清晰的图像与模糊的图像进行卷积并在其中加入高斯噪声来合成模糊图像。我们总共制作了10万张模糊的图像用于训练。在训练过程中,我们从训练图像中随机抽取200*200个补丁。为了使分类器对不同大小的图像具有鲁棒性,我们采用了一种多尺度的训练策略,【0.25,1】之间随机调整输入图像;

我们使用mat卷积网络工具箱来实现这个网络。我们使用Xavier方法来初始化网络参数,并使用随机梯度下降(SGD)方法来优化网络。我们使用的batch大小是50,0。9的动量和10 4的重量衰减。学习率被设定为0.001,每50个时期减少5倍。

之后我们训练我们设计的网络的收敛性,我们使用训练好的模型作为公式2中图像的先验,我们也使用L0范数作为正则化项,所以我们的目标是解决一下最优化问题。

其中r,u,入是惩罚参数。

我们想优化公式4就是要解决I与K,所以我们把问题分裂成为两个子问题,分别解决其目标

解决I

公式5中

是高度非凸函数,想要直观上最小化公式5是非常难的,我们使用半二次分割方法引入变量U与

,分别代表其图像以及其水平方向和垂直方向上的梯度。公式5进行变换为:

是惩罚参数,如果

无穷大的时候,公式7可以等价于公式5,我们解决公式7,可以通过最小化

,这样避免了直接最小化非凸函数。

我们通过固定g和u的参数来解决潜在的图像I以及对其优化。

这是一个最小二乘优化问题,有一个闭合形式的解:

其中

是傅里叶变换以及傅里叶反变换。

是复共轭算子。

分别是水平和垂直微分算子。

考虑到潜在的图像I,我们用g和u来解决:

解决公式10作用引用了一篇文章的方法一带而过,我计划下次组会我讲那篇,我们可以用反向传播的方法计算f(.),我们用梯度下降法来更新u:

其中erta是步长,解决公式12的方法如同算法1

解决K

考虑到潜在图像的情况,公式6就是一个优化最小二乘法的问题,为了获得更好的结果,我们使用图像梯度估计模糊核。

我们使用离散傅立叶变换的快速算法来解决这个问题。

实验结果

我们对该算法在自然图像数据集、文本、人脸和低照度图像上进行了评估。在实验中我们设置

,为了平衡精度和速度我们设置

。所有的实验都是在一台带有英特尔酷睿i7-3770处理器和32 GB RAM的台式电脑上进行的。本文中使用的源代码和数据集将向公众开放。更多的实验结果被包含在补充材料中。

自然图像

我们首先对Kohler等人的自然图像数据集进行了评估,其中包含4个潜在的图像和12个模糊的内核。我们比较了7种通用图像的去模糊方法。我们遵循协议来计算PSNR(峰值信噪比),将每个恢复的图像与沿着相同的摄像机运动轨迹捕捉到的199个清晰图像进行比较。如图3(a)所示,我们的方法平均达到最高的PSNR。图4显示了一个示例的模糊结果。我们的方法可以生成更清晰的图像,而不那么响的工件。

接下来,我们将在Sun等人提供的数据集上对我们的算法进行评估,该数据由来自莱文等人的80个清晰图像和8个模糊的内核组成。为了进行公平的比较,我们首先生成最先进方法的模糊内核,并应用相同的非盲反褶积来恢复隐藏的图像。我们测量错误比,并在图3(b)中绘制结果,这表明所提议的方法对最先进的算法具有竞争力。

我们还在现实世界的模糊图像上测试我们的方法。在这里,我们使用相同的非盲 反卷积算法来进行公平比较。如图5所示,与别的方法相比,我们的方法生成更清晰的图像。

特殊领域图像

我们在text图像数据集上对我们的算法进行评估,它由15个清晰的文本图像和8个模糊的内核组成。我们在表1中显示了PSNR的平均值。虽然文本模糊处理方法具有最高的PSNR,但该方法对最先进的通用模糊算法具有良好的性能。图6显示了模糊文本图像的模糊结果。所提出的方法会产生更清晰的结果,并具有更清晰的字符。

图7显示了来自胡等人数据集的低照度图像的一个例子。由于大饱和区的影响,自然图像的去模糊方法不能产生清晰的图像。与此相反,我们的方法与胡等人产生了一个相似的结果,这是专门为低照度图像设计的。

cnn生成图像显著图_使用CNN生成图像先验实现场景的盲图像去模糊相关推荐

  1. python生成k线图_基于tushare生成k线图

    tushare简介 TuShare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工到数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据, ...

  2. cnn生成图像显著图_基于CNN与图像前背景分离的显著目标检测

    基于 CNN 与图像前背景分离的显著目标检测 东野长磊 ; 万文鑫 [期刊名称] <软件导刊> [年 ( 卷 ), 期] 2020(019)001 [ 摘 要 ] 为 了 解 决 计 算 ...

  3. CVPR 2018 | 使用CNN生成图像先验,实现更广泛场景的盲图像去模糊

    现有的最优方法在文本.人脸以及低光照图像上的盲图像去模糊效果并不佳,主要受限于图像先验的手工设计属性.本文研究者将图像先验表示为二值分类器,训练 CNN 来分类模糊和清晰图像.实验表明,该图像先验比目 ...

  4. 使用CNN生成图像先验,实现更广泛场景的盲图像去模糊

    现有的最优方法在文本.人脸以及低光照图像上的盲图像去模糊效果并不佳,主要受限于图像先验的手工设计属性.本文研究者将图像先验表示为二值分类器,训练 CNN 来分类模糊和清晰图像.实验表明,该图像先验比目 ...

  5. ali arthas 火焰图_使用arthas 生成火焰图分析jvm

    arthas 是阿里巴巴开源的强大的jvm 应该分析工具,以下是使用arthas 生成jvm 火焰图的一个学习 项目使用docker-compose 运行,对于生成的火焰图使用nginx 提供一个访问 ...

  6. mysql的表导出er关系图_使用Navicat生成ER关系图并导出的方法

    平时管理数据库一般都是用cmd命令提示符,或是IDEA Intellij自带的Data source,使用Navicat比较少.这段时间,由于要对前后端交互的数据结构进行设计,直接写文档联系多表时有些 ...

  7. 计算机图形学曲线生成原理,计算机图形学_曲线及生成.ppt

    计算机图形学_曲线及生成 华中理工大学计算机学院 陆枫 99-7 1999年7月 7.2.1 曲线的表示要求 1)唯一性 2)几何不变性 3)易于定界 4)统一性 5)易于实现光滑连接 6)几何直观 ...

  8. matlab 通过矩阵变换使图像旋转平移_数字图像处理|P11 第三章 第四节 图像的几何变换...

    第四节 几何变换 图像生成过程中,由于系统本身具有非线性或拍摄角度不同,会使生成的图像产生几何失真.几何失真一般分为系统失真和非系统失真,系统失真是有规律的.能预测的:非系统失真则是随机的.例如:(1 ...

  9. python生成exe运行慢_利用pyinstaller生成exe文件碰到的一些问题及解决方法

    在"开源图像标注工具labelme的安装使用及汉化"这篇博客中,使用pyinstaller将labelme项目的入口python文件main.py打包,生成了main.exe文件, ...

最新文章

  1. BP as a Vendor and Customer Configuration
  2. android编程中添加gif,Android应用开发之【Android】使用android-gif-drawable包加载GIF动图...
  3. SQLDump***.txt
  4. qt开发环境 - c++之结构,联合,枚举
  5. Equals,ReferenceEquals,==的区别
  6. 软件工程开发之道:了解能力和复杂度是前提
  7. java rsa 128_如何用java实现128位密钥的RSA算法
  8. android 序列化传参数,Android序列化之Parcelable和Serializable的使用详解
  9. 高中电子技术——二极管的类型和作用
  10. sparse-to-dense.pytorch 代码主流程
  11. 彻底卸载VMware虚拟机的详细步骤
  12. win7 sp1简体中文升级补丁包(64位)
  13. go语言爬虫 - TapTap用户都喜欢些什么游戏
  14. Unity:骨骼动画
  15. 翻译程序、编译程序和解释程序的区别和联系
  16. java斗地主发牌_java斗地主发牌程序
  17. Linux下路由器的配置
  18. Hazel轻松管理文件
  19. Shiro(三) Shiro核心原理分析
  20. 二项式定理的应用(快速幂+组合数的计算)

热门文章

  1. 服务器的负载是什么意思?有哪些参数衡量?底层原理是什么?
  2. 滴滴工程效能平台建设之路
  3. Spring Boot 集成 ElasticSearch,实现高性能搜索
  4. IDEA 中某个项目 pom 文件灰色且有删除线
  5. MATLAB画图颜色渐变
  6. bootstrap-table、antd-table组件(react)实现首行、首列固定的表格
  7. Java实现 LeetCode 664 奇怪的打印机(DFS)
  8. FISCO BCOS助力人民网灵境·人民艺术馆推出世界知识产权日数字藏品
  9. vue 使用 gojs
  10. pytest学习2: The writing and reporting of assertions in tests