一种基于改进CycleGAN的图像去雾方法
未命名
08-05
阅读:100
评论:0

一种基于改进cyclegan的图像去雾方法
技术领域
1.本发明属于图像去雾领域,具体是一种基于改进循环对抗生成网络cyclegan(cyclegenerative adversarial nets,简称cyclegan)的图像去雾方法。
背景技术:
2.当前图像去雾的主流方法依旧需要依靠估算透射率和环境中的大气光值,然后将得到的值代入图像去雾模型,得到清晰的无雾图像。尽管现有的图像去方法在一些任务上取得了成功,但对于雾化程度较高,图像分辨率和亮度较低的图像,传统图像去雾方法还存在着一些缺陷,具体表现在:自然环境中,雾霾的形成原因十分复杂,只依靠简单线性公式或较少的参数很难达到预期的去雾效果,同时对参数的估计不准确也有可能会降低图像去雾的准确性,使复原后的图像在颜色、对比度等主要指标上表现不佳;现有的图像去雾方法过于将客观指标作为衡量图像去雾模型能力的评判标准,使得去雾方法将过多的计算资源投入到优化客观指标上,这会大大降低算法的感官质量并限制算法的普适性,并且现有的图像去雾方法过度依赖大气模型参数,而真实场景中的大气模型参数往往难以被准确获得,从而使得去雾方法的适用性大大降低。
3.图像去雾算法大致分为基于图像增强的去雾算法、基于图像复原的去雾算法和基于深度学习的去雾算法等三类。
4.基于图像增强的去雾算法主要原理是通过图像增强技术突出图像的细节,提升图像的对比度等相关物理属性,使图像看起来更加清晰,该类方法不考虑有雾图像的形成过程,而是通过直接突出图像的细节和提高对比度等方式,从而使复原的图像看上去更加清晰,但是由于该类方法不考虑图像降质的具体原因,只是通过增强对比度的方法改善图像的视觉效果,就会使得突出部分的信息有一定的损失或被过度增强。
5.基于图像复原的去雾算法主要依赖大气散射物理学模型,通过对大量有雾图像和无雾图像进行观察总结,得到其中存在的一些映射关系,然后根据有雾图像的形成过程来进行逆运算,从而恢复清晰图像,该类方法通过对大量的无雾图像进行特征分析,寻找无雾图像与大气散射模型中某些参数的先验关系,基于图像复原的去雾算法模型复杂度较低,去雾效果较好,但该类方法在处理图像中低对比度的区域时,会产生块状效应,甚至是完全失效;此外,当某一像素点的强度接近大气光值时,去雾后的图像会出现局部的色斑、色偏效应。
6.基于深度学习的图像去雾算法通过神经网络直接学习有雾图像与透射图之间的映射关系,进而求出透射率,并使用激活函,通过卷积神经网络进行非线性回归得到透射图。先采用假设先验求出大气光,最后根据大气散射模型恢复出无雾图像。基于深度学习的图像去雾算法是利用神经网络强大的学习能力,寻找有雾图像与图像复原物理模型中某些系数的映射关系或者使用深度神经网络,根据有雾图像还原出无雾的清晰图像。但是由于自然场景中的有雾、无雾图对很难获得,数据集基本都是自然场景图片进行人工加雾处理而得,导致神经网络在训练时数据集易产生过拟合现象,因此该算法用于真实自然场景的
去雾效果与仿真场景有一定偏差。
技术实现要素:
7.本发明的目的是针对现有技术的不足,而提供一种基于改进cyclegan的图像去雾方法。这种方法不需要估计大气散射模型的参数,去雾网络也不需要同时提供雾化和清晰图像的成对数据,能够得到质量更好的去雾图像。
8.实现本发明目的的技术方案是:
9.一种基于改进cyclegan的图像去雾方法,包括如下步骤:
10.1)读取数据:将一张有雾图像和无雾图像都读取到改进的cyclegan中,由于改进的cyclegan需要同时学习两个不同域上的图像信息,因此需要同时读入有雾图像和无雾图像,所述改进的cyclegan是在现有的cyclegan结构上,将判别器dy分割成d
y1
和d
y2
两个子判别器,使原本的双判别器结构达到更高的精度,从整体上来看,cyclegan原本的双判别器结构并未被破坏,生成器仍旧负责图像数据生成,判别器对生成的图像数据进行判定,生成器由编码器、转换器和解码器分组成,判别器将一张图像作为输入,并根据图像的相关信息,尝试判断该输入图像是原始图像还是由生成器生成的图像,本质上来看,判别器依然是一个卷积网络,它首先要从图像中提取特征信息,然后判断该特征信息是否属于这一类别,判别器使用一个产生一维输出的卷积层来完成判别任务,具体为:生成器g将一张有雾图m像作为参照,根据m的相关特征信息生成对应的去雾图像m1,之后,生成器f在根据m1的特征,生成一张循环图像m2并将其与作为参照的有雾图像m进行比较,生成器f的参考图像是一张清晰图像n,生成器f根据清晰图像n的相关特征生成有雾图像n1,之后在通过生成器g生成一张循环图像n2并将n2与作为参照的清晰图像n进行比较,在整个改进的cyclegan中,判别器d
x
用于判别图1输入的有雾图像,判别器dy用于判别无雾图像;
11.2)数据预处理:将读入的图像数据的尺寸调整为286
×
286,将调整后的图像采用随机裁剪的方式裁剪成大小为256
×
256的图像,然后再将裁剪的图像进行归一化,使归一化后的图像在[-1,1]范围内,将预处理后的图像数据作为改进cyclegan中生成器的输入,在输入时,采用随机读取的方式;
[0012]
3)分别定义改进cyclegan中的生成器、判别器以及损失函数:改进的cyclegan去雾网络是一个端到端的模型,具体来说,改进的cyclegan的生成器部分在训练阶段通过学习数据集的映射关系来生成含有特征信息的无雾图像,在测试阶段直接输出,具体过程为:
[0013]
3-1)生成器网络结构:生成器为端到端的全卷积网络,方便起见,将生输入图像和输出图像的尺寸都设置为256
×
256,共有3个颜色通道,生成器g和生成器f具有相同的网络结构,但它们的输入和输出顺序确是完全相反的,生成器来由编码器、转化器和解码器三个结构组成:
[0014]
编码器:编码器利用卷积神经网络提取输入图像的特征信息,然后将图像压缩成256个64
×
64的特征向量;
[0015]
转换器:转换器通过组合输入图像的不相近特征,将输入图像在一个域中的特征向量转换为另一个域中的特征向量,转换器使采用的是6层resnet结构,每个resnet结构是由两个卷积层构成的神经网络层组成的,在图像转换时能够很好的保留原始图像的特征信息;
[0016]
解码器:解码过程与编码过程相反,解码器采用反卷积层,目的是从特征向量中还原出低级特征,最后将这些低级特征转换得到一张图像,便可得到尺寸为[256,256,3]的图像,这一步是得到无雾图像的关键步骤;
[0017]
3-2)判别器网络结构:判别器本身为卷积神经网络,它通过四个卷积层从输入图像中提取特征信息,然后在采用一个一维输出的卷积层来判断所提取的特征信息是否属于所需的类判别器,判别器的作用是辨别输入图像的真假,整体上来看,判别网络也是由两个判别器d
x
和dy组成的,判别器d
x
用来确定输入的图像是原始有雾图像或是生成器f生成的有雾图像,与判别器d
x
的功能相同,判别器dy用来确定输入的图像是否是生成器g生成的有雾图像,但为了提高判别器的准确度,从而使生成器能够生成质量更高的图像,将判别器dy分割成了d
y1
和d
y2
两个独立的判别器,这两个判别的结构与d
x
是完全一致的,具体来说,在生成器生成的无雾图像到达判别器后dy后,由判别器和分别对该无误图像相关特征进行处理,处理完成后,再将两个判别器得到的结果进行归一化操作,使得判别器的损失函数值更小;
[0018]
3-3)损失函数:改进cyclegan的损失函数有三种:对抗损失、循环一致性损失和感知损失,其中,对抗损失和循环一致性损失是生成对抗网络原有的,主要是为了解决网络对非配对数据特征的学习,为了将判别器接收到的图像由低分辨率转换成高分辨率并得到更加精确的生成图像,采用感知损失函数使得从第二池化层到第五池化层高维度和低维度特征之间的联系充分保留原始图像的结构信息,改进cyclegan模型结构有两个样本空间组成:有雾图像样本空间x和无雾图像样本空间y,x∈x和y∈y分别表示来自这个样本空间的有雾图像和无雾图像,生成器g用来学习从用有雾图像样本空间x到无雾图像样本空间y之间的映射,这个过程表示为g:x
→
y,与之类似,生成器f用来学习从用无雾图像样本空间y到有雾图像样本空间x之间的映射,这个过程表示为f:y
→
x,dy和d
x
分别是g:x
→
y和f:y
→
x两个过程的判别器,这两个过程的对抗损失表示如公式(1)、公式(2)所示:
[0019]
l
adv
(g,dy,x,y)=logdy(y)+log(1-dy(g(x)))
ꢀꢀꢀꢀ
(1),
[0020]
l
adv
(f,d
x
,x,y)=logd
x
(x)+log(1-d
x
(f(y)))
ꢀꢀꢀꢀ
(2),
[0021]
其中,x表示输入生成器g的有雾图像,g(x)表示生成器生成的无雾图像,y表示输入生成器的f无雾图像,f(y)表示生成器生成的有雾图像,判别器dy用来判断过程g:x
→
y中输入的图像是来自无雾样本空间y中真实的无雾图像或是生成器g生成的无雾图像g(x),而判别器d
x
则用来判断过程f:y
→
x中输入的图像是来自有雾样本空间x中真实的有雾图像或是生成器f生成的无雾图像f(y),为了使最终的图像达到更好的视觉效果和更高的清晰度,对原始cyclegan的结构进行改进,将判别器dy分割成和两个子判别器,进一步的缩小判别损失,改进后g:x
→
y过程的对抗损失表示为如公式(3)所示:
[0022][0023]
通过引入循环一致性损失,cyclegan完美解决了输出图像的概率分布与原始图像概率分布不一致的问题,在整个过程中,引入循环一致性损失能够保证f(g(x))将生成器g生成的无雾图像g(x)回带成原本的图像,这里的f(g(x))是原始有雾图像x的循环图像,同样的,g(f(y))是原始清晰图像y的循环图像,整体上来说,当满足f(g(x))≈x、g(f(y))≈y
时生成的图像质量是最好的,循环一致性损失定义如公式(4)所示:
[0024][0025]
公式(4)的1表示l1范数,用来增强模型的鲁棒性,在图像去雾领域,生成的清晰图像要尽量保留原始图像的特征信息,若只采用对抗损失和循环一致性损失会丢失原始图像中某些关键的特征信息,使生成的图像纹理过于平滑,引入了感知损失用来约束图像边界信息,传统的损失函数一般通过估算生成的去雾图像和真实图像之间的差距,尽可能的保留原始图像的细节信息,感知损失通过计算生成器生成的图像和真实图像在vgg网络中特定的得卷积成上所输出的特征信息之间的差异,目前,在需要高分辨率的图像处理任务中,感知损失的应用较为广泛,此外,由于感知损失是对图像相关的关键特征信息进行约束,在生成无雾图像时,与图像相关的关键特征信息和图像的空间结构信息都被尽可能的保留,生成的无雾图像在主观上更加细致和自然,感知损失函数的表达式如公式(5)所示:
[0026][0027]
公式(5)中,φ表示vgg16在imagenet上预训练的某一层的特征图,
[0028]
综上,改进的cyclegan图像去雾模型的损失函数由公式(3)、公式(4)和公式(5)三部分组成,总的损失函数可表示为如公式(6)所示:
[0029][0030]
公式(6)中,ρ和σ分别表示循环一致性损失权重和感知损失权重,改进cyclegan去雾模型最终的优化目标如公式(7)所示:
[0031][0032]
4)将步骤2)中得到的图像输入到步骤3)得到的改进的cyclegan图像去雾模型中进行训练,并保存损失函数的值,当损失函数的值下降到纳什均衡后,模型训练过程结束;执行步骤6),若未达到纳什均衡,继续训练;
[0033]
5)判断是否达到训练轮次:如果已达到训练轮次,则停止训练,并检验改进的cyclegan图像去雾模型是否达到最优化结果,若未达到,重复步骤4),达到则停止训练,执行步骤6);
[0034]
6)输出去雾后的清晰图像并归一化:步骤2)对图像进行预处理后,图像都在[-1,1]范围内,对输出图像进行归一化操作,恢复图像的色彩,并保存清晰图像。
[0035]
本技术方案采用改进cyclegan的模型结构,通过优化cyclegan的结构来使得损失函数的误差更小,将输入的雾化图片还原成方便理解和处理的清晰图片,同时也为之后的图像处理提供了良好的数据。
[0036]
这种方法不需要估计大气散射模型的参数,去雾网络也不需要同时提供雾化和清晰图像的成对数据,能够得到质量更好的去雾图像。
附图说明
[0037]
图1为实施例中改进cyclegan去雾模型示意图;
[0038]
图2为实施例中生成器结构示意图;
[0039]
图3为实施例中判别器结构示意图;
[0040]
图4为实施例中感知损失示意示意图;
[0041]
图5为实施例中残差块结构示意图;
[0042]
图6为实施例中在i-haze数据集上的性能比较分析示意图;
[0043]
图7为实施例中在o-haze数据集上的性能比较分析示意图;
[0044]
图8为实施例中在真实的交通图像数据集上的性能比较分析示意图;
[0045]
图9为实施例中方法流程示意图。
具体实施方式
[0046]
下面结合附图和实施例对本发明的内容做进一步的阐述,但不是对本发明的限定。
[0047]
实施例:
[0048]
参照图9,一种基于改进cyclegan的图像去雾方法,包括如下步骤:
[0049]
1)读取数据:将一张有雾图像和无雾图像都读取到改进的cyclegan中,由于改进的cyclegan需要同时学习两个不同域上的图像信息,因此需要同时读入有雾图像和无雾图像,所述改进的cyclegan是在现有的cyclegan结构上,将判别器dy分割成和两个子判别器,使原本的双判别器结构达到更高的精度,从整体上来看,cyclegan原本的双判别器结构并未被破坏,生成器仍旧负责图像数据生成,判别器对生成的图像数据进行判定,生成器由编码器、转换器和解码器分组成,判别器将一张图像作为输入,并根据图像的相关信息,尝试判断该输入图像是原始图像还是由生成器生成的图像,本质上来看,判别器依然是一个卷积网络,它首先要从图像中提取特征信息,然后判断该特征信息是否属于这一类别,判别器使用一个产生一维输出的卷积层来完成判别任务,具体为:生成器g将一张有雾图m像作为参照,根据m的相关特征信息生成对应的去雾图像m1,之后,生成器f在根据m1的特征,生成一张循环图像m2并将其与作为参照的有雾图像m进行比较,如图1所示的过程区别在于生成器f的参考图像是一张清晰图像n,生成器f根据清晰图像n的相关特征生成有雾图像n1,之后在通过生成器g生成一张循环图像n2并将n2与作为参照的清晰图像n进行比较,在整个改进的cyclegan中,判别器d
x
用于判别图1输入的有雾图像,判别器dy用于判别无雾图像;
[0050]
2)数据预处理:将读入的图像数据的尺寸调整为286
×
286,将调整后的图像采用随机裁剪的方式裁剪成大小为256
×
256的图像,然后再将裁剪的图像进行归一化,使归一化后的图像在[-1,1]范围内,将预处理后的图像数据作为改进cyclegan中生成器的输入,在输入时,采用随机读取的方式;
[0051]
3)分别定义改进cyclegan中的生成器、判别器以及损失函数:改进的cyclegan去雾网络是一个端到端的模型,具体来说,改进的cyclegan的生成器部分在训练阶段通过学习数据集的映射关系来生成含有特征信息的无雾图像,在测试阶段直接输出,具体过程为:
[0052]
3-1)生成器网络结构:如图2,生成器为端到端的全卷积网络,方便起见,将生输入图像和输出图像的尺寸都设置为256
×
256,共有3个颜色通道,生成器g和生成器f具有相同的网络结构,但它们的输入和输出顺序确是完全相反的,生成器来由编码器、转化器和解码器三个结构组成:
[0053]
编码器:编码器利用卷积神经网络提取输入图像的特征信息,然后将图像压缩成
256个64
×
64的特征向量;
[0054]
转换器:转换器通过组合输入图像的不相近特征,将输入图像在一个域中的特征向量转换为另一个域中的特征向量,转换器使采用的是6层resnet结构,每个resnet结构是由两个卷积层构成的神经网络层组成的,在图像转换时能够很好的保留原始图像的特征信息;
[0055]
解码器:解码过程与编码过程相反,解码器采用反卷积层,目的是从特征向量中还原出低级特征,最后将这些低级特征转换得到一张图像,便可得到尺寸为[256,256,3]的图像,这一步是得到无雾图像的关键步骤;
[0056]
3-2)判别器网络结构:如图3所示,判别器本身为卷积神经网络,它通过四个卷积层从输入图像中提取特征信息,然后在采用一个一维输出的卷积层来判断所提取的特征信息是否属于所需的类判别器,判别器的作用是辨别输入图像的真假,整体上来看,判别网络也是由两个判别器d
x
和dy组成的,判别器d
x
用来确定输入的图像是原始有雾图像或是生成器f生成的有雾图像,与判别器d
x
的功能相同,判别器dy用来确定输入的图像是否是生成器g生成的有雾图像,但为了提高判别器的准确度,从而使生成器能够生成质量更高的图像,本例将判别器dy分割成了和两个独立的判别器,这两个判别的结构与d
x
是完全一致的,具体来说,在生成器生成的无雾图像到达判别器后dy后,由判别器和分别对该无误图像相关特征进行处理,处理完成后,再将两个判别器得到的结果进行归一化操作,使得判别器的损失函数值更小;
[0057]
3-3)损失函数:本例改进cyclegan的损失函数有三种:对抗损失、循环一致性损失和感知损失,其中,对抗损失和循环一致性损失是生成对抗网络原有的,主要是为了解决网络对非配对数据特征的学习,为了将判别器接收到的图像由低分辨率转换成高分辨率并得到更加精确的生成图像,采用感知损失函数使得从第二池化层到第五池化层高维度和低维度特征之间的联系充分保留原始图像的结构信息,改进cyclegan模型结构有两个样本空间组成:有雾图像样本空间x和无雾图像样本空间y,x∈x和y∈y分别表示来自这个样本空间的有雾图像和无雾图像,生成器g用来学习从用有雾图像样本空间x到无雾图像样本空间y之间的映射,这个过程表示为g:x
→
y,与之类似,生成器f用来学习从用无雾图像样本空间y到有雾图像样本空间x之间的映射,这个过程表示为f:y
→
x,dy和d
x
分别是g:x
→
y和f:y
→
x两个过程的判别器,这两个过程的对抗损失表示如公式(1)、公式(2)所示:
[0058]
l
adv
(g,dy,x,y)=logdy(y)+log(1-dy(g(x)))
ꢀꢀꢀꢀ
(1),
[0059]
l
adv
(f,d
x
,x,y)=logd
x
(x)+log(1-d
x
(f(y)))
ꢀꢀꢀꢀ
(2),
[0060]
其中,x表示输入生成器g的有雾图像,g(x)表示生成器生成的无雾图像,y表示输入生成器的f无雾图像,f(y)表示生成器生成的有雾图像,判别器dy用来判断过程g:x
→
y中输入的图像是来自无雾样本空间y中真实的无雾图像或是生成器g生成的无雾图像g(x),而判别器d
x
则用来判断过程f:y
→
x中输入的图像是来自有雾样本空间x中真实的有雾图像或是生成器f生成的无雾图像f(y),为了使最终的图像达到更好的视觉效果和更高的清晰度,对原始cyclegan的结构进行改进,将判别器dy分割成和两个子判别器,进一步的缩小判别损失,改进后g:x
→
y过程的对抗损失表示为如公式(3)所示:
[0061][0062]
通过引入循环一致性损失,cyclegan完美解决了输出图像的概率分布与原始图像概率分布不一致的问题,在整个过程中,引入循环一致性损失能够保证f(g(x))将生成器g生成的无雾图像g(x)回带成原本的图像,这里的f(g(x))是原始有雾图像x的循环图像,同样的,g(f(y))是原始清晰图像y的循环图像,整体上来说,当满足f(g(x))≈x、g(f(y))≈y时生成的图像质量是最好的,循环一致性损失定义如公式(4)所示:
[0063][0064]
公式(4)的1表示l1范数,用来增强模型的鲁棒性,在图像去雾领域,生成的清晰图像要尽量保留原始图像的特征信息,若只采用对抗损失和循环一致性损失会丢失原始图像中某些关键的特征信息,使生成的图像纹理过于平滑,因此,本例引入了感知损失用来约束图像边界信息,如图4所示,传统的损失函数一般通过估算生成的去雾图像和真实图像之间的差距,尽可能的保留原始图像的细节信息,感知损失通过计算生成器生成的图像和真实图像在vgg网络中特定的得卷积成上所输出的特征信息之间的差异,目前,在需要高分辨率的图像处理任务中,感知损失的应用较为广泛,此外,由于感知损失是对图像相关的关键特征信息进行约束,在生成无雾图像时,与图像相关的关键特征信息和图像的空间结构信息都被尽可能的保留,生成的无雾图像在主观上更加细致和自然,感知损失函数的表达式如公式(5)所示:
[0065][0066]
公式(5)中,φ表示vgg16在imagenet上预训练的某一层的特征图,
[0067]
综上,改进的cyclegan图像去雾模型的损失函数由公式(3)、公式(4)和公式(5)三部分组成,总的损失函数可表示为如公式(6)所示:
[0068][0069]
公式(6)中,ρ和σ分别表示循环一致性损失权重和感知损失权重,改进cyclegan去雾模型最终的优化目标如公式(7)所示:
[0070][0071]
4)将步骤2)中得到的图像输入到步骤3)得到的改进的cyclegan图像去雾模型中进行训练,并保存损失函数的值,当损失函数的值下降到纳什均衡后,模型训练过程结束;执行步骤6),若未达到纳什均衡,继续训练;
[0072]
5)判断是否达到训练轮次:如果已达到训练轮次,则停止训练,并检验改进的cyclegan图像去雾模型是否达到最优化结果,若未达到,重复步骤4),达到则停止训练,执行步骤6);
[0073]
6)输出去雾后的清晰图像并归一化:步骤2)对图像进行预处理后,图像都在[-1,1]范围内,对输出图像进行归一化操作,恢复图像的色彩,并保存清晰图像。
[0074]
具体地,本例中:
[0075]
1.编码器编码阶段:改进的cyclegan网络的输入图像的尺寸为256
×
256
×
3,编码
过程主要是由三个卷积层来提取输入图像的相关特征,在特征提取过程中,卷积层将会被作为一个下采样层,目的是降低对应特征图的分辨率,在编码过程中,编码器中的三个卷积层分别进行卷积、归一化和激活运算,为了提取图像特征,采用的卷积层的尺寸为7
×
7和3
×
3,图像去雾任务可以视作是一个域适应问题,可以将每个图像视为一个域,由于归一化操作在处理单个图像去雾是能够达到较为理想的效果,因此在图像去雾任务中,使用归一化操作更加合理;
[0076]
2.转换器转换阶段:在编码器提取出图像的相关特征后,转换器将这些特征信息进行组合,并将这些特征信息从输入图像的有雾区域转换到新的无雾区域,转换器共使用了6个残差块,残差块用来组合特征映射,在去雾网络中,每两个卷积成组成一个残差块,如图5所示,其中x代表输入的图像,函数t(x)代表双层卷积操作所获取到的特征信息,在残差块中,代表输入图像x与特征信息t(x)的和,残差块的尺寸是3
×
3,残差层可以确保网络层之前的输入数据可以在接下来的网络层上继续使用,尽可能地减少输数据和结果之间的误差,此外,残差块还可以尽可能的保留原始图像的特征信息;
[0077]
3.解码器解码阶段:解码阶段主要是解码器接收到转换器中输出的特征向量后,将这些特征向量中的低级特征还原出来,最后生成无雾的清晰图像,在解码器的解码阶段,本例采用的是上采样的方法,上采样方法能够较为准确的还原出输入图像的特征信息,上采样采用的是缩放卷积,缩放卷积操作主要有两步:首先将输入图像进行缩放,使其与需要的输出图像保持大小一致,然后再对该图像进行卷积操作,对图像进行缩放时,采用邻近插值法,对输入图像进行缩放处理的主要目的是避免上采样是所带来的棋盘效应,经过以上操作,便可得到最终的清晰图像;
[0078]
4.实验设置:
[0079]
4.1实验环境和数据集:台式电脑,满足实验要求,在实验中,采用nyu-dpeth、i-haze和o-haze三个数据集以及真实的交通图像数据,共包含2556条数据,且数据集中包含了室内、室外和多种类型的交通图像,即可用于模型训练阶段的训练集,也可用于模型测试阶段的测试集;
[0080]
4.2实验结果和分析:在实验中,对本例方法、基于dcp的图像去雾方法、基于cyclegan的图像去雾方法和基于d-cyclegan的图像去雾方法进行对比,同时用ssim和psrn值作为图像去雾模型的效果评价,比较结果如图6-图8所示:
[0081]
图6用ssim和psnr两个客观评价指标对4种图像去雾模型在i-haze据集上的效果进行了比较,能够看出,基于改进cyclegan的去雾方法比其它方法具有更好的性能,表1是四种方法对应的ssim和psnr值,
[0082]
表1在i-haze数据集上的ssim和psnr值
[0083][0084][0085]
如图7所示,与其它的三种方法相比,本例方法得到的去雾图像分辨率和清晰度都较高,因此,通过改进原有cyclegan的判别器结构,能够有效增强去雾图像的质量,表2是对应的ssim和psnr值,
[0086]
表2在o-haze数据集上的ssim和psnr值
[0087][0088]
图8是4种去雾模型在真实环境中所获取图像上的实验效果,直观上看来,去雾后图像的质量虽不如真实图像,但依旧保留了绝大部分的图像信息,因此,本例方法在真实环境中也能够取得不错的效果,证明本例方法具有较好的实用性,表3是本例方法在真实交通图像上的ssim和psnr值:
[0089]
表3真实交通图像上的客观指标
[0090] 样本1样本2样本3样本4样本5样本6样本7样本8样本9ssim0.860.810.850.790.770.860.870.840.87psnr20.1521.4720.8721.6222.4420.0519.8721.6722.49。
[0091]
综上,本例优点是:
[0092]
(1)针对传统方法存在的不足,本例通优化cyclegan的结构来使得图像去雾过程中损失函数的误差更小,能够将输入的雾化图像还原成方便理解和处理的清晰图像,同时也为之后的图像处理任务提供了良好的数据;
[0093]
(2)针对传统方法难以对复杂的雾化图像进行处理,本例方法与传统去雾方法相比,本例方法方法不需要估计大气散射模型的参数,去雾网络也不需要同时提供雾化和清晰图像的成对数据,并且,由于引入了感知循环一致性损失,不但提高了图像的分辨率,也
避免双三次提升所带来的块状问题。
技术特征:
1.一种基于改进cyclegan的图像去雾方法,其特征在于,包括如下步骤:1)读取数据:将一张有雾图像和无雾图像都读取到改进的cyclegan中,所述改进的cyclegan是在现有的cyclegan结构上,将判别器d
y
分割成d
y1
和d
y2
两个子判别器,cyclegan原本的双判别器结构并未被破坏,生成器仍旧负责图像数据生成,判别器对生成的图像数据进行判定,生成器由编码器、转换器和解码器分组成,判别器将一张图像作为输入,并根据图像的相关信息,尝试判断该输入图像是原始图像还是由生成器生成的图像,判别器依然是一个卷积网络,它首先要从图像中提取特征信息,然后判断该特征信息是否属于这一类别,判别器使用一个产生一维输出的卷积层来完成判别任务,具体为:生成器g将一张有雾图m像作为参照,根据m的相关特征信息生成对应的去雾图像m1,之后,生成器f在根据m1的特征,生成一张循环图像m2并将其与作为参照的有雾图像m进行比较,生成器f的参考图像是一张清晰图像n,生成器f根据清晰图像n的相关特征生成有雾图像n1,之后在通过生成器g生成一张循环图像n2并将n2与作为参照的清晰图像n进行比较,在整个改进的cyclegan中,判别器d
x
用于判别图1中输入的有雾图像,判别器d
y
用于判别无雾图像;2)数据预处理:将读入的图像数据的尺寸调整为286
×
286,将调整后的图像采用随机裁剪的方式裁剪成大小为256
×
256的图像,然后再将裁剪的图像进行归一化,使归一化后的图像在[-1,1]范围内,将预处理后的图像数据作为改进cyclegan中生成器的输入,在输入时,采用随机读取的方式;3)分别定义改进cyclegan中的生成器、判别器以及损失函数:改进的cyclegan去雾网络是一个端到端的模型,改进的cyclegan的生成器部分在训练阶段通过学习数据集的映射关系来生成含有特征信息的无雾图像,在测试阶段直接输出,具体过程为:3-1)生成器网络结构:生成器为端到端的全卷积网络,将生输入图像和输出图像的尺寸都设置为256
×
256,共有3个颜色通道,生成器g和生成器f具有相同的网络结构,但它们的输入和输出顺序确是完全相反的,生成器来由编码器、转化器和解码器三个结构组成:编码器:编码器利用卷积神经网络提取输入图像的特征信息,然后将图像压缩成256个64
×
64的特征向量;转换器:转换器通过组合输入图像的不相近特征,将输入图像在一个域中的特征向量转换为另一个域中的特征向量,转换器使采用的是6层resnet结构,每个resnet结构是由两个卷积层构成的神经网络层组成的;解码器:解码过程与编码过程相反,解码器采用反卷积层最后将这些低级特征转换得到一张图像,得到尺寸为[256,256,3]的图像;3-2)判别器网络结构:判别器本身为卷积神经网络,它通过四个卷积层从输入图像中提取特征信息,然后在采用一个一维输出的卷积层来判断所提取的特征信息是否属于所需的类,判别器是由两个判别器d
x
和d
y
组成的,判别器d
x
用来确定输入的图像是原始有雾图像或是生成器f生成的有雾图像,与判别器d
x
的功能相同,判别器d
y
用来确定输入的图像是否是生成器g生成的有雾图像,将判别器d
y
分割成了d
y1
和d
y2
两个独立的判别器,这两个判别的结构与d
x
是完全一致的,在生成器生成的无雾图像到达判别器后d
y
后,由判别器d
y1
和d
y2
分别对该无误图像相关特征进行处理,处理完成后,再将两个判别器得到的结果进行归一化操作,使得判别器的损失函数值更小;3-3)损失函数:改进cyclegan的损失函数有三种:对抗损失、循环一致性损失和感知损
失,其中,对抗损失和循环一致性损失是生成对抗网络原有的,采用感知损失函数使得从第二池化层到第五池化层高维度和低维度特征之间的联系充分保留原始图像的结构信息,改进cyclegan模型结构有两个样本空间组成:有雾图像样本空间x和无雾图像样本空间y,x∈x和y∈y分别表示来自这个样本空间的有雾图像和无雾图像,生成器g用来学习从用有雾图像样本空间x到无雾图像样本空间y之间的映射,这个过程表示为g:x
→
y,生成器f用来学习从用无雾图像样本空间y到有雾图像样本空间x之间的映射,这个过程表示为f:y
→
x,d
y
和d
x
分别是g:x
→
y和f:y
→
x两个过程的判别器,这两个过程的对抗损失表示如公式(1)、公式(2)所示:l
adv
(g,d
y
,x,y)=logd
y
(y)+log(1-d
y
(g(x)))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1),l
adv
(f,d
x
,x,y)=logd
x
(x)+log(1-d
x
(f(y)))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2),其中,x表示输入生成器g的有雾图像,g(x)表示生成器生成的无雾图像,y表示输入生成器的f无雾图像,f(y)表示生成器生成的有雾图像,判别器d
y
用来判断过程g:x
→
y中输入的图像是来自无雾样本空间y中真实的无雾图像或是生成器g生成的无雾图像g(x),而判别器d
x
则用来判断过程f:y
→
x中输入的图像是来自有雾样本空间x中真实的有雾图像或是生成器f生成的无雾图像f(y),对原始cyclegan的结构进行改进,将判别器d
y
分割成d
y1
和d
y2
两个子判别器,进一步的缩小判别损失,改进后g:x
→
y过程的对抗损失表示为如公式(3)所示:这里的f(g(x))是原始有雾图像x的循环图像,同样的,g(f(y))是原始清晰图像y的循环图像,当满足f(g(x))≈x、g(f(y))≈y时生成的图像质量是最好的,循环一致性损失定义如公式(4)所示:公式(4)的1表示l1范数,引入了感知损失用来约束图像边界信息,感知损失函数的表达式如公式(5)所示:公式(5)中,φ表示vgg16在imagenet上预训练的某一层的特征图,综上,改进的cyclegan图像去雾模型的损失函数由公式(3)、公式(4)和公式(5)三部分组成,总的损失函数表示为如公式(6)所示:公式(6)中,ρ和σ分别表示循环一致性损失权重和感知损失权重,改进cyclegan去雾模型最终的优化目标如公式(7)所示:4)将步骤2)中得到的图像输入到步骤3)得到的改进的cyclegan图像去雾模型中进行训练,并保存损失函数的值,当损失函数的值下降到纳什均衡后,模型训练过程结束;执行步骤6),若未达到纳什均衡,继续训练;
5)判断是否达到训练轮次:如果已达到训练轮次,则停止训练,并检验改进的cyclegan图像去雾模型是否达到最优化结果,若未达到,重复步骤4),达到则停止训练,执行步骤6);6)输出去雾后的清晰图像并归一化:步骤2)对图像进行预处理后,图像都在[-1,1]范围内,对输出图像进行归一化操作,恢复图像的色彩,并保存清晰图像。
技术总结
本发明公开了一种基于改进CycleGAN的图像去雾方法,其特征在于,包括如下步骤:1)读取数据;2)数据预处理;3)定义改进CycleGAN中的生成器、判别器以及损失函数;4)训练模型;5)判断是否达到训练轮次;6)输出去雾后的清晰图像并归一化。这种方法不需要估计大气散射模型的参数,去雾网络也不需要同时提供雾化和清晰图像的成对数据,能够得到质量更好的去雾图像。能够得到质量更好的去雾图像。能够得到质量更好的去雾图像。
技术研发人员:杨昌松 肖俊 丁勇 梁海 李春海 李振宇
受保护的技术使用者:桂林电子科技大学
技术研发日:2023.05.09
技术公布日:2023/8/4
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/