本发明属于图像处理以及深度学习技术领域,特别涉及一种基于深度学习和模型驱动的单图去雨方法。
背景技术:
受雨天的影响,在室外拍摄的图像通常会受到破坏,比如有效的背景和纹理细节会被高亮的雨滴和浓密的雨条遮挡,从而会严重影响到户外视觉任务的性能,比如目标追踪,视频监控和行人检测。因此,图像去雨是一项非常重要的预处理任务,近年来已经受到广泛的关注。特别地,不像是视频去雨任务可以利用多帧图像,由于没有任何帧间的信息可以利用,单张图像去雨是一个更具有挑战性的问题。
目前为止,已有的单图去雨技术大致可以分为三类:基于滤波器的方法,基于传统模型的方法和基于深度学习的方法。基于滤波器的方法将单张雨图通过导向滤波等方式分解为低频部分(背景层)和高频部分(雨层和纹理细节),然后利用雨条的物体特性抽取高频部分的雨层,最后将低频部分和高频的纹理细节融合从而得到重构的去雨图。由于高低频分解的不精准性,该类方法通常导致去雨图丢失部分有效的图像细节。基于传统模型的方法主要通过使用不同的正则项分别刻画背景层和雨层的先验结构,然后利用传统的迭代优化算法获得重构后的背景层和雨层。由于正则项表达的有限性,该类方法通常只能在某些场景下适用。当面对多样的雨图时,由于雨模态分布的复杂性,这些正则项不能再很好地刻画这些雨条的先验分布。另外,由于牵涉到复杂的迭代优化推理计算过程,基于传统模型的方法通常是很费时的,这显然不利于实际应用。最近随着深度学习的快速发展,卷积神经网络也广泛应用到了单图去雨任务中,当前的基于深度学习的方法主要关注设计多样的网络模块,然后利用大量的成对训练样本进行端到端训练这些深度网络架构,从而获得去雨图。相比传统的基于模型的去雨方法,虽然该类方法实现了突出的去雨效果,但仍有一些缺陷。比如,他们设计的网络结构越来越复杂,没有过多地挖掘其结构的合理性和模型含义,而是将其看成是一个封装好的端到端映射模块,因此通常缺乏明显的可解释性。另外,该类方法基本忽略了雨条内在的先验结构,比如稀疏性和局部模式的重复性,因此通常容易遇到样本过拟合问题,其泛化性能是受限的。
技术实现要素:
为了克服上述现有技术的缺点,针对基于滤波器和传统模型的单图去雨技术以及目前基于深度学习的单图去雨技术存在的问题,本发明的目的在于提供一种基于深度学习和模型驱动的单图去雨方法,具有可解释性和良好泛化能力。
为了实现上述目的,本发明采用的技术方案是:
一种基于深度学习和模型驱动的单图去雨方法,包括如下步骤:
步骤1),数据准备阶段:对图像数据进行预处理,得到雨图和对应的干净无雨图;
步骤2),模型建立阶段:根据雨条内在的先验特性,建立单图雨卷积字典模型和相应的优化问题;
步骤3),模型求解阶段:针对步骤2)中的优化问题,利用近端梯度方法设计一个只包含简单运算的迭代求解算法;
步骤4),网络设计阶段:将步骤3)中迭代求解算法的迭代更新过程分解成若干个子迭代步骤,然后将每个子迭代步骤一一对应展开成网络模块,建立单图雨卷积字典网络(rainconvolutionaldictionarynetwork,rcdnet);
步骤5),网络训练阶段:将步骤1)预处理后的雨图传入步骤4)中的雨卷积字典网络进行迭代训练;
步骤6),网络优化阶段:给定训练损失目标函数,通过反向优化算法迭代更新步骤4)中的雨卷积字典网络,使得网络的输出结果逐渐逼近步骤1)预处理后的干净无雨图,当达到设定的迭代次数时,步骤5)和步骤6)终止,保存此时的网络参数,即为训练模型;
步骤7),网络测试阶段:准备待测试的雨图,加载步骤6)中的训练模型,将该雨图输入雨卷积字典网络进行前向计算,网络的输出结果就是该测试雨图对应的去雨图像。
所述步骤1)中图像数据预处理方法为:分别将成对的三通道彩色雨图和干净无雨图的像素数值范围归一化到0~1之间。
所述步骤2)中,单图中雨条对局部模式具有可重复性的结构特性,根据该先验特性,建立单图雨卷积字典模型为:
所述步骤2)中的优化问题为:
其中,
所述步骤3)中迭代求解算法为:利用近端梯度方法交替更新
其中,
对于正则项g1(·),式(2)的解表达为:
其中,
在第s次迭代中,背景层
其中,
其中,
至此,式(3)和式(5)即为所求的迭代更新过程,只包含简单的运算。
所述步骤4)中,通过利用残差网络分别构建更新式(3)和(5)中的近端算子
其中,式(6)为式(3)的分解步骤以完成
根据式(6)和(7),将每个子步骤依次按顺序一一展开成网络模块,分别对应成m-net和b-net,即构成了单图雨卷积字典网络(rainconvolutionaldictionarynetwork,rcdnet)的第s个阶段,m-net表示基于公式(6)构建相应结构的网络模块,b-net表示基于公式(7)构建相应结构的网络模块,整体的rcdnet由s个阶段构成,实现s次
所述步骤5)中训练步骤具体包括:
(1)根据观察到的三通道彩色雨图
(2)将雨图
(3)计算第s个更新阶段b-net输出的去雨图
所述步骤6)中雨卷积字典网络的总训练损失函数为:
其中,λs和γs为折衷参数,分别用来调整对应的平方损失项
所述步骤6)中反向优化算法为:通过随机梯度下降的方式减小总训练损失函数l以优化雨卷积字典网络。
与现有技术相比,本发明具有的有益效果是:本发明通过引入雨条的先验特性,建立了单图雨卷积字典模型并提出一个简单的迭代求解算法,然后将其一一对应展开成网络模块,从而建立了一个单图雨卷积字典网络,该网络具有明显的可解释性和良好的泛化能力,具有很强的实际应用意义。此外,本发明方法可以灵活学习到多样的雨卷积核,为实际中雨条相关的任务提供有用的帮助和指导。
附图说明
图1是基于深度学习的可解释性单图去雨方法的操作流程图。
图2是本发明单图雨卷积字典网络rcdnet整体框图,由s个更新阶段构成。
图3是每个更新阶段下rcdnet对应的网络结构图,依次由m-net和b-net构成。
图4是rcdnet在合成雨图上的网络可视化图;其中,第一排图像为rcdnet在不同的阶段测试得到的去雨图;第二排图像表示在不同的阶段m-net更新过程中得到的去雨图;第三排图像为rcdnet在不同的阶段提取到的雨层;第四排图像从左到右依次表示从合成数据集rain100l上选取的测试雨图,对应的干净无雨图,和rcdnet初始化得到的去雨图。
图5是基于图4第四排的测试雨图,在其上验证rcdnet学到的雨卷积字典rcd模型;其中,第一排是rcdnet抽取的该测试雨图对应的32个雨层,第二排左下角为rcdnet在合成数据集rain100l上学到的雨卷积核
图6是rcdnet在合成雨图上的去雨性能,其中,(a)是来自合成数据集rain100l的测试雨图;(b)是该测试雨图对应的干净无雨图;(c)是rcdnet测试该雨图得到的去雨图像;(d)是rcdnet提取的该测试雨图对应的雨层。
图7是rcdnet在真实雨图上的去雨性能,其中,(a)是来自真实数据集spa-data的测试雨图;(b)是该测试雨图对应的干净无雨图;(c)是rcdnet测试该雨图得到的去雨图像。
图8是rcdnet在真实雨图上的泛化性能,其中,(a)和(c)都是来自真实数据集internet-data的不同测试雨图;(b)和(d)是rcdnet分别测试(a)和(c)得到的对应的去雨图像。
具体实施方式
下面结合附图和实施例详细说明本发明的实施方式。
如图1所示,本发明基于深度学习和模型驱动的单图去雨方法,包括如下步骤:
1)数据准备阶段:对图像数据进行预处理,得到雨图和对应的干净无雨图;
2)模型建立阶段:根据雨条内在的先验特性,建立单图雨卷积字典模型和相应的优化问题;
3)模型求解阶段:针对步骤2)中的优化问题,利用近端梯度方法设计一个只包含简单运算的迭代求解算法;
4)网络设计阶段:将步骤3)中的迭代更新过程分解成若干个子迭代步骤,然后将每个子迭代步骤一一对应展开成网络模块,建立单图雨卷积字典网络(rainconvolutionaldictionarynetwork,rcdnet);
5)网络训练阶段:将步骤1)预处理后的雨图传入步骤4)中的rcdnet进行迭代训练;
6)网络优化阶段:给定训练损失目标函数,通过反向优化算法迭代更新步骤4)中的rcdnet,使得网络的输出结果逐渐逼近步骤1)预处理后的干净无雨图,当达到设定的迭代次数时,步骤5)和步骤6)终止,保存此时的网络参数,即为训练模型;
7)网络测试阶段:准备待测试的雨图,加载步骤6)中的训练模型,将该雨图输入rcdnet进行前向计算,网络的输出结果就是该测试雨图对应的去雨图像。
上述方法中,部分步骤具体如下:
步骤1)中图像数据预处理方法为:分别将成对的三通道彩色雨图和干净无雨图的像素数值范围归一化到0~1之间。
步骤2)中,单图中雨条对局部模式具有可重复性的结构特性,根据该先验特性,建立单图雨卷积字典模型为:
其中,
步骤2)中的优化问题为:
其中,
步骤3)中迭代求解算法为:利用近端梯度方法交替更新
具体地,在第s次迭代中,雨特征层
该近似问题写为:
其中,
对于常见的正则项g1(·),式(2)的解可以表达为:
其中,
在第s次迭代中,背景层
其中,
其中,
至此,式(3)和式(5)即为所求的迭代更新过程,只包含简单的运算。
步骤4)中,通过利用残差网络分别构建更新式(3)和(5)中的近端算子
其中,式(6)为式(3)的分解步骤以完成
在每个更新阶段,
根据式(6)和(7),将其每个子步骤依次按顺序一一展开成网络模块,分别对应成m-net和b-net,即构成了单图雨卷积字典网络(rainconvolutionaldictionarynetwork,rcdnet)的第s个阶段。m-net表示基于公式(6)构建相应结构的网络模块,b-net表示基于公式(7)构建相应结构的网络模块。参考图2,整体的rcdnet是由s个阶段构成,实现s次
步骤5)中训练步骤具体包括:
(1)根据观察到的三通道彩色雨图
(2)将雨图
(3)计算第s个更新阶段,s=1,2,…,s,b-net输出的去雨图
步骤6)中rcdnet的总训练损失函数为:
其中,λs和γs为折衷参数,分别用来调整对应的平方损失项
步骤6)中反向优化算法为:通过随机梯度下降的方式减小总训练损失函数l以优化rcdnet。
基于表1的实验参数设置,本发明方法与其他单图去雨技术的去雨性能比较结果如表2所示,包含四个公开的合成数据集:rain100l,rain100h,rain1400,和rain12,以及一个公开的真实数据集:spa-data,其去雨性能衡量标准是去雨图与干净无雨图之间的峰值信噪比(peak-signal-to-noiseratio,psnr)和结构相相似性(structuresimilarity,ssim)。观察比较结果,可以明显看出:无论是合成数据集上还是真实数据集上,本发明方法的去雨性能远远优于其他技术的实验效果。
表1本发明方法的实验参数设置
表2
表2为当前代表性的5种单图去雨技术和本发明方法在合成数据集和真实数据集上的去雨性能比较,其中,加粗黑体和加粗斜体分别表示第一和第二名。
为验证本发明方法的可解释性,从合成数据集rain100l上任意选择一张测试雨图。
参考图4,其中,第一排图像为rcdnet在不同的阶段测试得到的去雨图;第二排图像表示在不同的阶段m-net更新过程中得到的去雨图;第三排图像为rcdnet在不同的阶段提取到的雨层;第四排图像从左到右依次表示从合成数据集rain100l上选取的测试雨图,对应的干净无雨图,和rcdnet初始化得到的去雨图。
参考图5,其中,第一排是rcdnet抽取的该测试雨图对应的32个雨层,第二排左下角为rcdnet在合成数据集rain100l上学到的雨卷积核
从图4中可以看出,随着更新阶段的增加,rcdnet学习到的背景层逐渐逼近于干净的无雨图,rcdnet提取到的雨层包含更少的背景纹理同时涵盖更多的雨条。这正是本发明的深度学习和模型驱动方法共同促进所带来的有益效果。从图5中可以看出,本发明方法学习到了多样的雨卷积核和雨特征层,很好地表达了雨条的先验特性。
视觉上,rcdnet在合成雨图上和真实雨图上的去雨效果如图6和图7所示。参考图6,其中,(a)是来自合成数据集rain100l的测试雨图;(b)是该测试雨图对应的干净无雨图;(c)是rcdnet测试该雨图得到的去雨图像;(d)是rcdnet提取的该测试雨图对应的雨层。参考图7,其中,(a)是来自真实数据集spa-data的测试雨图;(b)是该测试雨图对应的干净无雨图;(c)是rcdnet测试该雨图得到的去雨图像。
图8是rcdnet在真实雨图上的泛化性能,其中,(a)和(c)都是来自真实数据集internet-data的不同测试雨图;(b)和(d)是rcdnet分别测试(a)和(c)得到的对应的去雨图像。图8选用了两张均来自真实数据集internet-data的具有不同雨模态的测试雨图。从中可以明显看出,本发明方法具有突出的去雨性能、明显的可解释性和良好的泛化能力。
本发明利用合成数据集和真实数据集对当前具有代表性的单图去雨技术以及本发明方法的去雨性能进行了公平定量对比,并且对本发明方法的可解释性和泛化性分别进行了可视化验证和去雨效果展示,充分证实了本发明方法的去雨优势和合理可行性,具有较强的实际应用意义。