RefineDNet:一种用于单幅图像去噪的弱监督细化框架

Abstract

介绍了去雾的重要性——是许多 CV 系统和算法的先决条件。然而在经常在输出中引入恼人的工件,因为它们的先验值很难适应所有情况。
作者的工作:试图将基于先验知识的方法和基于学习的方法的优点结合起来,将去雾任务分为两个子任务,即可见性恢复和真实性改善。

具体来说,我们提出了一个两阶段的弱监督 dehazing 框架 RefineDNet:

  • 在第一阶段,RefineDNet 在恢复可见性之前采用暗通道。
  • 然后,在第二阶段,对第一阶段的初步去雾结果进行细化,通过使用未配对的模糊清晰图像进行对抗性学习来提高真实性。
  • 为了得到更合格的结果,我们还提出了一种有效的感知融合策略来混合不同的去雾输出。

这几年的研究现状都是如此,去雾的 DL 也需要相应的需要分开处理不同模块的东西。
举几个例子:

  • Single Image Dehazing via MSCNN-HE 该文中:分为两个比例尺度网络进行不同操作,1. 粗尺度基于整体图像的预测整体传输图;2. 细尺度优化局部去雾效果;我们使用基于整体边缘的网络来细化传输图;3. 最后整体边缘引导网络将整体边缘的结构传递给滤波输出。意义:这消除了孤立和虚假的像素传输估计,同时鼓励相邻像素具有相同的标签。我们在由合成图像和真实模糊图像组成的大量数据集上,对照最先进的方法对所提出的算法进行了评估。
  • Pyramid Channel-based Feature 该文中:三尺度特征提取模块、基于金字塔通道的特征注意模块和图像重建模块。 1. 三尺度特征提取模块同时提取不同尺度下的底层空间结构特征和高层上下文特征。2. 特征注意模块 PCFA:利用特征金字塔和通道注意机制,有效地提取互相依赖的通道映射。以金字塔的方式选择性地聚集更重要的特征,用于图像去雾。 3. 重建模块:用于重建特征来恢复清晰图像。
  • 本文 RefineDNet:提出了一个两阶段的弱监督 dehazing 框架 RefineDNet。1. 在第一阶段,RefineDNet 在恢复可见性之前采用暗通道。2. 然后,在第二阶段,对第一阶段的初步去雾结果进行细化,通过使用未配对的模糊清晰图像进行对抗性学习来提高真实性。3. 为了得到更合格的结果,我们还提出了一种有效的感知融合策略来混合不同的去雾输出。

Introduce

  1. 基于先验的方法恢复可见性更好.更多的伪影
  2. 基于深度学习的方法在提高结果的真实性方面更可取,伪影效果更少,但是雾的厚度更多

与基于先验的去模糊方法不同,基于学习的方法学习估计 A 和 t(x),或通过监督学习直接从输入的模糊图像中恢复 J(x)。由于采用卷积神经网络(CNN)来生成伪影很少的图像,这些方法能够产生真实性令人满意的去雾结果。然而,它们的训练过程需要来自同一场景的大量清晰而模糊的图像对,在现实世界中很难大量收集这些图像对。因此,他们通常会做出权衡,在室内场景中应用 Koschmieder 定律合成模糊图像,在室内场景中可以获得基本的深度信息。由于室内合成图像和真实室外图像之间存在一定差距,基于学习的方法可能会过度拟合合成数据,并且它们去除真实雾霾的能力有限

Fig 1.(a) 由基于学习的方法 AODNet生成。(b) 由基于先验的方法 DCP[8]生成。AODNet 的结果在视觉上更好,但包含更多的雾,而 DCP 以引入伪影为代价去除更多雾。

为了进一步改善去雾效果,利用这两个类别的优点是一个自然的想法,但令人惊讶的是,这种简单的想法在文献中很少被探讨。在这项工作中,基于上述发现,我们提出了一个两阶段的弱监督去雾框架。

在第一阶段,RefineDNet 通过使用 DCP 生成初步结果来恢复输入模糊图像的可见性。我们将 DCP dehazing 嵌入到我们的框架中,以实现端到端的培训和评估。在第二阶段,RefineDNet 通过使用两个细化器网络进行细化,提高了初步去模糊图像的真实性和传输图的质量。在训练期间,我们通过对未配对图像使用鉴别器的对抗性学习来更新细化器网络。这种对未配对数据的弱监督有利于去雾,因为可以从现实世界中收集大量未配对的图像来训练我们的模型。通过这种方式,与在模拟图像上训练并可能过度拟合这些数据的监督方法相比,RefineDNet 更适合处理真实世界的雾图像。

贡献:

  1. 我们提出了一个两阶段弱监督框架 RefineDNet,该框架首先采用基于先验的 DCP 恢复可见性,然后采用 GANs 提高真实性。
  2. 我们提出了一种新的感知融合策略来融合不同的去雾结果。我们的实验结果表明,该策略在各种数据集上都是有效的,性能也有所提高。
  3. 我们还构建了一个包含 6480 幅室外图像的必要的非配对数据集,以便于弱监督去雾方法的相关研究。

RELATED WORK

这项工作与基于先验和基于学习的去雾方法以及生成性对抗网络(GANs)有关。由于近年来 GANs 得到了广泛的探索,主要对其在去雾方面的应用进行了综述。
该部分分为三个部分进行介绍:

  1. 基于先验的去雾方法

    介绍了之前大气散射模型的发展历程和根据该模型产生的一些先验方法,DCP 以及其相应的一些改进方法。然后还有最近的一些 Liu 等人提出了非局部总变差正则化(NLTV),以细化通过边界约束获得的初步传输图。

  2. 基于深度学习的去雾

    随着 CNN 的普及,基于深度学习的方法逐渐应用到去雾领域。介绍了一些经典的 CNN 来去雾的方法。DehazeNet、AOD-Net、MSCNN 等等。最近,基于大气照明对 YCrCb 颜色空间的照明通道的影响大于色度通道的发现,Want 等人提出了采用多尺度 CNN 恢复模糊图像 Y 通道的 AIPNet。但是这些方法都是以来成对图像的监督,而本文的方法对未配对数据的监督较弱。

  3. 使用 GANs 的方法

    GAN 的来源于一个论文,其中一个生成器和鉴别器以对抗的方式参与训练中的 maximin 游戏。许多研究已经证明,GANs 在图像生成和恢复领域具有优越性。作为利用未配对数据的先驱,利用三个生成器从模糊的输入中生成去模糊的图像、传输图和环境光,然后借助多尺度鉴别器进行对抗性训练。

PROPOSED FRAMEWORK

在本节中,将详细介绍提出的 RefineDNet。我们首先介绍了它的总体结构,然后回顾了如何获得 DCP 的初步去雾结果,这对 RefineDNET 至关重要。然后,对感知融合进行了详细分析。最后,描述了损失函数。

总体框架

  1. 总体框架图示

    1.1 划分为两个阶段的框架:如该图所示,包括两个阶段。第一个阶段用 DCP 生成环境光 A,初步去雾图像的JDCPJ_{DCP}JDCP​和传输图TDCPT_{DCP}TDCP​。然后在第二阶段,TDCPT_{DCP}TDCP​由 refiner network (这里翻译成优化网络?不是很懂严格翻译,所以使用原文的refiner network)RTR_TRT​优化到TrefT_{ref}Tref​,并且 JDCPJ_{DCP}JDCP​由另一个 refiner network RJR_JRJ​优化为JrefJ_{ref}Jref​。值得注意的是,DCP 阶段是直接嵌入到 RefineDNet 中的,因此,IrealI_{real}Ireal​是唯一的输入。同时,图 2 指出天空区域的TrefT_{ref}Tref​值大于其真实值。但是天空区域的TrefT_{ref}Tref​值不影响去雾效果。
    1.2 弱监督学习:在训练的过程中,为了确保TrefT_{ref}Tref​被适当优化,我们使用TrefT_{ref}Tref​,JrefJ_{ref}Jref​和根据大气散射模型里面的AAA将模糊输入重建为IrecI_{rec}Irec​。然后,通过最小化IrealI_{real}Ireal​和IrecI_{rec}Irec​的距离来更新优化器RTR_TRT​。还有一个用D表示的附加鉴别器,它在获得清晰样本JrealJ_{real}Jreal​之前接收JrealJ_{real}Jreal​,用以实现对抗性学习。由于没有要求必须从模糊输入IrealI_{real}Ireal​的同一场景中获取JrealJ_{real}Jreal​,因此整个框架的监督很弱。在RefineDNet中,D在薄弱的监管中起着至关重要的作用。没有D,我们就无法进行对抗性学习,因此,RJR_JRJ​也不会得到适当的更新。
    1.3 去雾感知融合:在该网络中,虽然JrefJ_{ref}Jref​是一个去雾图像,但是它不适合任何物理模型,为了获得更合格的结果,将其重述为:
    Jrec(x)=Ireal(x)−ATref(x)+AJ_{rec}(x)=\frac{I_{real}(x)-A}{T_{ref}(x)}+AJrec​(x)=Tref​(x)Ireal​(x)−A​+A

  2. 其中参数和相应过程
    RTR_{T}RT​和RJR_{J}RJ​代表两个 refiner network.DDD指鉴别器。RrealR_{real}Rreal​和JrealJ_{real}Jreal​是未配对的输入图像。TrefT_{ref}Tref​ 和JrefJ_{ref}Jref​ 分别给出了TDCPT_{DCP}TDCP​和JDCPJ_{DCP}JDCP​的精确结果.AAA是大气光,括号中的数字是A的R、G、B三通道的值。JrecJ_{rec}Jrec​是通过等式3重建的去雾图像,IrecI_{rec}Irec​是通过等式1重建有雾图像。感知融合如下图所示。

网络结构:为了验证是RefineDNet的图形有效性而不是骨干网络,我们采用了CycleGAN提供的骨干网络来实现RTR_TRT​,RJR_JRJ​,并且D没有采用最新的去雾管道中流行的任何多尺度和其他特殊结构。具体来说,RTR_TRT​是一个U-Net包括了8个上采样和下采样的卷积层,RJR_JRJ​是一个ResNet,有9个残差块组成。D是包括5个卷积层的CNN。

预处理DCP结果

DCP被嵌入到RefineDNet中来支持端到端的训练和推理。

  1. 暗通道提取:对于输入的RGB图像I,我们可以计算通道方面的最小值,将其表示为IminI^{min}Imin。然后,我们将大小为5×55 \times 55×5的核最大池化于IminI^{min}Imin的加逆运算,然后得到加逆后的池化结果作用与IdarkI^{dark}Idark,提取出来的暗通道可以被公式表示为:
    Idark(x)=−maxpool(−minc∈R,G,B(Ic(x)))I^{dark}(x)=-maxpool(-min_{c \in R,G,B}(I^c(x))) Idark(x)=−maxpool(−minc∈R,G,B​(Ic(x)))
  2. 传输估计:我们得到了Koschmieder定律两边的暗通道,
    Idark(x)=Jdark(x)t(x)+A(1−t(x))I^{dark}(x)=J^{dark}(x)t(x)+A(1-t(x))Idark(x)=Jdark(x)t(x)+A(1−t(x))
    其中Idark(x)I^{dark}(x)Idark(x)和Jdark(x)J^{dark}(x)Jdark(x)是图像I和J在x像素的暗通道,根据DCP的假设,自然图像的大多数非天空面片中的像素的强度值至少在一个颜色通道Jdark(x)中接近于零。那么
    t(x)=1−Idark(x)At(x)=1-\frac{I^{dark}(x)}{A}t(x)=1−AIdark(x)​.
    如果A已知,则可以相应地获得TDCPT_{DCP}TDCP​。此外,我们还采用了引导滤波器来实现TDCPT_{DCP}TDCP​的平滑。引导滤波器也嵌入到我们的框架中,并使用一个平均池实现,内核大小为19×19,步长为1
  3. 环境光估计和去模糊图像:对于A,由于图像中的大像素值(例如,天空区域的像素值)非常接近环境光,因此将拾取Idark(x)I^{dark}(x)Idark(x)中最亮的0.1%像素,并将其在I(x)的颜色通道中的值平均为A。

感知融合

 由于JrefJ_{ref}Jref​和JrecJ_{rec}Jrec​是用其自己的方式产生的,因此很有可能在某些区域比另外一个效果更好。从这个意义上讲,如果JrefJ_{ref}Jref​和JrecJ_{rec}Jrec​中更好的区域被赋予更大的权重,那么可以通过融合JrefJ_{ref}Jref​和JrecJ_{rec}Jrec​来获得更好的结果。
 由于JrefJ_{ref}Jref​和JrecJ_{rec}Jrec​都是有良好可见性的去雾图像,它们与任意归一化权重的融合不应该影响其可见性。因此,我们基于图像真实性进行融合。因为IrealI_{real}Ireal​是真实性很高的自然图像,所以IrealI_{real}Ireal​…

  1. 特征提取
  2. 相似度计算
  3. 融合权重
  4. 适应融合多个结果

损失函数

 RefineDNet的损失函数包括3项,即对抗性损失LGL_GLG​、重构损失LrecL_{rec}Lrec​和identity loss LidtL_{idt}Lidt​。

  1. 对抗性损失,最初用于以敌对方式更新生成器和鉴别器,在实验中,LGL_GLG​用于监督RJR_JRJ​和DDD。定义如下:
    LG(RJ,D)=EJreal∼Jreal[logD(Jreal)]+EJDCP∼JDCP[log(1−D(RJ(JDCP)))]L_G(R_J,D)=\mathbb{E}_{J_{real}\sim\mathcal{J_{real}}}[logD(J_{real})]\\~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\mathbb{E}_{J_{DCP}\sim\mathcal{J_{DCP}}}[log(1-D(R_J(J_{DCP})))]LG​(RJ​,D)=EJreal​∼Jreal​​[logD(Jreal​)]                                  +EJDCP​∼JDCP​​[log(1−D(RJ​(JDCP​)))]
  2. 重建损失,对重建的模糊图像进行正则化,我们将LrecL_{rec}Lrec​定义为IrealIrecI_{real}I_{rec}Ireal​Irec​之间的距离,公式如下:
    Lrec=∥Ireal−Irec∥L_{rec}=\parallel I_{real}-I_{rec}\parallelLrec​=∥Ireal​−Irec​∥
    其中∥⋅∥\parallel \cdot \parallel∥⋅∥表示距离度量。IrealI_{real}Ireal​是有雾图像输入,IrecI_{rec}Irec​是通过公式一获得的。
  3. Identity loss如下:
    Lidt=∥Jreal−RJ(Jreal)∥L_{idt}=\parallel J_{real}- R_J(J_{real})\parallelLidt​=∥Jreal​−RJ​(Jreal​)∥
  4. 所有损失函数,综合所有损失条款,整体为:
    RT∗,RJ∗=argminRT,RJmaxDλLG+Lrec+LidtR_T^*,R_J^*=\mathop{argmin}\limits_{ R_T,R_J}\mathop{max}\limits_{D}\lambda L_G+L_{rec}+L_{idt}RT∗​,RJ∗​=RT​,RJ​argmin​Dmax​λLG​+Lrec​+Lidt​
    其中λ是表示LGL_GLG​权重的超参数。λ的默认值设置为0.02。

EXPERIMENTS AND DISCUSSIONS

即实验目的和实验过程以及实验的环境,还有一些消融实验证明所提出的框架是否有效

实验协议

介绍了实验的数据集和评价指标以及实验的细节
实验数据还是来源于RESIDE-standard。(具体细节可以看有关该数据集的论文,这个数据集也是这几年去雾论文用的比较多的数据集)

  1. 室内训练数据集。ITS,训练了RefineDNet和其他基于学习的模型。ITS包含了13990张清晰和合成模糊图像对,这些图像由NYU-Depth第二版本的深度数据集合成生成。但是该论文中没有使用ITS的成对信息,而是在RefineDNet训练期间随机打乱图像。
  2. 室内评估:我们在RESIDE-standard的测试集SOTS(合成目标测试集)和D-HAZY的跨域Middlebury部分上评估了不同的去雾方法。SOTS以与ITS相同的方式生成了500个室内对。D-HAZY的Middlebury部分包含23个室内对,这些室内对是由Middlebury数据集的图像和高质量深度图生成的。根据之前的研究,我们采用PSNR和SSIM作为SOTS和D-HAZY的评估指标。
  3. 室外训练集:有些图像不适合在该范围内,例如在非常低的分辨率或者室外强阳光下。所以,手动选择了高质量的多云图像。对于雾霾模糊图像,过滤了明显伪影或者模糊的低质量图像。最终选择了3577副清晰图像和2903幅图像作为训练集,存放在RESIDE-unpaired数据集李沐。
  4. 室外评估:采用了真实户外基准数据集BeDDE和推荐指标VSI、VI、RI,这个数据集包含了208对清晰和雾图。是在中国23个省会城市不同天气条件下采集的。
  5. 实现细节:
    对应参数
    平台 Pytorch
    显卡 Nvidia Titan X
    优化器 Adam
    学习率 0.0002
    λ\lambdaλ 0.02
    α\alphaα 0.4

与最新方法的比较

对比数据表格

下划线为第二好的,加粗字体为最好效果的方法。FAMED-Net是关于SOTS数据集第二好的方法

视觉效果

室外效果

这边是我自己使用了3个Net的效果:

  1. 原始雾图如下:

  2. AOD-Net去雾:

  3. FFA-Net去雾:

  4. RefineDNet去雾:

效果贼好的一个图片

去雾后效果:

后续更新:上面的视觉效果最好的图片其实用DCP也是一样的效果,怎么说呢。。。懂得都懂了。
后面的细节有兴趣的可以自己去原文看一下。
代码在Github上作者也公开了
同时这几个网络的代码我都一一写下来

  • AOD-Net
  • FFA-Net
  • RefineDNet

代码如果跑不通的问题我有空可以帮忙看一下的,作者给的一般都挺好跑通的,真有问题可以私聊或者下面留言。

消融实验

分析两阶段去噪:我们旨在证明RefineDNet的主要思想的有效性,即首先用先验恢复可见性,然后通过基于学习的细化提高结果的真实性。因此,我们将RefineDNet与三条基线DCP、CycleGAN和BasicNet进行比较。DCP是基于先验的方法选择用于RefineDNet的第一阶段。cycleGAN是一种通用的非成对图像到图像的转换框架。BasicNet的结构与RefineDNet的第二阶段完全相同,但采用IrealI_{real}Ireal​作为输入,而不是TDCPT_{DCP}TDCP​和JDCPJ_{DCP}JDCP​。我们对cycleGAN、BasicNet和RefineDNet进行了ITS培训,并对其进行了SOTS评估。表三提供了评价结果。

如表三所示,RefineDNet的表现优于其他方法,由于BasicNet和RefineDNet之间的唯一区别在于是否分为两个阶段,因此可以清楚地证明,通过先恢复先验的可见性,然后通过基于学习的精细化来提高真实性,这样做是非常合理和有效的。

5.RefineDNet论文阅读相关推荐

  1. 论文阅读工具ReadPaper

    对于搞科研的同学们来说,看论文是要经历的第一关,尤其是要读好多篇论文的时候,更是着实令人头大. 这不,最近无意中发现了个在线论文阅读网站:readpaper.com,号称「论文阅读笔记神器,硕博科研学 ...

  2. 多目标跟踪:CVPR2019论文阅读

    多目标跟踪:CVPR2019论文阅读 Robust Multi-Modality Multi-Object Tracking 论文链接:https://arxiv.org/abs/1909.03850 ...

  3. 快速人体姿态估计:CVPR2019论文阅读

    快速人体姿态估计:CVPR2019论文阅读 Fast Human Pose Estimation 论文链接: http://openaccess.thecvf.com/content_CVPR_201 ...

  4. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读

    Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...

  5. 深度学习点云语义分割:CVPR2019论文阅读

    深度学习点云语义分割:CVPR2019论文阅读 Point Cloud Oversegmentation with Graph-Structured Deep Metric Learning 摘要 本 ...

  6. 3D目标检测论文阅读多角度解析

    3D目标检测论文阅读多角度解析 一.前言 CNN(convolutional neural network)在目标检测中大放异彩,R-CNN系列,YOLO,SSD各类优秀的方法层出不穷在2D图像的目标 ...

  7. 3D目标检测论文阅读摘要

    3D目标检测论文阅读摘要 2D Object Detection 的研究已经非常成熟了,代表作品有RPN系列的FasterRCNN,One Shot系列的YOLOv1-YOLOv3,这里推荐一个2D ...

  8. 目标检测——Faster R-CNN论文阅读

    论文阅读--Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 文章目录 论文阅读--Faste ...

  9. 【独家】深度学习论文阅读路线图

    如果你是深度学习领域的一名新手,可能会遇到的第一个问题是"应该从哪篇论文开始读起呢?" 这里给出了深度学习论文阅读路线图! 路线图按照下面四个准则构建而成: 从提纲到细节 从经典到 ...

  10. 道路检测 | SNE-RoadSeg论文阅读

    道路检测 | SNE-RoadSeg: Incorporating Surface Normal Information into Semantic Segmentation for Accurate ...

最新文章

  1. python写一个系统-熬了一晚上,小白用Python写了一个股票提醒系统
  2. Matlab之Kalman:用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法
  3. android 外文期刊_AndroSimilar: Robust signature for detecting variants of Android malware
  4. 责任链设计模式(过滤器、拦截器)
  5. java实现遍历树形菜单方法——数据库表的创建
  6. 计算机桌面图标的排列,如何进行桌面图标排列 让你的桌面一秒变酷炫【图文教程】...
  7. 最大熵图像复原方法原理(附完整代码)
  8. mac版Unity Pro游戏开发工具如何创建和使用脚本
  9. android动画水波纹外扩,Android实现水波纹扩散效果
  10. 【疑问】互联网公募基金的销售是繁荣,还是乱象?
  11. Opencv+Python实现医学图片处理
  12. win10下配置maven
  13. Rapid SCADA中文使用说明书(一)
  14. 小程序转uni-app——onLoad语法转换
  15. PS快速制作流血火焰和冰封字体
  16. 受力分析软件_学了那么多力学,怎么还是不会做有限元分析?
  17. 2022年最新crm管理系统免费试用-从0了解crm
  18. Map 和 ForEach 的区别
  19. 在python中解压rar文件
  20. 从零到一编写一个 spark 程序并提交到集群中运行

热门文章

  1. 编程序找出1000之内的所有完数,并输出其因子
  2. 【1076】正常血压
  3. spring-advisor-advised
  4. 织梦dedecms TAG标签调用汇总(史上最全)
  5. 是时候让《武林外传》教你反内卷了
  6. C++小系统——餐馆员工管理系统及餐馆点菜系统(一)
  7. 《走近心理学》第二章之心理学的生物学理论
  8. Python的Code对象
  9. 【Arduino连接时钟模块在LCD1602上显示时间】
  10. MongoTemplate实现mongodb聚合管道查询