![](/upload/img/202111/aivsypfltsj.jpg)
1.本发明主要涉及图像处理领域,尤其涉及一种基于对抗神经网络的图像去雾系统。
背景技术:
2.雾霾天气下,空气中存在大量诸如水蒸气、粉尘等悬浮颗粒。它们吸收并散射光线,致使设备采集的图片出现严重颜色衰减,清晰度、对比度下降,视觉效果差,这对后续计算机视觉任务造成严重影响。因此,对雾霾图像有效去雾是很有必要的。
3.近年来,图像去雾算法研究取得了重大进展。现阶段,图像去雾研究主要分成两种,基于特征和先验的方法以及基于学习的方法。基于特征和先验的去雾算法侧重对透射图的估计,其难点在于特征和先验的选择。基于学习的去雾算法可以分为两种,分步学习算法和端到端的学习算法。分步学习算法与传统方法类似,侧重对中间变量的预测。而端到端的学习方法端到端图像去雾算法避开传统大气散射理论,通过搭建全卷积神经网络模型,实现图像去雾。
4.事实上,上述方法均存在缺陷,基于特征和先验的方法和分步学习的算法预测中间变量时会存在误差,在根据大气散射模型进行公式计算时,误差依旧存在。而端到端的去雾方法,可以避免这些缺陷,但存在模型无法解释和网络训练困难的问题。因此,如何提高中间变量预测的准确率,降低相应的公式计算误差,无疑成为去雾问题的关键。
技术实现要素:
5.针对现有技术的上述缺陷,本发明提供一种基于对抗神经网络的图像去雾系统,包括如下步骤:
6.步骤s1:选取rgbd(带景深)的图像数据集,根据大气散射模型制作数据集;在实验中,选取nyu depth dataset v2带场景深度的图像数据集,并且利用大气散射模型合成雾天图像数据集。
7.步骤s2:将数据集中图片大小规范化到256*256;
8.步骤s3:搭建对抗神经网络去雾模型,该模型分为两个部分:生成网络和判别网络;这里生成网络为专门设计的去雾网络;
9.生成网络模型包括多尺度特征提取模块、中间变量大气光值预测模块、中间变量透射图预测模块以及公式计算模块4个部分构成。
10.多尺度特征提取模块:采用inceptionv1模型,本发明中采用1*1,3*3,5*5 和7*7大小的卷积核进行多尺度特征提取;
11.中间变量大气光值预测模块:本发明中采用的使用sequeeze-and-excitation (se)block网络结构来估计全局大气光值,其主要操作包括:全局平均池化 (global average pooling,gap),全连接操作(fc),relu激活函数,如公式(1),全连接操作,sigmoid激活函数如公式(2),resize操作。
[0012][0013][0014]
式中,x代表任意位置的特征值。
[0015]
中间变量透射图预测模块:该模块为全卷积神经网络模块,具体结构可以根据实际任务的复杂程度而定。本次发明采用的是多尺度的全卷积densenet (fc-densenet),其主要包括编码(encoder)和解码(decoder)两个部分。编码部分由4个denselayer组成。其中,每个denselayer包含dense block(db) 及相应池化模块的transition down(td);解码部分同样由4个denselayer组成,这里denselayer包含dense block(db)及相应池化模块的transition up(tu)。在该模块的最后使用通道数为1,激活函数为双曲正切(hyperbolic tangent,tanh) 函数公式(3)的卷积层作为输出层。
[0016]
一个db包含4层layer层,每个layer层包含批标准化(bn)层,修正线性单元(relu)层,卷积(conv)层,通道数为16;td包含了bn层、relu层、通道数为64的conv层以及最大池化层;tu为上采样层操作。
[0017][0018]
式中,x代表任意位置的特征值。
[0019]
公式计算模块:本发明利用大气散射模型计算出无雾图像作为整个生成网络的输出。大气散射模型的公式如下式(4):
[0020]
i(x)=j(x)t(x) a(x)(1-t(x))
ꢀꢀ
(4) 式中,i(x)为有雾图像,j(x)为无雾图像,a(x)是大气光值,t(x)为透射图,表示光线通过大气媒介传播到达成像设备过程中没有被散射的部分,x代表像素位置。当大气同质,即a(x)均匀时,透射图表示为t(x)=e-βd(x)
,其中,β表示大气的衰减系数,d(x)是指场景深度。
[0021]
损失函数:本发明模型是在wgan的基础上搭建出来的。原始wgan的损失函数如下式(5)
[0022][0023]
这里,d是满足lipschitz连续的非线性函数集,p
g
为生成数据分布,p
r
为真实数据分布,在使用wasserstein距离优化方式训练wgan时,判别网络d需要满足 lipschitz连续性,即判别值近似于k
·
w(p
r
,p
g
),其中k作为lipschitz常数,代表判别网络梯度值的上界,而w(p
r
,p
g
)为wasserstein距离,在网络训练时,通过将判别网络权值限制为[-c,c]的方式,确保权值参数的有界性,进而间接限制其梯度信息。
[0024]
这里重新定义了损失函数,如下式(6):
[0025]
l=l
gan
λ
·
l
content
ꢀꢀ
(6)
[0026]
其中,λ置为100。l
content
为生成网络模型的损失函数,l
gan
为对抗损失。l
content
具体公式如下式(7):
[0027]
[0028]
这里,是生成网络预测的去雾结果,为有雾图像对应的标签。l
g
表示生成图像的内容损失,其中包含均方误差损失和感知损失两个部分。通道数n为3,f 为感知损失中特征提取网络,这里使用的是vgg特征提取网络,c为提取特征的通道数,w
×
h为图像或特征的维度大小。而l
gan
为对抗损失,其计算公式如下式(8):
[0029][0030]
其中,p
g
为生成清晰图像的数据分布,d(x)为判别器的输出。
[0031]
表1网络结构详细参数
[0032][0033][0034]
步骤s4:将制作好的数据集输入到对抗神经网络模型进行训练。模型参数初始化设置如下:在网络训练阶段,每层卷积核初始化为高斯分布,偏置初始化为0,学习率初始化为0.0001,模型训练采用小批量训练的方式,batch-size为2。本发明使用keras深度学习架构,采用rmsprop算法优化模型参数,训练次数为 100。实验机器为带有nvidia gtx1080 gpu的计算机。
[0035]
步骤s5:保存训练好的模型,输入一幅有雾图像,得出清晰图像。
[0036]
本发明的优点是:本发明不需要手工提取特征,有效避免中间变量预测的误差,可以实现端到端去雾,且方法简单且适用性广。
附图说明
[0037]
图1是本实用新型的结构框图;
[0038]
图2是本实用新型的流程图;
[0039]
图3是本实用新型的网络结构图;
[0040]
图4是本实施例中对合成数据集的去雾效果对比图;
[0041]
图5是本实施例中对真实场景图的去雾效果对比图。
具体实施方式
[0042]
下面结合附图和实施例进一步对本发明加以说明。
[0043]
如图1-2所示:一种基于对抗神经网络的图像去雾方法,其关键在于按如下步骤进行:
[0044]
步骤s1:选取rgbd(带景深)的图像数据集,根据大气散射模型制作数据集;在实验中,选取nyu depth dataset v2带场景深度的图像数据集,并且利用大气散射模型合成雾天图像数据集。
[0045]
步骤s2:将数据集中图片大小规范化到256*256;
[0046]
步骤s3:搭建对抗神经网络去雾模型,该模型分为两个部分:生成网络和判别网络;这里生成网络为专门设计的去雾网络,网络结构如图2所示;
[0047]
生成网络模型包括多尺度特征提取模块、中间变量大气光值预测模块、中间变量透射图预测模块以及公式计算模块4个部分构成。
[0048]
多尺度特征提取模块:采用inceptionv1模型,本发明中采用1*1,3*3,5*5 和7*7大小的卷积核进行多尺度特征提取;
[0049]
中间变量大气光值预测模块:本发明中采用的使用sequeeze-and-excitation (se)block网络结构来估计全局大气光值,其主要操作包括:全局平均池化 (global average pooling,gap),全连接操作(fc),relu激活函数,如公式(1),全连接操作,sigmoid激活函数如公式(2),resize操作。
[0050][0051][0052]
式中,x代表任意位置的特征值。
[0053]
中间变量透射图预测模块:该模块为全卷积神经网络模块,具体结构可以根据实际任务的复杂程度而定。本次发明采用的是多尺度的全卷积densenet (fc-densenet),其主要包括编码(encoder)和解码(decoder)两个部分。编码部分由4个denselayer组成。其中,每个denselayer包含dense block(db) 及相应池化模块的transition down(td);解码部分同样由4个denselayer组成,这里denselayer包含dense block(db)及相应池化模块的transition up(tu)。在该模块的最后使用通道数为1,激活函数为双曲正切(hyperbolic tangent,tanh) 函数公式(3)的卷积层作为输出层。
[0054]
一个db包含4层layer层,每个layer层包含批标准化(bn)层,修正线性单元(relu)层,卷积(conv)层,通道数为16;td包含了bn层、relu层、通道数为64的conv层以及最大池化
层;tu为上采样层操作。
[0055][0056]
式中,x代表任意位置的特征值。
[0057]
公式计算模块:本发明利用大气散射模型计算出无雾图像作为整个生成网络的输出。大气散射模型的公式如下式(4):
[0058]
i(x)=j(x)t(x) a(x)(1-t(x))
ꢀꢀ
(4)
[0059]
式中,i(x)为有雾图像,j(x)为无雾图像,a(x)是大气光值,t(x)为透射图,表示光线通过大气媒介传播到达成像设备过程中没有被散射的部分,x代表像素位置。当大气同质,即a(x)均匀时,透射图表示为t(x)=e-βd(x)
,其中,β表示大气的衰减系数,d(x)是指场景深度。
[0060]
损失函数:本发明模型是在wgan的基础上搭建出来的。原始wgan的损失函数如下式(5)
[0061][0062]
这里,d是满足lipschitz连续的非线性函数集,p
g
为生成数据分布,p
r
为真实数据分布,在使用wasserstein距离优化方式训练wgan时,判别网络d需要满足 lipschitz连续性,即判别值近似于k
·
w(p
r
,p
g
),其中k作为lipschitz常数,代表判别网络梯度值的上界,而w(p
r
,p
g
)为wasserstein距离,在网络训练时,通过将判别网络权值限制为[-c,c]的方式,确保权值参数的有界性,进而间接限制其梯度信息。
[0063]
这里重新定义了损失函数,如下式(6):
[0064]
l=l
gan
λ
·
l
content
ꢀꢀ
(6) 其中,λ置为100。l
content
为生成网络模型的损失函数,l
gan
为对抗损失。l
content
具体公式如下式(7):
[0065][0066]
这里,是生成网络预测的去雾结果,为有雾图像对应的标签。l
g
表示生成图像的内容损失,其中包含均方误差损失和感知损失两个部分。通道数n为3,f 为感知损失中特征提取网络,这里使用的是vgg特征提取网络,c为提取特征的通道数,w
×
h为图像或特征的维度大小。而l
gan
为对抗损失,其计算公式如下式(8):
[0067][0068]
其中,p
g
为生成清晰图像的数据分布,d(x)为判别器的输出。
[0069]
表1网络结构详细参数
[0070][0071][0072]
步骤s4:将制作好的数据集输入到对抗神经网络模型进行训练。模型参数初始化设置如下:在网络训练阶段,每层卷积核初始化为高斯分布,偏置初始化为0,学习率初始化为0.0001,模型训练采用小批量训练的方式,batch-size为2。本发明使用keras深度学习架构,采用rmsprop算法优化模型参数,训练次数为 100。实验机器为带有nvidia gtx1080 gpu的计算机。
[0073]
步骤s5:保存训练好的模型,输入一幅有雾图像,得出清晰图像。
[0074]
本发明采用nyu depth dataset v2作为基础数据集,该数据集包含1449张 640*480的室内彩色图像及其场景深度图。本文选取其中1200张图片作为基础训练数据集,选取其余200张图片作为基础测试数据集。针对每一张图片,随机生成4组大气光值α和大气衰减系数β,其中,α∈[0.7,1],β∈[0.6,1.6],然后根据大气散射模型公式计算出4组透射图和合成有雾图像。本文共生成4800张有雾图像及其透射图作为训练集,生成800张有雾图像作为合成图像测试集。为验证本文模型的泛化能力,本发明收集了100张真实场景图片作为真实场景测试集。其数据表现形式如下表所示。具体的去雾效果图见实施例1和2。
[0075]
表2合成图像测试集上该模型的表现
[0076]
再多了解一些
本文用于企业家、创业者技术爱好者查询,结果仅供参考。