摘要:现有的去雾方法大多是在合成的雾霾图像上训练去雾模型,但由于域的偏移,对真实的雾霾图像的泛化效果较差。故提出一种领域自适应模式,该模式由一个图像平移模块和两个图像去雾模块组成。具体来说,首先应用一个双向网络,通过将图像从一个域转换到另一个域,来弥补合成域和真实域之间的差距。然后,使用平移前后的图像训练两个具有一致性约束的图像去雾网络。在这一阶段,利用清晰图像的特性(如暗通道先验和图像梯度平滑),将真实的朦胧图像纳入去雾训练中,进一步提高域自适应性。通过端到端对图像平移和去雾网络进行训练,可以获得较好的图像平移和去雾效果。在合成图像和真实图像上的实验结果表明,模型表现的很好。

1.介绍

基于深度学习的方法需要依赖于大量的真实雾霾图像和无雾图像进行训练。在现实世界中获取大量的地面真实图像是不现实的。因此,大多数去雾模型都是在合成的雾数据集上进行训练。然而,由于领域转移问题,从合成数据中学习的模型常常失败,未能很好地推广到实际数据。

为了解决这一问题,提出单图像去雾的域自适应框架。该框架包括两个部分,即图像平移模块和两个与图像域相关的去雾模块(一个用于合成域,另一个用于实域)。为了减少区域之间的差异,首先使用双向图像平移网络将图像从一个区域平移到另一个区域,由于图像雾霾是一种噪声,且不均匀,高度依赖于场景深度,我们将深度信息加入到平移网络中,引导合成的雾霾图像平移到真实的图像中。然后,域相关去雾网络将该域的图像,包括原始图像和翻译后的图像作为输入,进行图像去雾。此外,使用一致性损失来确保两个去雾网络产生一致的结果。在训练阶段,为了进一步提高网络在实域中的泛化能力,将真实的朦胧图像纳入训练中。希望真实的雾霾图像去雾结果能够具有清晰图像的一些特性,如暗通道先验和图像梯度平滑。以端到端的方式训练图像平移网络和去雾网络,使它们能相互改进。模型产生更干净的图像。

主要贡献如下:

作者提出一种用于图像去雾的端到端域自适应框架,有效地弥合了合成图像和真实图像之间的差距。

作者证明将真实的雾霾图像纳入训练过程可以提高去雾性能。

作者对合成数据集和真实世界的有雾图像进行了广泛的实验,这表明所提出的方法与最新的除雾方法相比具有良好的性能。

2.相关工作

简述与工作相关的单图像去雾方法和域自适应方法。

2.1单一图像去雾

基于先验的方法是根据清晰图像的统计信息来估计透射图和大气光强。具体来说,Tan提出了一种对比度最大化的图像去雾方法,因为它观察到清晰的图像往往比模糊的图像具有更高的对比度。he等人利用暗通道先验(dark channel prior, DCP)估计透射图,该方法假设无雾图像中的像素在至少一个颜色通道中接近于零。后续的工作提高了DCP方法的效率和性能。此外,采用衰减先验来恢复模糊图像的深度信息。Fattal利用色线假设恢复场景传输,认为小图像斑块的像素呈一维分布。同样,Berman等人假设几百种不同的颜色可以很好地近似一幅清晰图像的颜色,然后在此基础上进行图像去雾。虽然这些方法被证明对图像去雾是有效的,但它们的性能本质上是有限的,因为假设的先验并不适用于所有的真实图像。

基于学习的方法,随着深度卷积神经网络的发展和大规模合成数据集的可用性,很多方法直接利用深度cnn估计传输和大气光,然后根据退化模型恢复干净的图像。Cai等人提出了端到端去雾模型DehazeNet,从朦胧图像中估计传输图。Ren等人利用一种由粗到细的策略来学习雾蒙蒙的输入和传输映射之间的映射关系。Zhang和Patel提出了一个密集连接的金字塔网络来估计传输图。Li et al.提出了一个AOD-Net来估计重新表述的物理散射模型的参数,该模型集成了传输和大气光。此外,一些端到端方法被提出直接恢复干净图像,而不是估计透射图和大气光。Ren et al.采用门控融合网络直接从朦胧输入中恢复干净图像。Qu等人将图像去雾问题转化为图像到图像的平移问题,提出了一种增强的pix2pix去雾网络。

然而,由于合成数据与真实数据的域差异,基于合成图像训练的基于cnn的模型应用于真实域时,往往会出现显著的性能下降。为此,Li et al.提出了一种半监督去雾模型,该模型在合成雾霾图像和真实雾霾图像上进行训练,因此在合成雾霾图像和真实雾霾图像之间具有域自适应性。但是,仅仅使用真实的雾霾图像进行训练并不能真正解决域转移问题。与上述方法不同的是,我们的模型首先利用图像平移网络将图像从一个域平移到另一个域,然后利用平移后的图像及其原始图像(合成或真实)对合成域和真实域进行图像去雾。该方法能有效地解决域移动问题。

2.2域自适应

领域适应的目的是减少不同领域之间的差异。现有的工作要么是执行特征级,要么是像素级的适应。特征级自适应方法旨在通过最小化最大均值差异,或在特征空间上应用对抗学习策略来对齐源域和目标域之间的特征分布。另一个研究方向是像素级适应。这些方法通过应用图像到图像的平移学习或风格转移方法来增加目标域中的数据来处理域转移问题。近年来,许多方法在许多视觉任务中同时进行特征级和像素级自适应,如图像分类、语义分割和深度预测。这些方法通过图像到图像的转换网络,以像素级自适应的方式将图像从一个域转换到另一个域,例如CycleGAN。然后将转化后的图像以特征级对齐方式输入任务网络。在这项工作中,我们利用CycleGAN将真实的雾霾图像适应于我们在合成数据上训练的去雾模型。此外,由于深度信息与图像雾霾的形成密切相关,我们将深度信息纳入到转化网络中,以更好地指导真正的雾霾图像的转化。

3.本文方法

将介绍我们的领域适应框架的细节。首先,概述了我们的方法。然后详细介绍了图像平移模块和图像去雾模块。最后,我们给出了用于训练网络的损耗函数。

3.1方法概述

给定合成数据集,真实雾天图像集,其中Nl和Nu分别表示合成雾天图像个数和真实雾天图像个数。我们的目标是学习一种单图像去雾模型,该模型能从真实的雾天图像中准确地预测出清晰的图像。由于区域偏移,仅对合成数据进行训练的去雾模型不能很好地泛化到真实的雾霾图像上。

针对这一问题,我们提出了一种区域自适应框架,该框架由两个主要部分组成:图像平移网络GS→R和GR→S,以及两个去雾网络GS和GR。图像平移网络将图像从一个区域转换到另一个区域,以弥补图像之间的差距。然后,去雾网络使用转化图像和源图像(例如合成图像或真实图像)进行图像去雾。如图2所示,本文模型以真实的雾霾图像xr和合成图像xs及其对应的深度图像ds为输入。我们首先通过两个图像转换器得到对应的转化图像xs→r = GS→r (xs, ds)和xr→s = GR→s (xr)。然后将xs和xr→s传递给GS,将xr和xr→s传递给GR,进行图像去雾。

图2 提出的图像去雾域自适应框架的体系结构。该框架由图像平移模块和图像去雾模块两部分组成。图像平移模块将图像从一个域转换到另一个域,以减少域差异。图像去雾模块分别对合成域和实域进行图像去雾。

3.2图像转化模块

图像转换模块包括两个转换器:合成到真实网的GS→R和真实到合成网的GR→S。GS→R网络以(Xs, d)为输入,生成与真实朦胧图像风格相似的平移图像GS→R(Xs, d)。另一个转化器GR→S反向执行图像转换。由于深度信息与雾霾公式高度相关,我们将其加入到生成器GS→R中,生成真实情况下雾霾分布相似的图像。我们采用空间特征变换(spatial feature transform, SFT)层[33,15]将深度信息纳入平移网络,可以有效地融合深度图和合成图像的特征。如图3所示,SFT层首先应用三个卷积层从深度图中提取条件图φ。然后将条件映射反馈到另外两个卷积层,分别预测调制参数γ和β。在转化器GS→R中,我们以深度图为导向,使用SFT层对倒数第二卷积层的特征进行变换。如图4所示,经过平移后的合成图像更接近真实世界的朦胧图像。我们在表1中展示了转化器GS→R的详细配置。我们还采用了CycleGAN[38]提供的体系结构,用于生成器GR→S和鉴别器(Dimg R和Dimg S)。

图3 SFT层结构。在转化器GS→R中,我们考虑深度图作为指导,以辅助图像的平移。

3.3去雾模块

该方法包括两个去雾模块GS和GR,分别对合成域和真实域进行去雾处理。GS以合成图像xs和平移图像xr→s为输入,进行图像去雾。GR的训练内容是xr和xs→r。对于这两个图像去雾网络,我们都使用了标准的编码器解码器结构,具有跳跃连接和侧输出。各域的去雾网络具有相同的网络结构,但学习参数不同。

3.4训练损失

3.4.1图像转化损失

转化模块的目的是学习转化器GS→R和GR→S,以减少合成域XS和真实域XR之间的差异。对于转化者GS→R,我们期望GS→R(xs, ds)与真实的朦胧图像xr不能区分。因此,我们使用一个图像级鉴别器Dimg R和一个特征级鉴别器Dfeat R,通过对抗学习方式来执行一个最小博弈。Dimg R的目的是对齐真实图像xr和平移图像GS→R(xs, ds)之间的分布。鉴别器Dfeat R有助于对齐xr和GS→R(xs, ds)的特征图之间的分布。对抗性损失定义为:

与GS→R相似,GR→S也存在图像级对抗损失和特征级对抗损失,分别记为Limg Gan(XS, XR, Dimg S, GR→S)、Lf eat Gan(XS, XR, Df eat S, GR→S, GS)。此外,我们利用循环一致性损耗来正则化转化网络的训练。具体来说,当将图像xs依次传递给GS→R和GR→S时,我们希望输出的图像应该是相同的,而xr则相反。即GR→S(GS→R(xs, ds))≈xs, GS→R(GR→S(xr), dr)≈xr。循环一致性损失可以表示为:

最后,为了鼓励生成器在输入和输出之间保留内容信息,我们还利用了标识映射损失,记作:

转化模块的总体损失如下:

3.4.2图像去雾损失

将合成图像XS和对应深度图像DS传输到生成器GS→R上,得到一个新的数据集XS→R = GS→R(XS, DS),其样式与真实的朦胧图像相似。然后在XS→R和XR上以半监督的方式训练图像去雾网络GR。对于监督分支,我们采用均方损失保证预测图像JS→R接近干净图像YS,可以定义为:

在无监督分支中,引入总变差和暗通道损失,对去雾网络进行正则化,生成与清晰图像具有相似统计特性的图像。总变化损失为预报图像JR之前的1-正则化梯度:

其中,∂h表示水平梯度算子,而∂v表示垂直梯度算子。此外,提出了暗通道的概念,可以表示为:

其中x, y为图像I的像素坐标,Ic为I的第c个颜色通道,N(x)为以x为中心的局部邻域。He等人[9]也证明了暗通道图像的大部分强度为零或接近零。因此,我们采用如下暗通道损失(dark channel, DC)来保证预测图像的暗通道与干净图像的暗通道一致:

此外,我们还在XS和XR→S上训练了互补的图像去雾网络GS。同样,我们采用相同的监督损耗和无监督损耗对去雾网络GS进行训练,训练结果如下:

最后,考虑到两种去雾网络的输出对于真实的雾霾图像应该是一致的,即GR(XR)≈GS(GR→S(XR)),我们引入以下一致性损失:

3.4.3总体损失函数

总体损失函数定义如下: (其中λm, λd, λt和λc是权衡权重。)

4.实验结果

分别在合成数据集和真实图像上对所提出的域自适应方法进行了评价。最后,进行消融研究以分析所提出的方法。

4.1实现细节

4.1.1数据集

我们从RESIDE数据集中随机选取合成图像和真实图像进行训练。将数据集划分为5个子集,分别为ITS (Indoor Training Set)、OTS (Outdoor Training Set)、SOTS (Synthetic Object Testing Set)、URHI (Unannotated real Hazy Images)和RTTS (real Task-driven Testing Set)。在合成数据集上,我们选择6000张合成的朦胧图像进行训练,其中ITS图像训练3000张,OTS图像训练3000张。对于真实的雾霾图像,我们通过从URHI中随机选取1000幅真实雾霾图像来训练网络。在训练阶段,我们将所有图像随机裁剪为256 × 256,并将像素值归一化为[−1,1]。

4.1.2训练

并利用ADAM优化器批量来训练网络。首先,在动量β1 = 0.5, β2 = 0.999的条件下,对图像平移网络GS→R和GR→S进行90个时期的训练,学习速率设为5 × 10−5;然后利用预训练的GS→R和GR→S模型,分别在90个epoch上对GR进行{XR, GS→R(Xs, Ds)}和GS进行{Xs, GR→S(XR)}训练。动量和学习速率设为:β1 = 0.95, β2 = 0.999, lr = 10−4。最后,利用上述预训练模型对整个网络进行微调。在计算直流损耗时,我们设定patch为35 × 35。权衡权设为:λtran = 1, λm = 10, λd = 10−2,λt = 10−3,λc = 10−1。

4.2关于合成数据集的实验

我们使用两个合成数据集,即SOTS[13]和HazeRD[36]来评估我们提出的方法的性能。不同方法对这两个数据集的去雾图像如图5和图6所示。从图5 (b)可以看出,NLD[2]和GFN[27]都存在一定的颜色失真,结果看起来不真实。EPDN[25]去雾的结果在某些情况下也比地面真相更暗,如图5 (g)所示。此外,DehazeNet[4]、AOD-Net[12]和DCPDN[35]去雾的图像中还存在一些残留的霾。与这些方法相比,我们的算法恢复的图像具有更清晰的结构和细节,更接近地面真相。在图6的HazeRD数据集的去雾结果中也可以发现类似的结果,我们的算法产生的结果视觉效果更好。我们也在表2中给出了去雾结果的定量比较。如图所示,该方法在两个数据集上都获得了最高的PSNR和SSIM值。与最先进的EPDN[25]相比,我们的方法在STOS数据集上获得了3.94 dB和0.04的PSNR和SSIM增益。对于HazeRD数据集,我们的方法得到的PSNR和SSIM分别比EPDN[25]高出0.7dB和0.07。

图5 在SOTS[13]数据集上进行可视化比较

表2 两种合成数据集去雾结果的定量比较(平均PSNR/SSIM)。

5.结论

在本研究中,我们提出了一种新的单图像去雾域自适应框架,该框架包含一个图像平移模块和两个图像去雾模块。我们首先利用图像平移网络将图像从一个域平移到另一个域,以减少域差异。然后,图像去雾网络将平移后的图像及其原始图像作为输入,进行图像去雾。为了进一步提高泛化能力,我们利用干净图像的特性,将真实的朦胧图像纳入去雾训练中。在合成数据集和真实世界图像上的大量实验结果表明,我们的算法在当前技术水平下表现良好。

Domain Adaptation for Image Dehazing(图像去雾的域自适应算法CVPR2020)相关推荐

  1. Domain Adaptation for Image Dehazing(cvpr2020)

    CVPR2020原论文:https://arxiv.org/pdf/2005.04668v1.pdf 代码地址(pytorch框架):https://github.com/HUSTSYJ/DA_dah ...

  2. 图像去雾(image dehazing)近期论文简述及模型测试

    写在前面:先是初步调研,然后是几篇论文的概要,最后是模型的实际测试,主要是对前一段工作的总结,内容不完善,仅做参考. keyword:hazy ,dehazing 去雾方法主要可以分为两种:一种是基于 ...

  3. 【Gated Context Aggregation Network for Image Dehazing and Deraining用于图像去雾和去雨的门控上下文聚合网络】,个人笔记,勿喷

    摘要 图像去雾旨在从模糊图像中恢复未损坏的内容.我们没有利用传统的低级或手工图像先验作为恢复约束,例如暗通道和增加的对比度,而是提出了一个端到端的门控上下文聚合网络来直接恢复最终的无雾图像.在这个网络 ...

  4. UCL-Dehaze: Towards Real-world Image Dehazing via Unsupervised Contrastive Learning 基于对比学习的无监督真实图像去雾

    概述 本文提出了一种有效的无监督对比学习范式 --ucl-dehaze.未配对的真实世界清晰图像和模糊图像很容易获取,在训练UCL-Dehaze网络时分别作为 重要的正样本和负样本.为了更有效地训练网 ...

  5. 避免图像去雾算法中让天空部分出现过增强的一种简易方法

    FROM:http://www.chawenti.com/articles/25193.html 在经典的几种去雾算法中,包括何凯明的暗通道去雾.Tarel的基于中值滤波的去雾以及一些基于其他边缘保留 ...

  6. 去雾综述_【综述】图像去雾的前世今生

    1. 前言 其实之前对图像去雾也没有什么深入的理解,只是了解,实现过一些传统的图像去雾方法而已.个人感觉,在CNN模型大流行的今天,已经有很多人忽略了传统算法的发展,以至于你今天去搜索10年前的传统去 ...

  7. 去雾综述_图像去雾的算法历史与综述

    图像去雾的算法历史与综述 1. 前言 其实之前对图像去雾也没有什么深入的理解,只是了解,实现过一些传统的图像去雾方法而已.个人感觉,在CNN模型大流行的今天,已经有很多人忽略了传统算法的发展,以至于你 ...

  8. 遥感图像去雾文章解读

    参考遥感图像去雾文章解读 - 云+社区 - 腾讯云 1.Single Remote Sensing Image Dehazing 基于暗原色先验和常见的雾霾成像模型.为了消除光环伪影,使用低通高斯滤波 ...

  9. 基于Vision Transformer的图像去雾算法研究与实现(附源码)

    基于Vision Transformer的图像去雾算法研究与实现 0. 服务器性能简单监控 \LOG_USE_CPU_MEMORY\文件夹下的use_memory.py文件可以实时输出CPU使用率以及 ...

最新文章

  1. 模仿滴滴单车解锁的时候,从0%到90%的欺骗加载动画效果
  2. FACTORY设计模式【让吃货也能理解的程序】
  3. Solr5.4.0+Tomcat+mmseg4j
  4. SAP Spartacus的home page navigation逻辑
  5. 工作132:页面布局
  6. python中seek函数的用法_在Python中操作文件之seek()方法的使用教程
  7. 计算机网络(九)——简述Socket
  8. 使用 virt-install 创建虚拟机
  9. 调用新浪微博显示用户信息
  10. Windows 10的成功能让苹果学到点什么?
  11. LeetCode 01:有人相爱,有人夜里开车看海,有人LeetCode第一题都做不出来
  12. 傅里叶变换和正弦函数和欧拉公式
  13. 北京理工计算机科学与应用,沈蒙_北京理工大学计算机学院
  14. 微信开放平台开发第三方授权登陆:微信扫码登录
  15. PHP鲜花销售管理系统毕业设计
  16. [转]明朝出了个张居正 作者:秋风浩荡 -3
  17. 超分辨率 | 综述!使用深度学习来实现图像超分辨率
  18. 串的定长顺序存储结构|C++实现
  19. R or Python,到底学哪个?这篇文章来告诉你......
  20. Seaweedfs基本操作

热门文章

  1. 特斯拉自动驾驶核心技术高管离职;华为海思芯片开始招聘博士;谷歌云宣布采用ARM芯片 | 每日大事件...
  2. GoAccess 安装
  3. What is `export type` in Typescript?
  4. 项目实战-----Python编写疫苗信息管理系统
  5. Redis(一)入门:NoSQL OR SQL,看完这篇你就懂了
  6. 自考总结 --- 颗粒归仓
  7. PHP sha256WithRsa加解密
  8. c语言file的作用是什么意思,C语言文件操作之文件打开方式
  9. 做算法工程师是什么样的工作体验
  10. OpenFlow Flow-Mod消息学习