一种基于深度学习的单幅图像去雾算法的制作方法

文档序号:12787282阅读:542来源:国知局
一种基于深度学习的单幅图像去雾算法的制作方法与工艺

本发明涉及卷积神经网络和图像去雾技术,特别涉及基于卷积神经网络的,端到端的单幅图像去雾方法。



背景技术:

雾和霾是陆地和海洋上的常见现象。在有雾和朦胧的天气中,存在许多具有显着尺寸的大气颗粒。它们不仅吸收和散射场景的反射光,而且还将一些大气光散射到相机。因此,由照相机获取的图像劣化,并且通常具有低对比度和差的可见性。这将严重地影响视觉系统,尤其是可见光视觉系统。由于图像的劣化,图像的目标和障碍难以检测。这对于自动视频处理是不利的,例如特征提取,目标跟踪和对象的识别。这也是空中,海上和路上发生事故的主要原因之一。因此,重要的是设计一个图像去雾算法,以提高视觉系统的环境适应性。

随着计算机技术的发展,视频和图像去雾算法受到了广泛的关注,并广泛应用于民用和军事领域,如遥感,目标检测和交通监控。

目前,图像去雾算法主要可以分为三类:第一类是基于图像增强,并且不考虑有雾条件的物理成像模型。它试图使用各种图像增强方法来增强雾图像的对比度和可见性。该类方法能有效地增强图像对比度,凸显细节,使图像有更好的可视化效果。但这类方法并未从根本上去除雾气,而且会丢失图像的某些信息特征。第二类是基于物理模型的图像复原。图像复原方法基于在模糊条件下的图像的劣化原因来建立大气散射的物理模型。这类算法需要估计物理参数模型,如大气光照强度和透射率(深度)。然后逆解该物理模型来获得无雾图像。图像复原算法的目的以获得具有良好可见性同时保持良好的颜色恢复性能的自然清晰的图像,但处理范围有限。近年来,随着深度学习的不断发展,越来越多的被用于图像处理领域,且获得了较好的效果。因此,基于学习的去雾算法可以被认为是第三类去雾算法。现有基于学习的图像去雾算法,有雾图像大都是通过深度图经由大气散射模型,随机设置参数人工合成;学习网络输入有雾图像,输出有雾图像透射率,然后再经过逆推计算出无雾图像;

卷积神经网络不仅能有效较少网络的训练参数,使得神经网络简单化,而且具有很强的适应性。



技术实现要素:

基于图像复原算法虽然去雾效果相对较好,但由于简化的物理模型是基于大气是单散射且介质均匀的条件下,不具有普适性,如海雾或不均匀雾或平坦区域。而现有基于学习的去雾算法大都是输入有雾图像,输出透射率,还需后处理。针对上述问题,本发明的目的是提出一种基于深度学习且端到端的图像去雾算法。

为实现上述目的,本发明采取以下技术方案:

一种基于深度学习的单幅图像去雾算法,其特征在于,具体包括如下步骤:

步骤1、获取Middlebury Stereo Datasets以及在网上下载明亮的且无雾的图像作为训练样本中的无雾图像集;

步骤2、对无雾图像集利用Adobe lightroom CC方法人工加雾,并对无雾图像集添加了不同浓度的雾,得到有雾图像集;将有雾图像集和无雾图像集转换成HDF5的数据格式,生成训练样本和测试样本,便于训练,具体包括:

步骤2.1、基于lightroom CC方法的dehaze功能人工的为步骤1中的无雾图像集加雾,为了能够适应不同天气条件下的雾浓度,学习到不同雾浓度图像的特征,对无雾图像集合成了浓度分别为10,20,30,40,50,60,70,80,90,100的雾,得到有雾图像集;

步骤2.2、挑选有雾图像和无雾图像1450对作为训练样本,剩余302对作为测试样本;

步骤2.3、将训练样本和测试样本分别裁剪成29*29和25*25的图像块,

步骤2.4、再将训练样本和测试样本的图像块转换为HDF5格式作为网络输入;

步骤3、将HDF5格式的训练样本和测试样本输入至卷积神经网络,具体包括:

步骤3.1、进行特征提取:由一层卷积网络构成,包含56个5*5的高斯滤波器。输入的每一个有雾图像块与所有滤波器进行卷积,每一个输入图像块被一个高维特征向量所代表;

步骤3.2、进行维度收缩:由一层卷积网络构成,包含12个1*1的高斯滤波器。由于第一层得到的高维特征向量维度非常高,会导致下一层的计算复杂度大,考虑到这,维度收缩层用来降低特征向量维度;

步骤3.3、进行非线性映射:由六层卷积网络构成,每一层都包含12个3*3的高斯滤波器。该部分滤波器的个数和网络的层数都是影响最后效果的重要因素。

步骤3.4、进行维度扩展:由一层网络构成,包含56个1*1的高斯滤波器。该部分可以看做是第二部分的逆过程,第二部分维度收缩是为了降低计算复杂度,如果我们直接从这些低维度的特征向量中恢复出无雾图像,效果不好,所以这一部分将低维度特征向量扩展到高维度,保存细节特征。

步骤3.5、进行反卷积:由一层网络构成,包含3个5*5的高斯滤波器。该部分主要利用一组反卷积高斯滤波器来聚合先前的特征向量,恢复出无雾图像。

步骤3.6、每一个卷积网络层后面都会跟着一个激活函数层,这里我们选用参数修正线性单元PReLU(Parametric Rectified Linear Uint)。

激活函数可以被定义为f(xi)=max(xi,0)+ai·min(0,xi)。

步骤4、设置好网络的学习率和动量参数,利用caffe训练上述卷积神经网络,直至代价损失减小到一定程度且训练达到迭代最大次数,生成训练模型;

步骤5、将有雾图像输入至训练好的模型中,输出无雾图像。

在上述的一种基于深度学习的单幅图像去雾算法,步骤4所述的训练过程为:

步骤4.1、网络结构确定以后,将训练样本和测试样本输入网络;

步骤4.2、因为输入有雾图像和输出无雾图像都是彩色的,三个通道同时做比较,loss比单个通道比较要大三倍,所以讲学习率设置的相对较小0.00005,防止不收敛,设置每十万次迭代,学习率变为原来的0.8倍;动量参数设置为0.9。最大迭代次数设置为100万次;

步骤4.3、进行训练,得到无雾图像和有雾图像之间的映射关系。

本发明由于采取以上技术方案,与现有技术相比,其具有以下优点:(1)与基于物理模型的图像复原算法相比,特别是经典的暗通道先验,本发明利用样本的多样性以及网络结构的普适性,对介质不均匀以及雾图像中的平坦区域都具有较好效果,避免了色彩失真。(2)与现有基于学习的去雾算法相比,本发明的网络结构是一种端到端的,即输入有雾图像,输出直接为无雾图像,避免了后续处理,简化了处理流程。

附图说明

图1是本发明图像去雾算法实施例的整体流程图。

图2是本发明图像去雾算法实施例中,卷积神经网络的结构示意图。

图3(a)是本发明实施例中的有雾图像一。

图3(b)是将图3(a)利用本发明图像去雾算法进行去雾后效果图。

图3(c)是本发明实施例中的有雾图像一。

图3(d)是将图3(c)利用本发明图像去雾算法进行去雾后效果图。

具体实施方式

下面结合附图和实施例对本发明进行详细的描述,但本发明要求保护的范围并不局限于实施方式表述的范围。

本发明的算法流程示意图如图1所示,具体包含以下步骤:

步骤(1)获取Middlebury Stereo Datasets以及在网上下载明亮的且无雾的图像作为训练样本中的无雾图像集;

步骤(2)自然场景中,由于很难获取同一场景不同天气条件下的有雾和无雾图像对,所以有雾图像集都是利用无雾图像集经Adobe lightroom CC软件合成的,为了保证算法对含有不同浓度的雾图像能有好的效果,我们对无雾图像集添加了不同浓度的雾,得到有雾图像集;

训练样本达到1450对有雾图像和无雾图像,测试样本有302对有雾图像和无雾图像;

0046将训练样本和测试样本分别裁剪成29*29和25*25的图像块,

将训练样本和测试样本的图像块转换成HDF5的数据格式,便于训练;

步骤(3)将HDF5格式的训练样本和测试样本的R,G,B三通道图像同时输入至卷积神经网络,本算法卷积神经网络的结构如图2所示;

步骤(4)设置好网络的学习率和动量参数,利用caffe训练上述卷积神经网络,直至代价损失减小到一定程度且训练达到迭代最大次数,生成训练模型;

步骤(5)将有雾图像输入至训练好的模型中,输出无雾图像;

上述去雾算法中,步骤(2)所述的对无雾图像集进行软件加雾生成训练样本和测试样本通过如下步骤实现:

(2.1)步骤(1)中的无雾图像集包含了室内室外各种场景,由于现实中很难获得同一场景不同天气条件下的图像对,且现在基于学习的图像去雾算法大都是通过深度图经由大气散射模型,随机设置参数人工合成;

大气散射模型公式为I=J·t+A(1-t);

网络输入有雾图像,输出有雾图像透射率,然后再经过逆推计算出无雾图像,即

(2.2)为了能够简化此过程,使得本方法能够直接经过网络得到无雾图像。所以就利用Adobe公司的lightroom CC软件的dehaze功能人工的为步骤(1)中的无雾图像集加雾,为了能够适应不同天气条件下的雾浓度,学习到不同雾浓度图像的特征,对无雾图像集合成了浓度分别为10,20,30,40,50,60,70,80,90,100的有雾图像集;

(2.3)挑选有雾图像和无雾图像1450对作为训练样本,剩余302对作为测试样本;

(2.4)再将训练样本和测试样本转换为HDF5格式作为网络输入;

去雾算法中,步骤(3)所述的卷积神经网络结构包括五个部分共十层网络,具体为:

(3.1)第一部分:特征提取。该部分由一层卷积网络构成,包含56个5*5的高斯滤波器,pad设置为0。输入的每一个有雾图像块与所有滤波器进行卷积,每一个输入图像块被一个高维特征向量所代表;

(3.2)第二部分:维度收缩。该部分由一层卷积网络构成,包含12个1*1的高斯滤波器,pad设置为0。由于第一层得到的高维特征向量维度非常高,会导致下一层的计算复杂度大,考虑到这,维度收缩层用来降低特征向量维度;

(3.3)第三部分:非线性映射。该部分由六层卷积网络构成,每一层都包含12个3*3的高斯滤波器,pad设置为1。该部分滤波器的个数和网络的层数都是影响最后效果的重要因素。

(3.4)第四部分:维度扩展。该部分由一层网络构成,包含56个1*1的高斯滤波器,pad设置为0。该部分可以看做是第二部分的逆过程,第二部分维度收缩是为了降低计算复杂度,如果我们直接从这些低维度的特征向量中恢复出无雾图像,效果不好,所以这一部分将低维度特征向量扩展到高维度,保存细节特征。

(3.5)第五部分:反卷积。该部分由一层网络构成,因为输出也要是财社图像,所以用3个5*5的高斯滤波器,pad设置为2。该部分主要利用一组反卷积高斯滤波器来聚合先前的特征向量,恢复出无雾图像。

(3.6)每一个卷积网络层后面都会跟着一个激活函数层,这里我们选用参数修正线性单元PReLU(Parametric Rectified Linear Uint)。

激活函数可以被定义为f(xi)=max(xi,0)+ai·min(0,xi)。

上述去雾算法中,步骤(4)所述的训练过程为:

(4.1)网络结构确定以后,将训练样本和测试样本输入上述卷积神经网络;

(4.2)因为输入有雾图像和输出无雾图像都是彩色的,三个通道同时做比较,loss比单个通道比较要大三倍,所以讲学习率设置的相对较小0.00005,防止不收敛,设置每十万次迭代,学习率变为原来的0.8倍;动量参数设置为0.9。最大迭代次数设置为100万次;

(4.3)进行训练,得到无雾图像和有雾图像之间的映射关系;

图3(a)(c)为有雾图像,(b)(d)为利用本算法去雾后的图像;

本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1