Image Blind Denoising With Generative Adversarial Network Based Noise Modeling

  • 引言
  • 相关工作
  • 基于GAN-CNN的盲去噪(GCBD)
    • Noise Block Extraction
    • Noise Modeling with GAN
    • Denoising with Deep CNN
  • 实验
    • 实验设置
    • Evaluation with Synthetic Noise
    • Evaluation with Real-World Noise
    • Selection of Noise Modeling Methods

引言

经典方法:BM3D等
缺点:首先,这些方法所采用的图像先验知识大多是基于人类知识的,因此很难捕捉到图像的全部特征。因此,性能可能受到限制。其次,这些方法大多只利用输入图像的内部信息,而不使用任何外部信息。

其他方法:多尺度
这些方法通常是噪声模型估计和自适应去噪算法的结合。

判别学习方法:CNN
基于CNNs的方法不需要依赖于人类对图像先验的知识。使用现有的模型,这些模型是为去除已知噪声而训练的,不能取得很好的效果。因此,由于缺乏成对训练数据集,这些方法可能无法直接用于处理盲去噪问题。

高斯混合模型(GMM)作为一种典型的噪声建模方法,GMM首次在我们的实验中被用来模拟输入的真实噪声图像上的噪声。然而,学习模型产生的噪声样本与观测到的噪声样本并不十分相似。

一般情况下,生成网络被训练成生成难以与真实数据区分的样本,而判别网络被训练来确定样本是来自真实数据还是来自生成网络。生成网络可以训练成学习真实噪声图像的分布,生成具有相似噪声的图像,但目前还没有机制保证原始图像的内容不发生变化。为了解决这一问题,提出了一种新的解决方案:训练生成网络产生相似的噪声而不是噪声图像。

本文提出了一个新的两步框架。首先,训练一个GAN来估计输入噪声图像上的噪声分布并生成噪声样本。其次,利用第一步采集的噪声块构造成对的训练数据集,然后训练深层CNN对给定的噪声图像进行去噪处理。该方法克服了以往方法的缺点,解决了基于区分学习的去噪方法的关键问题。

相关工作

本文首先简要介绍了三种相关的去噪方法:基于图像先验的方法,基于噪声建模的盲去噪算法以及基于判别学习的方法。

基于图像先验:BM3D、NSCR和WNNM等,BM3D将非局部自相似模型与稀疏模型相结合,取得了令人满意的效果。

Image denoising by sparse 3-d transform-domain collaborative filtering
Nonlocally centralized sparse representation for image restoration
Weighted nuclear norm minimization with application to image denoising

基于噪声建模:多尺度是对非局部Bayes方法的一种改进,它假设每个patch及其附近patches的噪声模型为零均值相关高斯分布。NMBD提出用混合高斯(MoG)建模图像噪声,并开发一种低秩MoG滤波器来恢复干净图像。这些方法只利用单个输入图像的内部信息,明确定义了噪声模型,限制了去噪能力,进而影响了去噪性能。

Multiscale image blind denoising
From noise modeling to blind image denoising

基于判别学习:这些方法利用了深层网络的强大功能和来自大数据集的外部信息来实现图像压缩。DnCNN利用残差学习和批处理规范化(BN)策略训练了一个非常深入的CNN,并在高斯去噪方面取得了最先进的结果。另外,对于盲高斯去噪,DnCNN利用不同层次的噪声图像训练单个网络。虽然这些方法具有很高的去噪质量,但在缺少成对训练数据的情况下,这些方法都无法工作,这在现实中经常发生。

Beyond a gaussian denoiser: Residual learning of deep CNN for image denoising
Learning deep CNN denoiser prior for image restoration
Non-local color image denoising with convolutional neural networks

GAN:DCGAN为构建和训练GANs提供了一些有用的指南。WGAN通过克服生成网络和判别模型之间保持训练平衡的困难,以及网络结构的设计,进一步改进了GANs的训练。此外,在WGANs中可以生成高质量的样本。如果利用遗传算法生成成对训练数据来解决盲去噪问题,上述基于判别学习的方法将很容易解决这一问题。

Unsupervised representation learning with deep convolutional generative adversarial networks
Wasserstein gan
Improved training of wasserstein gans

基于GAN-CNN的盲去噪(GCBD)

一般很难训练生成网络来学习从干净图像到具有与给定数据相似噪声的图像的映射。为了缓解这个问题,一个生成网络将被训练成产生噪声而不是噪声图像。为了简化这个问题,我们假设处理过的图像具有相同种类的未知零均值噪声,其中包括广泛的噪声。框架概述如下:

在建立成对训练数据集之前,需要从给定的噪声图像中提取近似的噪声块。然后,这些模块被用来更好地训练GAN进行噪声建模和噪声数据生成。

Noise Block Extraction

为了减少原始背景的影响,在给定的噪声图像中,首先需要从弱背景部分提取一组近似的噪声块,如VVV。噪声分布就成为GAN学习的主要目标,这可能会使GAN模型更加精确。在噪声分布的期望值为零的假设下,通过减去噪声图像中一个相对平滑的patch的平均值,可以得到一个近似的噪声patch。这里讨论的平滑patch是指内部部分非常相似的区域。

Fast smooth patch search algorithm:

符号 意义 大小 获得方式
pip_ipi​ global patch d×dd\times dd×d 以步长sgs_gsg​扫描整个噪声图像
qjiq_j^iqji​ local patch h×hh\times hh×h 以步长sls_lsl​扫描pip_ipi​
pip_ipi​是否是smooth patch取决于对每个jjj,pip_ipi​和qjiq_j^iqji​的平均值和方差的差异,两个限制条件如下:
其中μ,γ∈(0,1)\mu,\gamma\in(0,1)μ,γ∈(0,1),如果对每个jjj,上述条件都满足,则pip_ipi​为smooth patch并加入到集合SSS中。S={s1,s2,⋯,st}S=\{s_1,s_2,\cdots,s_t\}S={s1​,s2​,⋯,st​}是通过对所有噪声图像应用该算法获得,近似噪声blocks集合V={v1,v2,⋯,vt}V=\{v_1,v_2,\cdots,v_t\}V={v1​,v2​,⋯,vt​}可以由vi=si−Mean(si)v_i=s_i-Mean(s_i)vi​=si​−Mean(si​)获得。

现在,我们使用的设备通常能产生高分辨率的图像。这些图像中有大量合格的平滑区域,如天空、墙壁等。因此,在有限的图像中可以找到足够的平滑块,这意味着可以提取足够多的噪声块来训练GAN。

Noise Modeling with GAN

为了提高去噪性能,一种方法是对提取出的块VVV进行噪声分布建模,然后生成更多的噪声数据(任意数量的样本具有更多的多样性),以供CNN的训练。

采用一个GAN来估计一组近似噪声块VVV上的噪声分布,在我们的实验中,采用WGAN的改进版本WGAN-GP来学习噪声分布。我们任务的目标函数是

其中Pr\mathbb{P}_rPr​为VVV的分布,Pg\mathbb{P}_gPg​为生成器分布(generator distruibution),为Px^\mathbb{P}_{\hat{x}}Px^​定义为沿从Pr\mathbb{P}_rPr​和Pg\mathbb{P}_gPg​采样的成对点之间的直线均匀采样的分布。细节参考Improved training of wasserstein gans.

采用与DCGAN相似的网络,利用训练后的GAN模型产生噪声样本以增强(augmenting)VVV,最终得到一个更大的集合V′={v1′,v2′,⋯,vw′}V'=\{v_1',v_2',\cdots,v_w'\}V′={v1′​,v2′​,⋯,vw′​}. 细节参考Unsupervised representation learning with deep convolutional generative adversarial networks.

Denoising with Deep CNN

给定V′V'V′,另一组干净图像被分成大小为d×dd\times dd×d的小块,形成集合X={x1,x2⋯,xe}X=\{x_1,x_2\cdots,x_e\}X={x1​,x2​⋯,xe​},将V′V'V′的噪声块随机添加到XXX的块中,得到Y={y1,y2⋯,yf}Y=\{y_1,y_2\cdots,y_f\}Y={y1​,y2​⋯,yf​},其中y1=xj+vk′y_1=x_j+v_k'y1​=xj​+vk′​. 于是XXX和YYY构成一对训练数据集{X,Y}\{X,Y\}{X,Y}. 在每个epoch中,xjx_jxj​和vk′v_k'vk′​的组合发生了变化,得到了一个新的数据集{X,Y‘}\{X,Y‘\}{X,Y‘},这导致数据的进一步扩充。

我们在实验中采用了与DnCNN相似的网络结构。将CNN作为一个单一的残差单元来预测残差图像,要最小化的目标函数定义为

其中Θ\varThetaΘ为网络的参数,NNN是训练数据的大小,yiy_iyi​是含噪图像,xix_ixi​是ground truth,采用BN、ReLU和残差学习策略来改进深层网络的训练。CNN由17个单元组成的网络结构,采用零填充,保证输入输出的维数一致。

实验

实验设置

数据集:在合成数据的实验中,使用BSD68作为测试集。在对真实世界数据的实验中,评估是在基准数据集Darmstadt Noise dataset(DND)和一个数据集NIGHT上进行的。对于所提出的GCBD,使用一组干净图像(CLEAN1)来建立由GAN产生的噪声数据的成对训练数据集。为了模拟实际处理大图像的情况,在另一组高分辨率干净图像(CLEAN2)中加入噪声,形成GCBD在合成数据评价中的输入噪声图像。

参数设置:

参数 数值
ddd 64
hhh 16
sgs_gsg​ 32
sls_lsl​ 16
μ\muμ 0.1
γ\gammaγ 0.25
initial learning rate 0.001
epochs 50

对比方法:BM3D,EPLL,NCSR,WNNM,多尺度,DnCNN-B.

Evaluation with Synthetic Noise


GCBD与DnCNN-B的结果相当,这是令人印象深刻的,因为DnCNN-B是用精确数据训练的,而GCBD是用GAN生成的近似数据训练的。

混合噪声由10%均匀噪声[−s,s]、20%高斯噪声N(0,1)和70%高斯噪声N(0,0.01)组成。DnCNN-B由于没有配对训练数据集而不能很好地工作。相反,本文提出的GCBD利用GAN来估计噪声图像的噪声分布,解决了训练数据不足的问题,取得了显著的去噪效果。

Evaluation with Real-World Noise



与其他方法相比,GCBD在去除噪声的同时,在保留细节方面做得非常好,比如光的火花。

Selection of Noise Modeling Methods

GAN产生的样本比GMM产生的样本更接近实际观测噪声,这说明GAN比简单的基于像素的GMM能更好地处理更复杂的噪声。

这是因为高斯模型和显式定义模型的数量限制了GMM的性能,而GAN利用CNN强大的隐式学习噪声模型的能力,在不需要人类图像先验知识的情况下捕捉更多的噪声特征。这样,GAN在噪声建模问题上显示出了潜力。

该方法的一个局限性是假设噪声为零均值的加性噪声。这种类型的噪声在自然环境中很常见,包括范围很广的噪声。如果未知噪声的期望值是可用的,它将与我们的方法相同。接下来,我们将考虑克服这一局限性。

论文笔记7:Image Blind Denoising With Generative Adversarial Network Based Noise Modeling相关推荐

  1. Yet Another Text Captcha Solver: A Generative Adversarial Network Based Approach

    目的 Identification text verification code 摘要 Despite several attacks have been proposed, text-based C ...

  2. 论文笔记:Eye In-Painting with Exemplar Generative Adversarial Networks

    先发一张美美的图片! 这篇文章的工作出发点是补救那些人在拍照时不小心眼睛闭上而得到的照片,可以说是"开眼"啦~ 这里先简要介绍这项工作: 1)目的:让照片中闭眼的人物睁开双眼: 2 ...

  3. 【论文翻译】中英对照翻译--(Attentive Generative Adversarial Network for Raindrop Removal from A Single Image)

    [开始时间]2018.10.08 [完成时间]2018.10.09 [论文翻译]Attentive GAN论文中英对照翻译--(Attentive Generative Adversarial Net ...

  4. ProGAN: Network Embedding via Proximity Generative Adversarial Network 论文笔记

    ProGAN: Network Embedding via Proximity Generative Adversarial Network 使用相似性生成对抗网络的网络嵌入 动机: 发现不同节点之间 ...

  5. 【论文笔记】DOA-GAN: Dual-Order Attentive Generative Adversarial Network for Image Copy-move Forgery Detec

    DOA-GAN: Dual-Order Attentive Generative Adversarial Network for Image Copy-move Forgery Detection a ...

  6. Face-Morphing using Generative Adversarial Network(GAN)论文阅读笔记

    题目:Face-Morphing using Generative Adversarial Network(GAN) 参考文章:原文地址 摘要: 讲解了GAN的基本原理以及利用GAN换脸的原理. 在像 ...

  7. PDGAN: A Novel Poisoning Defense Method in Federated Learning Using Generative Adversarial Network笔记

    前言 论文 "PDGAN: A Novel Poisoning Defense Method in Federated Learning Using Generative Adversari ...

  8. 2021李宏毅机器学习笔记--22 Generative Adversarial Network 01

    @[TOC](2021李宏毅机器学习笔记–22 Generative Adversarial Network 01(GAN,生成式对抗网络)) 摘要 GAN是建立于神经网络的基础上的,其核心思想是&q ...

  9. 论文翻译:2018_Speech Bandwidth Extension Using Generative Adversarial Networks

    论文地址:基于生成对抗网络的语音频带扩展 博客作者(引用请指明出处):https://www.cnblogs.com/LXP-Never/p/10121897.html 摘要 语音盲带宽扩展技术已经出 ...

最新文章

  1. 【错误记录】Flutter 界面报错 ( No MediaQuery widget ancestor found. | Scaffold widgets require a MediaQuery )
  2. Celery 使用(一)
  3. [零基础学JAVA]Java SE应用部分-32.Java网络编程
  4. java虚拟路由器_Java实现模拟路由功能
  5. sqlrelay mysql_php+sqlrelay+mysql实现连接池及读写负载均衡
  6. 汽车电子专业知识篇(七)-什么是XCP协议
  7. Java API 设计清单
  8. C#中IEnumerableT.Join()和IEnumerableT.GroupJoin()简单使用
  9. 第七章 路由器、交换机及其操作系统介绍
  10. UVa10340 - All in All
  11. 阶段3 3.SpringMVC·_02.参数绑定及自定义类型转换_5 自定义类型转换器演示异常
  12. Notepad++常用插件
  13. Linux隧道sit
  14. 机器学习面试题总结!!!!
  15. 【转载】让盐和味精告诉你,「变量」是什么 | 亲子课堂 第 4 课
  16. 锁相环的组成和原理及应用
  17. oracle字符集增加生僻字,Oracle SQL一个“生僻字”的优化
  18. OpenWrt网络配置
  19. html css inherit,CSS 继承 inherit属性的方法
  20. protege 5.0 教程

热门文章

  1. 为什么做梦总是在关键时刻醒来
  2. 让她/他心动的告白,页面制作(9个页面+链接+代码,原生HTML+CSS+JS实现)
  3. elementUI的消息弹窗组件手动关闭和遮罩层关闭问题
  4. 为MATLAB添加深度学习工具箱
  5. Python12_阶段性作业
  6. 网页及移动平台2D游戏开发探索
  7. sublime text 3解放鼠标的快捷键总结
  8. 【机器学习】-----PCA(主成分分析)
  9. c++语言截取字符串,详解C++ string常用截取字符串方法
  10. PullToRefresh+HorizontalScrollView+DrawerLayout