基于深度学习的图像去雾算法

本文探讨了三种基于深度学习的图像去雾算法:GFN-dehazing、Dehaze-cGAN和Cycle-Dehaze。GFN-dehazing利用白平衡、对比度和伽马校正图像进行去雾;Dehaze-cGAN采用cGAN结构,结合VGG特征和L1正则化减少伪影;Cycle-Dehaze基于CycleGAN,无需配对图像,通过循环一致性损失提升效果。实验表明GFN-dehazing在视觉效果上更优,而Cycle-Dehaze对数据需求较低。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言(Preface)

此博客记录三种基于深度学习的图像去雾网络,简述其算法特点并定性定量分析网络性能。
GFN-dehazing
原文:Gated Fusion Network for Single Image Dehazing(用于单幅图像去雾的门控融合网络)
原文链接: Gated Fusion Network for Single Image Dehazing
原文开源代码:GFN-dehazing
Dehaze-cGAN
原文:Single Image Dehazing via Conditional Generative Adversarial Network(基于条件生成对抗网络的单张图像去雾算法)
原文链接: Single Image Dehazing via Conditional Generative Adversarial Network
原文开源代码:Dehaze-cGAN
Cycle-Dehaze
原文:Cycle-Dehaze: Enhanced CycleGAN for Single Image Dehazing(Cycle-Dehaze: 用于单幅图像去雾的增强型 CycleGAN 网络)
原文链接: Cycle-Dehaze: Enhanced CycleGAN for Single Image Dehazing
原文开源代码:Cycle-Dehaze


一、GFN-dehazing

由于大气光照的影响,雾霾图像中的颜色通常发生变化,并且光照散射和颜色衰减的影响,使图像在远处缺乏可见性。基于这两点原因,GFN-dehazing借助三类特殊类型的图像,完成图像去雾。
白平衡图像:白平衡图像作为输入的目的是消除大气颜色造成的色差。白平衡图像可以消除大气光引起的颜色偏移,其结果呈现低对比度,通过加入另外两项输入来提高对比度。
对比度图像:通过在模糊输入中减去整张图像的平均亮度值导出介质图像,然后使用带有亮度信息的参数线性恢复介质图像中的亮度,最终得到对比度增强图像;对比度增强图像会导致图像中较暗区域趋向于黑色。
伽马校正图像:使用伽马校正图像来弥补对比度增强图像中趋于黑色所丢失的信息。
下图分别为原始图像、白平衡图像、对比度图像和伽马校正图像。
在这里插入图片描述
下图为GFN-dehazing网络的整体结构。网络输入原始的雾霾图像及三组派生图像(白平衡图像、对比度图像、伽马校正图像),在末端处输出对应三组派生图像的权重,然后和原始的三组图像分别进行加权融合,合成去雾图像。
在这里插入图片描述
直接将网络输出的权重置信图和派生图像进行加权相加可能会造成输出的去雾图像产生伪影。所以通过改变图像的分辨率使用多尺度细化的方法提高输出图片的质量。下图为我根据文章思路对多尺度细化的理解,其中每个尺度下输入图片的分辨率不同(图片的大小不同),此处所使用的网络均为同一个网络,所用的损失函数不同。
第k尺度的损失函数为 L c o n t [ θ , k ] = 1 N ∑ ∣ ∣ F ( I i , k , θ , k ) − J i , k ∣ ∣ L_{cont}[θ, k] = \frac{1}{N}\sum ||F(I_{i,k}, \theta, k) - J_{i,k}|| Lcont[θ,k]=N1∣∣F(Ii,k,θ,k)Ji,k∣∣,其中I为有雾图像;J为无雾图像。其中文章中引入鉴别器,将多尺度下最精细的输出或真实无雾图片作为输入。对尺度损失函数和鉴别器损失函数施加不同的权重作为整体的损失函数。
Alt

二、Dehaze-cGAN

Dehaze-cGAN是基于cGAN的思想,使用一种端到端的网络来解决图像去雾问题,其在生成器网络中使用编码和解码结构,从而获取更多的特征信息。在损失函数中引入预训练的VGG特征和L1正则化先验梯度,使其生成较为逼真的清晰图像,并且消除伪影。(在损失函数设计时,这点很类似于DCPDN的设计思路)
我们在这里可以对比一下原始GAN网络和Conditional-GAN网络的损失函数
原始GAN网络损失函数:Alt
Conditional-GAN网络的损失函数:Alt
在Conditional-GAN损失函数中生成器和判别器中均增加了一项y(样本标签)作为输入,CGAN的引入使得训练更加稳定和可控,可以使生成的样本更加准确,避免了一些原始GAN的缺陷。
Dehaze-cGAN的网络结构如下图所示。生成器基于编解码结构,完成自适应特征提取。使用求和代替通道拼接。鉴别器最后一层,使用Sigmoid函数将概率归一化为[0,1]。
在这里插入图片描述
Dehaze-cGAN的损失函数设计较为复杂,其中I为有雾图像;J为无雾图像。
生成器损失:
Alt
对抗损失函数 L A L_{A} LA,使用此损失函数的cGAN算法不能很好的对雾霾进行去除,在生成的无雾图像上会产生一些颜色失真和伪影。
Alt
感知损失函数 L P L_{P} LP,引入基于预先在ImageNet训练的VGG特征的感知损失,来增加图像的真实感,但是引入此函数后也会增加伪影的出现。
Alt
像素梯度损失函数 L T L_{T} LT,加入基于图片内容的像素损失和L1正则化梯度损失来去除伪影,保留生成图像的细节和结构。
Alt
判别器损失:

Alt

三、Cycle-Dehaze

Cycle-Dehaze基于Cycle-GAN架构来完成图像的去雾任务,相较于前两种方法而言,Cycle-Dehaze不需要一一配对的有雾图像和无雾图像,并且Cycle-Dehaze也完全脱离了大气散射模型。Cycle-Dehaze通过改变损失函数获得了更好的效果。除循环一致性损失外添加循环感知一致性损失来增强单张图像去雾的效果。
Cycle-Dehaze的网络结构如下所示。网络结构中有两个生成器,两个判别器。其中生成器G来学习由有雾图像生成无雾图像,生成器F来学习由无雾图像生成有雾图像。生成器G将有雾图像转化为无雾图像,但是不能保证无雾图像中的信息与原始图像中包含的信息一致,所以加入生成器F将无雾的图像在转回至有雾的图像,通过循环一致性损失来让新的有雾图像与原始有雾图像一致。在这里插入图片描述
Cycle-Dehaze中用到了两种损失:循环一致性损失&感知损失。循环一致性损失:来提高生成图像的PSNR(峰值信噪比),增强图像的定量结果。感知损失:保持图像的清晰度,提高图像的定性结果。
感知一致性损失的损失函数为:
Alt
完整损失函数为:Alt

四、定性分析算法性能(Qualitative analysis of algorithm performance)

GFN-dehazing

第一行为输入有雾图像,第二行为输出无雾图像。
在这里插入图片描述

Dehaze-cGAN

第一行为输入有雾图像,第二行为输出无雾图像。
在这里插入图片描述

Cycle-Dehaze

第一行为输入有雾图像,第二行为输出无雾图像。
在这里插入图片描述
其中三组网络的输出效果GFN-dehazing更为真实一些,但是Cycle-Dehaze对数据集要求没有过于严格,不再需要同样场景下的有雾图像和无雾图像进行配对训练。

五、定量分析算法性能(Quantitative analysis of algorithm performance)

性能指标PSNR(峰值信噪比)SSIM(结构相似性)
功能衡量两张图像之间差异评价两张图像的相似程度
计算公式 P S N R = 10 l g ( M a x V a l u e 2 M S E ) PSNR =10lg(\frac{MaxValue^2}{MSE}) PSNR=10lg(MSEMaxValue2) S S I M ( x , y ) = ( 2 μ x μ y + C 1 ) ( 2 δ x y + C 2 ) ( μ x 2 + μ y 2 + C 1 ) ( δ x 2 + δ y 2 + C 2 ) SSIM(x,y)=\frac{(2μ_{x}μ_{y} + C_{1})(2δ_{xy}+C_{2})}{(μ_{x}^2+μ_{y}^2 + C_{1})(δ_{x}^2+δ_{y}^2 + C_{2})} SSIM(x,y)=(μx2+μy2+C1)(δx2+δy2+C2)(2μxμy+C1)(2δxy+C2)
GFN-dehazing22.300.88
Dehaze-cGAN33.610.915
Cycle-Dehaze15.410.66

2023/7/24我换了研究生期间的课题研究方向,考虑到实验室硬件设备难以支撑大规模模型的训练,使用深度学习完成图像去雾任务是我2023上半年努力的科研方向,现将一些较为经典的网络结构在这里和大家分享,帮助大家去更深理解原论文。博客中有些地方可能不够严谨、存在错误,大家可以在评论区或私信对我指出。如果有对图像去雾感兴趣的朋友可以私信我,我们可以共同讨论。制作实属不易,如果这篇博客对你有帮助的话,麻烦点赞、收藏、关注。科研路漫漫,大家加油!

### 基于深度学习图像技术理论 #### 大气散射模型 在讨论基于深度学习图像之前,理解大气散射模型至关重要。当光线穿过含有水汽和其他粒子的大气层时会发生散射效应,这会改变原始场景辐射到相机成像平面的能量分布,从而影响最终形成的图像质量。具体来说,观察者接收到的像素强度由两部分组成:一部分来自目标物体本身(即无状态下的理想亮度),另一部分则是背景光因为空间内的介质而产生的额外贡献[^3]。 #### 深度学习框架下的图像流程 现代深度学习驱动的方法通常遵循以下工作流: - **数据预处理** 输入带有不同程度霾污染的照片作为训练样本集的一部分。这些图片可能已经过标注或配对了对应的清晰版本用于监督式学习过程。 - **特征提取与表示** 利用卷积神经网络(CNNs)自动捕捉输入图像的空间模式并构建高层次语义描述子。此阶段旨在发现有助于区分干净区域同含区别的关键属性。 - **透射率估计** 根据大气光学特性推断出每一点处空气透明程度(称为“透射率”)的地图。这是恢复原貌的核心步骤之一,因为知道了这一点就可以计算除掉环境光照之后剩余的真实颜色值[^5]。 - **重建高质量图像** 结合先前获得的信息以及所选特定架构的设计理念——比如采用U-net风格编码器解码器结构或是Transformer机制——完成从退化表达到自然逼真视效之间的转换操作[^2]。 ```python import torch.nn as nn class DehazingNet(nn.Module): def __init__(self, input_channels=3, output_channels=3): super().__init__() self.encoder = Encoder(input_channels) self.decoder = Decoder(output_channels) def forward(self, x): encoded_features = self.encoder(x) dehazed_image = self.decoder(encoded_features) return dehazed_image ``` 上述代码片段展示了一个简单的网络定义方式,其中包含了编码和解码两个主要组件。实际应用中可能会涉及到更为复杂的模块组合形式以适应不同任务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值