基于深度学习的图像去雾综述

基于深度学习的单幅图像去雾研究进展

存在的问题

  1. 利用卷积神经网络对大气散射模型的参数进行预测

    1. 问题:容易叠加误差
    2. 解决:使用非成对样本开展无监督、自监督学习
  2. 利用卷积神经网络训练端到端的直接映射

    1. 问题:需要大量的有雾-无雾图像对,目前大量的数据是合成而来,其与现实图片具有一定的距离,导致训练的模型泛化能力差,如何进一步提升合成图像向真实图像的迁移度?
    2. 解决:将知识蒸馏、元学习、域自适应应用于图像去雾中,提升网络的泛化能力

目前常用的方法

基于物理模型和先验知识的方法

  1. 自适应图像块尺寸选择网络(PMS-Net):

    1. 针对基于固定图像块的暗通道先验图像去雾存在过饱和和颜色失真的缺点
  2. DehazeNet去雾网络:

    1. 该网络包含结合传统手工特征的特征提取层、多尺度映射层、局部极值层以及非线性回归层,从而学习雾霾退化模型透射率t
  3. 一体化去雾网络(AOD-Net):

    1. 引入变量K(将介质透射率t和大气光值A统一到一个变量K中)、
    2. 网络包含五个卷积层,计算复杂度低
  4. 快速的多尺度端到端去雾网络(FAMED-Net):

    1. 该网络使用3个尺度的编码器和一个融合模块预测模型参数
  5. 密集连接的金字塔去雾网络(DCPDN):

    1. 该网络包括生成和判别两个子网络,其中生成网络可以端到端地联合学习介质透射率t和大气光值A
    2. 利用AMS获取图像并使用判别器判别图像样本的概率分布,使其对抗学习达到纳什均衡
  6. 单图像去雾的水平感知渐进网络(LAP-Net):

    1. 利用深度卷积网络渐进的估计大气光、透射图和清晰图像
    2. 每个阶段都用不同级别的雾霾图像进行监督
    3. 设计了一种自适应集成策略对各个阶段去雾结果进行加权融合以获得最终的恢复图像
  7. 以任务为导向的图像去雾网络:

    1. 整体网络包括一个编码-解码器和一个由加雾过程衍生的空间变异递归神经网络
  8. 多级去雾算法:

    1. 通过逐步过滤雾霾残差来进一步提高去雾性能
  9. 从输入的雾霾图像本身中探索有用信息指导网络的去雾:

    1. 深度预去雾模块:通过参数预测,利用大气光散射模型从雾霾图像本身生成中间去雾结果
    2. 渐进式特征融合模块:

    受限于成像物理模型的准确性和先验知识的表达能力以及估计模型参数时引入的误差,这种方法的去雾效果虽比传统方法有了一定程度的提升,但是未能取得大的突破。

基于像素域端到端映射的方法

尝试直接在像素域建立雾霾图像与清晰图像之间的端到端映射关系模型

一、全卷积编码-解码结构

  • 编码器:对输入图像进行特征提取
  • 解码器:利用编码器得到的特征重构目标图像
  • 编码器和解码器间加入跳跃连接,充分利用图像各个层级的特征
  1. 像素域的端到端图像去雾网络(基于CGAN架构)
    1. 使用对称层的跳跃连接来突破解码过程中的信息瓶颈
    2. 使用求和方法捕获更多有用信息
    3. 损失函数:感知损失和L1正则化损失
  2. 于门限融合网络(GFN)
    1. 提取图像白平衡、对比度增强和伽马矫正特征,将雾霾图像和提取的特征图像作为门限融合CNN的输入

    2. 利用CNN对雾霾图像的每个特征图像估计一个权重矩阵,再利用权重矩阵对所有的特征图像进行融合

      算法性能仍受限于预处理的有效性及合成的训练数据规模

  3. 增强型去雾网络(EPDN)
    1. 组成:多分辨率生成器模块、增强器模块和多尺度判别器模块

    2. 多分辨率生成器:对雾霾图像在两个尺度上进行特征提取

    3. 多分辨率生成器:对雾霾图像在两个尺度上进行特征提取

    4. 多尺度判别器:用于对生成的去雾结果进行鉴别

      会存在过增强现象

  4. 双残差连接网络(DuRN)
    1. 允许块中的第一个操作与后续块中的第二个操作交互,并利用成对操作的潜力进行图像去雾任务
  5. GridDehazeNet网络结构
    1. 通过独特的网格式结构,并利用网络注意力机制进行多尺度特征融合,充分融合底层和高层特征,网络取得了较好的映射能力。
  6. 基于U-Net架构的具有密集特征融合的多尺度增强去雾网络(MSBDN)
    1. 引入增强解码器来逐步恢复无雾霾图像

    2. 引入反投影反馈方案的密集特征融合模块

      密集特征融合模块可以同时弥补高分辨率特征中缺失的空间信息,并利用非相邻特征

      算法的模型复杂、参数量大,而且在下采样过程中容易丢失细节信息

  7. 端到端特征融合注意网络(FFA-Net)
    1. 主要思想是自适应地学习特征权重,给重要特征赋予更多的权重
    2. 在此基础上,Wu等人首次将有监督对比损失(CL)引入图像去雾领域,通过拉大去雾图像与雾霾图像距离、缩小去雾图像与清晰图像距离,进一步提升图像去雾性能
  8. 超高分辨率图像去雾模型
    1. 低辨率图像上使用特征提取块重建双边系数
    2. 利用回归的仿射双边网格,在全分辨率特征的指导下生成高质量的特征图

二、 Transformer结构

Transformer最初是针对自然语言处理任务提出的,通过多头自注意力机制和前馈MLP层堆叠,捕获单词之间的非局部交互

  1. 基于MLP的通用底层视觉类U-Net骨干网络(MAXIM)用于图像去雾
    1. 该网络平衡了局部和全局算子的使用,在任意尺寸图片上都具有全局感受野并且只需要线性复杂度。但是该算法依赖于强大的算力,模型参数量巨大,而且仅在合成数据域上拥有强大的映射能力

基于像素域端到端映射的图像去雾方法存在两个重要缺陷:

  1. 网络训练需要以大量的低质量-高质量图像样本对作为支撑,实际应用中低质量-高质量图像数据样本对获取困难
  2. 网络模型的泛化能力差

基于非成对低质量-高质量样本对的方法

一、基于无监督学习的方法

  1. CycleDehaze网络
    1. 该网络在循环一致性损失中增加了感知损失
    2. 通过基于拉普拉斯金字塔的上采样方法获得高分辨率图像

由于缺乏有力的约束,去雾结果常常不尽如人意

  1. 无监督图像去雾算法USID-Net

    1. 八度卷积设计了编码器来有效地捕捉雾霾特征信息
    2. 紧凑的多尺度特征注意(MFA)机制(性能和内存存储之间的权衡)
  2. 两阶段弱监督去雾框架RefineDNet

    1. 一阶段,采用暗通道先验恢复可见性
    2. 第二阶段,细化第一阶段的初步去雾结果,通过非成对的雾霾和清晰图像的对抗学习来提高真实性
    3. 提出了一种有效的感知融合策略来混合不同的去雾输出

二、基于自监督学习的方法

自监督学习利用图像的先验知识或者统计分布规律训练网络模型

  1. 基于零样本学习的图像去雾方法(ZID)

    1. 利用解耦思想根据先验模型将雾霾图像视为清晰图像、透射图和大气光的融合

    2. 利用单个雾霾图像进行学习和推理,不遵循在大规模数据集上训练深度模型的传统范式

      这能够避免数据收集和使用合成雾霾图像来解决现实世界图像的域转移问题。但是,对一张图像需要500轮次迭代,而且去雾结果中常常存在大量伪像。

  2. 零样本图像恢复模型(Koschmieder模型)

    1. 通过维持图像降质前后的Koschmieder模型参数关系以及使用一些无参考损失来实现零样本网络优化

      对输入图像进行1 000轮迭代,训练效率不高

    自监督学习方法旨在利用图像自身特性,虽然在一定程度上降低了对训练数据的依赖,但是需要加入强有力的先验知识约束

基于域知识迁移学习的方法

  1. 基于知识蒸馏的去雾网络(KDDN)

    1. 该网络通过异构任务学习图像去雾知识
    2. 教师网络与学生网络使用相同的编码-解码网络
      1. 教师网络:学习清晰图像在网络各层的特征表达,并指导学生网络
    3. 引入用于学生图像去雾网络的空间加权信道注意残差块
      1. 以自适应地学习内容感知的信道级权重
      2. 更加关注密集雾霾区域重构的特征
  2. 元注意去雾网络(MADN)

    元学习是“迁移学习”中的一种,可以模拟人类的学习过程。模型通过不断适应每个具体任务学习到“元”知识,使其具备了一种抽象的学习能力,可以快速适应新的目标任务

    1. 结合并行操作和增强模块。元注意模块根据当前输入的雾霾图像自动选择最合适的去雾网络结构
  3. 有监督和无监督相结合的半监督图像去雾网络(SSL)

    1. 该网络包含有监督学习分支和无监督学习分支两个部分,两部分共享权重
    2. 有监督分支:使用合成数据集进行网络训练,深度神经网络受到监督损失函数的约束,从有标注的样本中学习知识
    3. 无监督分支:使用无标签的真实数据,并通过稀疏的暗通道和先验梯度来充分利用清晰图像的属性约束网络

  1. 端到端的域自适应网络框架(DADN)

    域泛化(DG)的目标是学习一个模型,该模型在一个未知的新域中也可以取得很好的性能;自适应(DA)旨在减少不同域之间的差异,利用现有的源域数据对模型进行训练,使其在给定目标域上的性能最大化;域自适应和域泛化的区别在于,域自适应在模型训练过程中可以访问目标域数据,而域泛化则不可访问这些数据

    1. 包含:图像转换模块和两个图像去雾模块
    2. 采用双向变换网络将图像从一个域变换到另一个域,以弥补合成域和真实域之间的差距,然后使用变换前后的图像来训练所提出的两个去雾网络
    3. 通过利用清晰图像的特性(如暗通道先验和图像梯度平滑)将真实图像纳入到去雾训练中,以进一步提升真实图像的去雾效果

  1. 将去雾任务转化为一个半监督的域迁移问题

    1. 通过两个辅助域迁移任务来捕捉真实图像的雾霾特性,将合成的雾霾图像与真实世界的雾霾图像对齐,以减少域差距
    2. 使用差分优化策略来搜索最优的去雾网络架构,进一步提升了网络的泛化能力

    利用上述新思想解决图像去雾问题仍存在,如元学习训练稳定性差、需要大量的训练样本;零样本学习在测试阶段需要多次迭代,对于实时任务有很大限制;域自适应算法对于域间差距较大的样本泛化能力仍然十分有限

思考与展望

  1. 训练数据集与现实数据集之间的距离问题
  2. 如何设计高效的知识迁移策略(元学习、域泛化、域自适应、零样本学习)
  3. 模型轻量化
  4. 引入Transformer结构进一步提升去雾性能
  • 22
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是一个使用深度学习进行图像去雾的代码示例: ```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',然后运行上述代码即可得到去雾后的图像。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值