基于深度学习的去雾综述1

《A Comprehensive Survey on Image Dehazing Based on Deep Learning》

1.Introduction

  1. 基于深度学习的去雾方法主要分为无监督去雾和有监督去雾。其中监督方法需要成对的模糊图像和无模糊图像;无监督的方法通常以未配对的图像作为训练集
  2. 深度学习的去雾有三个重要因素:
    1. 大气散射模型(ASM)
    2. Transmission map (Trans)
    3. 额外的数据(Extra data)

1.1Goals of our survey

  1. 总结常用的数据集和损失函数
  2. 为基于深度学习的SOTA去雾算法提供了一种分类方法并介绍了各个方法的核心技术
  3. 指出将给未来关于去雾任务带来灵感的未决问题

该综述提供了对用于白天的、基于深度学习的有监督和无监督去雾模型的综合调查。

1.2数据集

  1. D-Hazy、HazeRD、RESIDE:基于包含深度注释的数据集而合成的
  2. I-HAZE、O-HAZE、NH-HAZE:由一个专业的雾霾发生器制作出来的
  3. MRFID、BeDDE:最近提出、包含在真实世界中收集到的有雾和无雾的图像;但是数据不足所以不适合采用大容量去雾模型

1.3评价指标

  1. 峰值信噪比(PSNR)
  2. 结构相似度指数(SSIM)
  3. CIEDE2000:评价去雾图像和参考的无雾图像之间的色差

1.4损失函数

  1. 常用的损失函数:

    1. L1/L2
    2. SSIM
  2. 感知损失(perceptual loss)

2.有监督去雾方法研究现状

2.1.ASM模型与卷积神经网络相结合

估计两个参数:transmission maps t ( x ) t(x) t(x) and atmospheric light value A

根据不同类型的输入数据,我们将基于ASM的有监督模型分为单目去雾和双目去雾

  1. 单目去雾(3种类型)

    1. 用深度神经网络来估计 t ( x ) t(x) t(x)并使用先验假设来估计A

      1. DehazeNet(非端到端):用L2损失来估计 t ( x ) t(x) t(x) ,最暗的0.1%个像素估计A
      2. Single image dehazing via multi-scale convolutional neural networks with holistic edges(可训练端到端):通过具有整体边缘的多尺度卷积神经网络
    2. 多个神经网络来联合估计 t ( x ) t(x) t(x)和A

      1. DCPDN:联合学习 t ( x ) t(x) t(x)和A,是一个端到端物理去雾模型,将ASM完全嵌入到整体优化框架中

        联合鉴别器的优化过程:

    3. 重新制定ASM,以避免对 t ( x ) t(x) t(x)和A的估计所造成的累积误差

      1. AOD-Net

        实验证明,在不单独估计 t ( x ) t(x) t(x) A A A的情况下仍然可以获得可靠的去雾性能

      2. FAMEDNet同样采用了该思想

        由于收集 t ( x ) t(x) t(x)是耗时的工作,重新制定ASM有效简化去雾过程


  2. 双目去雾(增强了去雾模型对数据集的依赖性)

    通常使用左右视图作为联合输入

    1. Deep network for simultaneous stereo matching and dehazing:一种多任务网络SSMD-Net,可以通过立体有雾图像对来联合估计清晰的图像和视差,但是它只能估计左边的无雾图像
    2. BidNet:可以产生双目去雾图像对(估计立体t时,BidNet设计了STM来转换深度信息)
    3. Simultaneous deep stereo matching and dehazing with feature attention:注意力机制与双目任务相结合,自监督蒸馏法将模型应用于真实世界的图像。

2.2直接学习从有雾图像到无雾图像的映射

(需要成对的有雾和无雾图像)


  1. 注意力机制【Ffanet: Feature fusion attention network for single image dehazing】

  2. 知识蒸馏【Distilling image dehazing with heterogeneous task imitation】

  3. 域自适应【Domain adaptation for image dehazing】


  1. 多输入融合

    1. GFN:融合三个输入(白平衡 I w b I_{wb} Iwb、对比度增强 I c e I_{ce} Ice、伽马矫正 I g c I_{gc} Igc
  2. 注意力机制

    FFA-Net:在使用CNN进行特征提取时,不应平等地对待通道级和像素级特征

    1. 全局平均池化 H p H_p Hp来获取全局空间信息

    2. 通道注意力

    3. 像素注意力

    4. GAN高质量图像生成(不稳定)

  3. 知识蒸馏

    KDDN:将教师网络设置为图像重建任务,并使学生网络模拟这一过程

    1. 结合了三个损失函数来训练S-Network
    2. T-Network迁移到S-Network进行去雾的过程
  4. 域自适应

    DAID:通过联合训练一个图像转变模块和两个图像去雾模块来实现的域自适应方法

    1. 充分利用合成数据进行去雾任务

3.无监督去雾方法研究现状

无监督去雾方法更适合于现实世界的去雾任务,可以有效地降低数据采集成本

  1. Cycle-Dehaze network:提出了学习有雾域和无雾域之间的双向映射函数

    1. 生成器G负责学习从有雾图像到无雾图像的映射,生成器F的训练目的是获得相反方向的映射
    2. 损失函数:循环感知一致性损失(Cycle-Dehaze)和Cycle-GAN的损失组成

  2. DHL-Dehaze:(同一模型在不同雾霾密度下的去雾结果)

    1. 多域图像到图像转换的角度处理了多个雾霾级域
    2. 得到目标域图像的分类和对抗性损失
    3. 通过源域与目标域之间的对抗性训练过程,有雾图像可以在不改变场景内容的情况下实现雾霾级别的转变
  3. Deep-DCP(设计损失函数):提出仅使用有雾图像作为输入来更新模型的参数,其训练过程是最小化暗通道先验(DCP)能量函数

    1. 能量函数:

      由Deep-DCP设计的DCP loss可以很容易地与不同的CNN架构合作。对无监督损失的探索是一个有价值的研究方向。

  4. zero-shot image dehazing:试图尽量减少对图像数量的依赖性

    1. 具有无监督的零样本的特点:只需要学习和推断一个有雾的图像
    2. 包含三个子网络: f J ( . ) ( J − N E T ) 、 f T ( . ) ( T − N E T ) 、 f A ( . ) ( A − N E T ) f_J(.)(J-NET)、f_T(.)(T-NET)、f_A(.)(A-NET) fJ(.)(JNET)fT(.)(TNET)fA(.)(ANET)分别用于估计去雾图像、t和A
    3. 局限性是对单个有雾图像的推断速度相对较慢,因为它需要对每个输入进行单独的训练。

4.Challenges and Opportunities

  1. ASM问题:ASM只是雾霾形成过程的一个近似值,有固定的局限性
  2. 在真实域和合成域之间的转换
    1. 合成数据如何有效的迁移到真实世界
    2. 需要大量可靠的数据集和配对的真实数据集
  3. 计算效率和新的指标:必须在参数的数量、推理时间和定量性能之间找到一个平衡
  4. 外部数据和预训练过的模型
    1. 有监督和无监督的去雾方法都可以在感知损失的帮助下提高去雾图像的质量。
    2. 对于外部数据和预训练过的模型如何提高模型的性能
  5. 去雾霾算法可以处理的雾霾密度:密度越高,去雾模型得到的去雾图像质量越低
  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用深度学习进行图像去的代码示例: ```python import cv2 import numpy as np import torch import torch.nn as nn import torch.optim as optim from torchvision import models # 定义去网络模型 class DehazeNet(nn.Module): def __init__(self): super(DehazeNet, self).__init__() self.features = models.vgg16(pretrained=True).features self.conv1 = nn.Conv2d(512, 1, kernel_size=3, stride=1, padding=1) self.relu = nn.ReLU(inplace=True) def forward(self, x): x = self.features(x) x = self.conv1(x) x = self.relu(x) return x # 加载预训练的去网络模型 model = DehazeNet() model.load_state_dict(torch.load('dehaze_model.pth')) model.eval() # 加载待去的图像 image = cv2.imread('hazy_image.jpg') # 图像预处理 image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) image = image / 255.0 image = torch.from_numpy(image.transpose((2, 0, 1))).float().unsqueeze(0) # 使用去网络进行去 with torch.no_grad(): dehazed_image = model(image) # 后处理 dehazed_image = dehazed_image.squeeze().numpy() dehazed_image = np.clip(dehazed_image, 0, 1) dehazed_image = dehazed_image.transpose((1, 2, 0)) dehazed_image = cv2.cvtColor(dehazed_image, cv2.COLOR_RGB2BGR) dehazed_image = (dehazed_image * 255).astype(np.uint8) # 显示去结果 cv2.imshow('Dehazed Image', dehazed_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段代码使用了一个基于VGG16的去网络模型,通过加载预训练的模型和输入待去的图像,可以得到去后的图像结果。你可以将待去的图像保存为'hazy_image.jpg',并将预训练的去网络模型保存为'dehaze_model.pth',然后运行上述代码即可得到去后的图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值