本发明属于图像处理以及深度学习,具体涉及一种基于深度学习的轻量级图像去雨算法。
背景技术:
1、降雨作为一种常见的天气现象,会对我们在自然条件下拍摄的视频或图像造成视觉上的退化,雨纹显著降低了图片的能见度以及对比度。降雨不仅会严重影响人类的视觉感知系统,还会对诸多高水平的视觉任务,如目标检测、图像分割、目标跟踪等产生不利的影响,这些视觉任务大多都假设天气晴朗,不受降雨的影响,使用干净的户外自然图像作为输入,而恶劣环境中得到的图片会出现颜色失真、纹理模糊、对比度降低、非均匀光照等图像质量退化的问题,这会严重影响计算机视觉算法的性能。因此在各种视觉任务中去除单幅图像中的雨条纹是一个重要的问题,而去雨作为上述系统的预处理步骤已经得到了广泛的研究。
2、目前已经有各种去除雨纹的算法出现,大多数现有的基于深度学习的去雨模型都是通过加深网络深度来提高模型的性能,这已经被证明是一种有效的提升网络性能的方法,但单纯的加深网络的深度会使模型存在大量参数冗余的问题,这就限制了去雨模型在实际存储资源受限场合中的应用,因此,在图像去雨领域,如何在保持较好去雨效果的同时,尽可能使模型轻量化,提升处理速度,一直是一个研究热点。前人已经提出了许多处理小雨条纹的方法,并且效果都非常好,但这些方法无法充分的处理大雨条件下拍摄的图像,文章“clearing the skies:a deep network architecture for single-image rainremoval”首先设计了一个基于cnn的derainnet,它从数据中自动学习干净图像和有雨图像之间的非线性映射函数,为了提高图像恢复的质量,作者还引入了图像处理领域的知识,受到深度残差网络“deep residual learning for image recognition”巨大成功的激励,文章“removing rain from single images via a deep detail network”进一步提出了深度细节网络(dnn)去除雨纹,该网络仅将高频细节作为输入,并预测雨水残留和干净图像,研究表明,去除网络输入中的背景信息是有益的,这样可以使训练更容易、更稳定,然而该方法不能处理大而尖锐的雨纹。由于单个网络可能无法学习训练样本中的所有模式,文章“density-aware single image de-raining using a multi-stream dense network”进一步提出了一种使用多流密集网络(did-mdn)的密集感知图像去训练方法,通过整合残差感知分类过程,did-mdn可以自适应地确定雨密度信息(重/中/轻),但该模型过于复杂,无法保证去雨的实时性,影响后续视觉任务的性能。为了缓解这一问题,文章“progressiveimage deraining networks:a better and simpler baseline”通过反复展开带有复发层的浅层resnet,提出了一种简单有效的渐进周期性去雨网络(prenet),但该方法存在一个主要问题,忽略了大区域的上下文信息。
3、为了设计出一个能够保持现有的小雨条纹去除效果,提升大雨条纹去除效果的轻量级去雨模型,本发明在prenet模型的基础上,引入空洞卷积以及混合空洞卷积hdc(hybrid dilated convolution)方法,保证去雨的实时性,并提升去除大雨条纹的效果。
技术实现思路
1、本发明的目的在于提供一种基于深度学习的轻量级图像去雨算法,能保持现有小雨条纹去除效果,并提升大雨条纹去除效果的轻量级去雨模型,同时保证去雨的实时性。
2、为实现上述目的,本发明提供以下技术方案:一种基于深度学习的轻量级图像去雨算法,包括以下步骤:
3、s1:在大雨数据集raintrainh上进行研究,并对大雨数据集raintrainh进行预处理操作;
4、s1-1:剔除大雨数据集raintrainh中图片背景与验证集中的图片背景内容相同的图片,将剩余的有雨图片作为训练集;
5、s1-2:选择rain100h大雨数据集作为验证集;
6、s2:在pytorch深度学习框架的基础上,搭建prenet模型,并对其进行改进;
7、s2-1:将原模型中的resblock中包含的2个普通的卷积层均替换为空洞卷积;
8、s2-2:对空洞卷积设置满足混合空洞卷积特性的空洞率;
9、s3:对模型进行训练,在处理好的raintrainh数据集上,使用sgd方法进行多轮训练;
10、s3-1:在搭建好的网络模型上,使用随机梯度下降法对模型进行训练;
11、s3-2:对混合空洞卷积设置不同的满足要求的空洞率,再次进行训练,直至得到最好的效果;
12、s4:在rain100h大雨数据集上对训练好的模型进行验证,得到最终结果;
13、s4-1:若此次实验结果差于上次实验结果,则继续调整空洞率并对模型进行训练和验证。
14、s4-2:对模型进行反复训练和验证,直到获得较好的去雨效果;
15、s5:调整好模型之后,将该模型在小雨数据集raintrainl上进行训练和在小雨数据集rain100l上进行验证。
16、为进一步利于模型训练,对所述训练集中的图片与所述验证集中的图片均进行调整尺寸操作,重置其尺寸为128*128像素。
17、为进一步提升去雨效果,所述prenet模型改进内容具体如下:
18、1)所述prenet模型由6个阶段组成,每个阶段的网络结构均相同,且这6个阶段共享相同的网络参数,以减少模型的参数数量,并且逐个阶段去雨的方法有利于大雨条纹的去除,每个阶段由四个部分组成,分别是fin层、frecurrent层、fres层、fout层;
19、2)输入输出:第一个阶段的输入是两张原始雨图像级联的结果,后面每一阶段的输入都是阶段结果和原始雨图像的级联结果。每一阶段的输出为下列表达式的结果:
20、xt-0.5=fin(xt-1,y)
21、st=frecurrent(st-1,xt-0.5)
22、xt=fout(fres(st))
23、其中,xt-1为上一阶段的输出结果,y为原始雨图像,fin为输入卷积层,xt-0.5为该阶段fin层的输出结果,frecurrent为lstm层,st-1为上一阶段frecurrent层的输出结果,st为该阶段frecurrent的输出结果,fres为resblocks层,fout为输出卷积层,xt为该阶段输出结果;
24、3)fin层:fin是一个带有relu函数的一层卷积,过滤器大小为3*3,补丁大小为1*1,输入为6通道,输出为32通道;
25、4)frecurrent层:长短期记忆(lstm)是一种特殊的循环神经网络(rnn),主要用于解决长序列训练过程中的梯度消失和梯度爆炸问题,通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息。其中,lstm层的输入和输出均为32通道;
26、5)fres层:fres是提取雨条纹深度表示的关键部分,包含5个resblocks,5个resblocks共享所有参数,原模型中的每个resblocks包含两个普通卷积层,每个卷积层后都跟有一个relu函数;经过研究发现,空洞卷积可以在不丢失任何分辨率的情况下系统地聚合多尺度上下文信息,这有利于大雨条纹的去除,并且不需要额外的参数,可以保证网络的速度,因此,将原模型中resblocks里的两个普通卷积层换成两个空洞卷积层;将空洞卷积引入模型后,会出现“网格伪影”,针对这个问题,采用混合空洞卷积(hdc)来解决,空洞卷积需满足三个条件:
27、
28、设计目标是让mi<=k,其中,k是卷积核尺寸,本发明中为3;n为空洞卷积的个数,本发明中为5;ri第i个空洞卷积的空洞卷积率dilation rate。
29、经过多组试验后发现,5个resblocks里的空洞卷积分别设置为1、2、5、1、2,且每个resblocks里2个空洞卷积的卷积率相同,可得到最好的去雨效果,每个卷积层的输入输出均为32通道;
30、6)fout层:fout与fin层结构相同,也是一个带有relu函数的一层卷积,过滤器大小为3*3,补丁大小为1*1,输入为6通道,输出为32通道。
31、为进一步提升去雨效果,所述s3中,对模型进行训练的具体方式如下:
32、1)将训练的轮次(epoch)设置为200,批大小(batch_size)设置为20;
33、2)将初始学习率设置为0.001,当分别达到30、50、80轮之后学习率均要乘以0.2;
34、3)选用负ssim损失作为模型的损失函数。
35、有益效果:
36、本发明主要用于图像去雨,解决雨天拍摄的图像的去雨问题以及背景恢复问题。提出一种基于prenet模型的轻量级图像去雨方法,以prenet模型为基础,改进其网络结构,在保证去雨实时性的同时,获得更好的去雨效果。针对prenet存在的背景误删问题,引入了空洞卷积(dilated convolution),它可以在不丢失任何分辨率的情况下系统地聚合多尺度上下文信息,并且不需要额外的参数,可以保证网络的速度;针对空洞卷积带来的网格伪影(gridding artifacts)问题,采用混合空洞卷积hdc(hybrid dilated convolution)来解决。本发明可以在保证较好的小雨雨条纹去除效果的同时,提升大雨雨条纹的去除效果。