计算机系统应用  2023, Vol. 32 Issue (10): 201-207   PDF    
基于膨胀腐蚀卷积块的单幅图像去雨算法
李延恺, 吴向东, 吴甜甜     
长安大学 信息工程学院, 西安 710018
摘要:成像设备在雨天拍摄图像时由于雨雾和雨条纹的存在会导致图像质量严重退化, 对后续图像处理性能造成极大影响. 因此, 图像的去雨算法研究引起了广泛关注, 其中针对单幅图像的去雨算法由于没有先验知识的支持, 面临较大挑战. 近年来, 深度学习因其高特征表示能力被应用在图像去雨算法研究中. 本文基于小波变换, 采取了一种深度学习与数字图像形态学处理相结合的算法来实现单幅图像去雨, 具有训练参数少、训练时间短和去雨效果好等优点. 首先对含雨图像进行小波变换, 分为低频分量、水平高频分量、垂直高频分量和对角高频分量, 然后对这4个分量分别构造深度学习神经网络, 并在神经网络架构中根据雨的特征加入图像膨胀、腐蚀等形态学处理来进行去雨操作, 大大简化了模型架构, 并能取得较好的结果.
关键词: 单幅图像去雨    小波变换    形态学处理    神经网络    
Rain Removal Algorithm for Single Image Based on Expansive Corrosion Convolution Block
LI Yan-Kai, WU Xiang-Dong, WU Tian-Tian     
School of Information Engineering, Chang’an University, Xi’an 710018, China
Abstract: When imaging equipment takes images on rainy days, the image quality will be seriously degraded due to the existence of rain fog and rain stripes, which will greatly affect the subsequent image processing performance. Therefore, the research on image rain removal algorithms has attracted wide attention, and the rain removal algorithm for a single image is facing great challenges because it is not supported by prior knowledge. In recent years, deep learning has been applied to the research on image rain removal algorithms because of its high feature representation ability. In this study, based on wavelet transform, an algorithm combining deep learning with morphological processing of digital images is adopted to remove rain from a single image, which has the advantages of a few training parameters, short training time, and good rain removal effects. Firstly, the image containing rain is decomposed into a low-frequency component, horizontal high-frequency component, vertical high-frequency component, and diagonal high-frequency component by wavelet transform. Then, the four components are constructed into deep learning neural networks respectively, and morphological processing such as image expansion and corrosion is added to the neural network architecture according to the rain features to remove rain, which greatly simplifies the model architecture and can achieve good results.
Key words: single-image rain removal     wavelet transformation     morphological processing     neural network    

1 介绍

雨、雾、雪等恶劣天气是自然中很常见的天气状况, 在这些天气条件下, 计算机视觉系统会受到极大的影响. 雨、雪、雾会导致图像采集设备采集到的图像面临较大退化, 例如雨条纹、雨雾等的出现, 会导致图像背景物被遮挡、对比度下降等问题, 对后续的目标检测、模式识别等任务都造成较大影响, 因此图像去雨显得格外重要, 如图1所示. 图像去雨算法可以分为基于视频图像的去雨算法和基于单幅图像的去雨算法[1], 基于视频的图像去雨算法可以利用帧与帧之间的冗余信息作为先验知识进行去雨和场景恢复, 而基于单幅图像的去雨由于没有先验知识可以利用, 面临较大挑战. 本文主要研究基于单幅图像的去雨算法.

在去雨过程中, 雨图可以被一个线性物理模型表示为背景图和各个雨层之间的和, 用式(1)表示:

$ O = B + \displaystyle\sum\limits_{i = 0}^n {{R_i}} $ (1)

其中, $ O $ 表示输入的含雨图像, $ B $ 表示真实背景图, $ {R_i} $ 表示第 $ i $ 个雨层. 去雨可以看作是从含雨图像 $ O $ 中去除各个雨层 $ {R_i} $ 得到真实背景图 $ B $ , 由于没有先验知识支撑, 我们只获得了含雨图 $ O $ , 则背景图 $ B $ 有无穷多解, 这是一个病态方程求解问题.

图 1 图像去雨对目标检测作用

为了解决这个问题, 很多算法为单幅含雨图像构建合适的物理模型作为先验知识进行约束求解无雨图. 例如图像分解[2]、高斯混合模型[3]和低秩表示[4]等, 这些物理模型建立假设雨层是线性可分解的, 各个雨条纹之间有较大的相似性, 为解决单幅图像去雨问题提供了可能.

近年来, 深度学习以其自身强大的学习能力和特征表征能力被应用到单幅图像去雨问题中. 例如卷积神经网络(CNN)进行去雨[5]、生成对抗网络(GAN)进行去雨[6]等, 这些深度学习网络通过构建相应的网络模型, 经过大量样本训练, 使网络自主识别图片中的雨条纹信息和背景细节信息. 然后网络对雨条纹信息进行抑制, 对背景细节信息进行扩张表征以达到去除雨雾并保留背景效果的目的.

然而, 基于物理模型的去雨算法因为其简单的线性关系和稀疏矩阵的表示方法仅适用于雨条纹方向和大小相似的情况下, 对于复杂背景下的雨条纹、雨雾和背景信息的处理结果不尽人意. 基于深度学习的方法大都没有与雨图的物理模型相结合, 想要出现较好的结果, 必须加深网络深度, 增大网络模型架构. 这就必然导致了模型训练参数过多, 在测试时耗时较长, 不具备实时性处理要求.

为了解决这些问题, 本文提出了一个单幅图像去雨算法, 该算法首先对含雨图像进行小波变换, 然后结合雨图的形成特征, 在深度学习神经网络学习的过程中, 加入了膨胀卷积块(DCB)和腐蚀卷积块(CCB)来替代全神经网络模型进行监督训练. 总的来说, 本篇论文算法包括以下几部分.

对获取的图像进行小波变换分解, 将原始雨图分为低频分量、水平高频分量、垂直高频分量和对角高频分量, 对不同分量做不同处理, 再投入不同网络中进行训练.

针对雨图特征, 运用数字图像处理技术构建出膨胀卷积块、腐蚀卷积块来代替全卷积网络结构, 缩小了网络模型, 减少了网络模型参数, 加速模型训练.

本文提出的算法在减小网络模型架构的同时, 在现实含雨图像中能表现较好的结果.

2 相关工作

在本节将要介绍现有的基于物理模型先验和深度学习的一些详细去雨方法.

基于物理模型先验的去雨方法有: Kang等人[2]首先利用图像分解算法, 将原图像分成高频层和低频层, 然后用稀疏矩阵表示高频层中的雨条纹以达到去雨的目的. Li等人[3]建立基于补丁先验的高斯混合模型来区分雨条纹和背景细节, 然后达到去雨的目的. Chen等人[4]通过观察雨条纹构成原理假设雨条纹是低秩的, 然后将雨条纹用一个低秩模型来拟合, 达到去雨的目的. Luo等人[7]在将雨条纹和背景细节通过使用判别稀疏矩阵来分离, 在去除雨条纹的同时保留了细节. 杨蕾蕾等人[8]针对现有去雨算法存在去雨过度化、丢失细节信息的问题, 提出基于滚动导向滤波的单幅图像去雨算法. 试验结果表明, 此方法不仅可以显著保持去雨图像的结构信息与纹理细节, 还能够大幅提升去雨图像的主观视觉效果与客观评价指标.

基于深度学习的去雨方法有: Sun等人[5]提出一种使用卷积神经网络来去除雨雾联合情况的算法, 取得较好的结果. Zhang等人[6]使用生成对抗网络, 通过生成器与判别器之间的博弈, 使生成器最终生成无雨图像. Xia等人[9]结合SE-Net, 将含雨图分为多个层, 包括背景层和各个雨层, 为每层分配不同权重, 再结合上下文信息, 达到去雨和背景保留的效果. Li等人[10]结合了图像大气光模型和深度学习, 为含雨图像训练无雨图像条件下的大气光常数、透射率等, 然后借助物理模型恢复无雨雾图像, 该算法对雨雾联合情况去除效果较好. 周进祥等人[11]将含雨图片所有像素点视为一个图节点, 计算相邻像素点之间的相似度, 根据设定的阈值判断有无边联系, 完成图结构构建后, 所得到的邻接矩阵与相似度矩阵会在卷积操作时对卷积核参数做调整, 充分考虑像素点之间的联系与提取拓扑信息来进行去雨操作, 该方法充分考虑了雨滴之间的相似性, 去雨性能较优.

3 本文工作

在本节将要详细介绍本文提出算法的模型框架和模型细节, 包括数据预处理、深度网络学习模型架构、膨胀卷积块(DCB)和腐蚀卷积块(CCB)等.

3.1 整体网络模型架构

图2所示, 其为本文算法模型的整体架构. 本文的网络架构主要包括4个部分: 低频网络、水平高频网络、垂直高频网络和对角高频网络[12], 每个网络根据雨图分解出来的分量特征采取不同的膨胀腐蚀卷积核对分量进行处理. 为了避免膨胀腐蚀卷积块在一次操作之后将雨条纹信息忽略掉或者将细节信息抑制掉, 每个膨胀腐蚀卷积块中还加入了跳跃连接[13]和残差连接[14], 以扩大卷积网络的感受野. 每个网络输出与对应无雨图的分量采用L1范数进行约束, 针对不同的分量设置不同的损失值因子构成总损失值来训练整个网络, 以达到更优的效果.

图 2 网络模型图

3.2 图像小波变换

图像经过小波变换会获得低频子图像、水平高频子图像、垂直高频子图像和对角高频子图像[15]. 图像的高频信息代表的是像素值发生突变的区域, 像素值发生突变可能代表的是雨条纹的出现, 也有可能代表的是边缘细节信息; 图像的低频信息代表的是像素值相近的区域, 代表的是图像真实背景. 对图像进行小波变换可以初步分离出背景信息和雨条纹, 针对细节和雨条纹的分离, 需要在后续处理中进行, 分解效果如图3所示.

图 3 小波变换效果图

3.3 膨胀卷积块(DCB)

膨胀操作属于数字图像处理中的形态学处理[16], 它也可以看作一个滤波器, 对图像进行膨胀操作可以延展图像边缘, 这种特性可以解决图像去除雨条纹之后所留空缺部分的填充问题. 与自主学习的滤波器参数不同, 该处理方法大大缩小了训练的参数量, 并能根据缺失像素点的周围值进行补充. 根据雨条纹的表现特征(多为垂直高频表征和少部分对角高频表征), 对小波变换后的水平高频分量和对角高频分量采取膨胀卷积块操作可以更好保留和扩展原图中的背景细节信息. 图4展示了DCB的详细结构图, 具体实现式(2)、式(3)的功能.

$ {y_i} = dilat{e_i}(X), \; i = 0, 1, 2 $ (2)
$ {\textit{z}} = H(cat[{y_0}, {y_1}, {y_2}] + X) $ (3)

其中, $ dilat{e_i} $ 表示第 $ i $ 个膨胀核, $ H $ 表示卷积操作.

图 4 膨胀卷积块(DCB)架构图

3.4 腐蚀卷积块(CCB)

腐蚀操作也属于数字图像处理中的形态学处理[16], 对图像进行腐蚀操作可以使边缘细化, 去除不必要的细节信息[17]. 利用这一特点, 可以将其应用在雨条纹去除操作中, 而雨条纹大多存在于小波变换后的垂直高频分量上和少部分对角高频分量上. 对小波变换后的垂直高频分量加入腐蚀操作, 可以去除或者细化大部分雨条纹; 为了避免腐蚀掉对角高频分量中的背景细节信息, 先对对角高频分量采取膨胀卷积块处理, 再运用腐蚀卷积块进行处理, 这样既能在保留对角高频细节信息的情况下, 最大限度去除对角上的雨条纹. 图5展示了CCB的详细结构图, 具体实现式(4)、式(5)的功能.

$ {y_i} = corrod{e_i}(X),\;i = 0, 1, 2 $ (4)
$ {\textit{z}} = H(cat[{y_0}, {y_1}, {y_2}] + X) $ (5)

其中, $ corrod{e_i} $ 表示第 $ i $ 个膨胀核, $ H $ 表示卷积操作.

图 5 腐蚀卷积块(CCB)架构图

3.5 损失函数

通过对含雨图的每一个分量定义1范数损失函数, 并结合每种分量对于去雨效果的影响, 给每种损失函数加入不同的损失因子, 以构成总的损失值, 在网络训练中以降低总的损失值来训练网络参数.

对于小波变换后的低频分量定义损失函数:

$ Los{s_l} = {\left\| {{R_l} - {B_l}} \right\|_1} $ (6)

其中, $ {R_l} $ 表示训练有雨图的低频分量, $ {B_l} $ 表示对应真实无雨图的低频分量.

对于小波变换后的水平高频分量定义损失函数:

$ Los{s_h} = {\left\| {{R_h} - {B_h}} \right\|_1} $ (7)

其中, $ {R_h} $ 表示训练有雨图的水平高频分量, $ {B_h} $ 表示对应真实无雨图的水平高频分量.

对于小波变换后的垂直高频分量定义损失函数:

$ Los{s_{{v}}} = {\left\| {{R_{{v}}} - {B_{{v}}}} \right\|_1} $ (8)

其中, $ {R_v} $ 表示训练有雨图的垂直高频分量, $ {B_v} $ 表示对应真实无雨图的垂直高频分量.

对于小波变换后的垂直高频分量定义损失函数:

$ Los{s_{{d}}} = {\left\| {{R_{{d}}} - {B_{{d}}}} \right\|_1} $ (9)

其中, $ {R_d} $ 表示训练有雨图的垂直高频分量, $ {B_d} $ 表示对应真实无雨图的垂直高频分量.

因为低频分量对最终无雨效果图的复原影响最大, 所以其损失权重 $ \alpha $ 设为0.5; 水平高频分量中包含雨条纹较少, 所以其损失权重 $ \beta $ 设为0.1; 垂直高频分量中包含雨条纹数量最多, 所以其损失权重 $ \gamma $ 设为0.2; 对角高频分量中包含一定量的雨条纹, 所以其损失权重 $ \lambda $ 设为0.2.

综上, 该网络模型的总损失值 $ Los{s}_{总} $ 可以用式(10)表示:

$ Los{s}_{总}=\alpha Los{s}_{l}+\beta Los{s}_{h}+\gamma Los{s}_{v}+\lambda Los{s}_{d} $ (10)
4 实验结果

在本节中将详细介绍网络模型的训练以及测试结果, 并与已提出的网络模型进行性能比较. 本文网络训练是使用合成数据集进行训练、测试, 然后使用真实场景下的雨图进行去雨处理, 检验模型性能, 并与DCS、LP、JORDER、DDN、RESCAN等网络模型进行效果比较.

4.1 实验设置

合成数据集: 本文使用的是Rain100H数据集, 该数据集包含了不同方向、不同大小的雨条纹情况. 有150幅有雨图和对应无雨图的图像对进行训练, 11幅有雨图和对应无雨图的图像对进行测试, 81幅有雨图和对应无雨图的图像对进行交叉验证.

真实场景图片: 本文还将真实世界含雨图投入训练好的网络模型中进行去雨操作, 获得了较好的视觉效果.

训练设置: 为了扩充实验数据样本, 我们将合成数据集中的图片随机裁剪成200×200大小的有雨图和无雨图图像对, 这样保证了训练、测试和交叉验证的数据样本个数. 考虑到运算平台的算力, 每个batch大小设为16. 对于除最后一层外的每个卷积层都使用了α=0.2的leakyReLU. 使用ADAM算法[18]作为优化器优化模型参数, 初始学习率为 $ 5 \times {10^{ - 4}} $ , 在第1 200个epoch和第1 600个epoch以1/10的速率更新, 总训练epoch为2 000次. 该模型是基于PyTorch在2个Nvidia RTX 3070Ti GPU上训练.

评价指标: 我们使用峰值信噪比(PSNR)、结构相似度(SSIM)以及测试时长来评估恢复结果的质量与真实无雨图像的比较以及处理的实时性. PSNR和SSIM只计算合成数据集, 因为在计算过程中不仅需要模型处理后的无雨图像, 还需要相应的真实无雨背景图像. 对于现实世界的图像, 它们大多数只能通过主观视觉比较来进行评估[19]. 本文为了证明我们的图像去雨方法将有利于户外真实场景下的计算机视觉应用, 我们还使用谷歌视觉API目标识别系统来定性评估我们的结果[20].

4.2 在数据集中的结果

表1展示了Rain100H数据集在5种模型和本文模型之间的性能比较. 共有2种基于传统的去雨方法: LP[3]、DSC[7], 以及3种基于深度学习方法: RESCAN[9] 、JORDER[21]、DDN[22]. 正如表1中所示, 本文提出的算法在某些性能上优于上述算法.

表 1 不同算法性能比较

为了直观表示模型的去雨效果, 图6展示了多张真实雨图片的去雨效果图, 根据图中所示, 我们的模型可以很好去除图片中垂直的雨条纹以及斜着的雨条纹, 具备一定的去雨效果.

为了客观评价真实场景下的含雨图片的去雨效果, 我们引入了Google的目标检测模型API对去雨前后的图片目标进行检测来衡量去雨效果. 图7展示了多张真实雨图片去雨前后的目标检测效果对比图.

图 6 真实场景下模型去雨效果图

图 7 去雨前后目标检测效果图

图 7 去雨前后目标检测效果图(续)

5 总结与展望

在本文提出的算法中, 为了满足去雨的实时性要求, 使用了膨胀卷积块(DCB)和腐蚀卷积块(CCB)对含雨图像小波变换后的不同分量进行操作, 而不是像其他网络模型一样采取全卷积模型. 这样大大缩小了去雨神经网络模型框架, 减少了学习参数, 在图片实时去雨时缩减了模型加载时间. 本文算法在单幅图像去雨上取得了一定的效果, 但是对去雨后的背景细节信息刻画并不细致, 希望在后续研究中优化模型, 在去雨的同时能够更好地保留细节信息.

参考文献
[1]
李耀维. 单幅雨天图像去雨方法研究[硕士学位论文]. 西安: 西安理工大学, 2018.
[2]
Kang LW, Lin CW, Fu YH. Automatic single-image-based rain streaks removal via image decomposition. IEEE Transactions on Image Processing, 2012, 21(4): 1742-1755. DOI:10.1109/TIP.2011.2179057
[3]
Li Y, Tan RT, Guo XJ, et al. Rain streak removal using layer priors. Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas: IEEE, 2016. 2736–2744.
[4]
Chen YL, Hsu CT. A generalized low-rank appearance model for spatio-temporally correlated rain streaks. Proceedings of the 2013 IEEE International Conference on Computer Vision. Sydney: IEEE, 2013. 1968–1975.
[5]
Sun H, Ang MH, Rus D. A convolutional network for joint deraining and dehazing from a single image for autonomous driving in rain. Proceedings of the 2019 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). Macau, China: IEEE, 2019. 962–969.
[6]
Zhang H, Sindagi V, Patel VM. Image de-raining using a conditional generative adversarial network. IEEE Transactions on Circuits and Systems for Video Technology, 2020, 30(11): 3943-3956. DOI:10.1109/TCSVT.2019.2920407
[7]
Luo Y, Xu Y, Ji H. Removing rain from a single image via discriminative sparse coding. Proceedings of the 2015 IEEE International Conference on Computer Vision (ICCV). Santiago: IEEE, 2015. 3397–3405.
[8]
杨蕾蕾, 吐尔洪江·阿布都克力木. 基于滚动导向滤波的单幅图像去雨算法. 河南科技, 2021, 40(20): 24-26. DOI:10.3969/j.issn.1003-5168.2021.20.016
[9]
Xia L, Wu JL, Lin ZC, et al. Recurrent squeeze-and-excitation context aggregation net for single image deraining. Proceedings of the 15th European Conference on Computer Vision. Munich: Springer, 2018. 262–277.
[10]
Li R, Cheong LF, Tan RT. Heavy rain image restoration: Integrating physics model and conditional adversarial learning. Proceedings of the 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). Long Beach: IEEE, 2019. 1633–1642.
[11]
周进祥, 李志伟, 邱火旺, 等. 基于图网络的改进卷积单幅图像去雨算法. 激光与光电子学进展, 2023, 60(4): 222-228.
[12]
袁国铭, 杨光, 王金峰, 等. 由粗到细的多级小波变换水下图像增强. 光学 精密工程, 2022, 30(22): 2939-2951.
[13]
罗昊. 基于多尺度内容自适应的单幅图像去雨算法研究[硕士学位论文]. 成都: 电子科技大学, 2021.
[14]
He KM, Zhang XY, Ren SQ, et al. Deep residual learning for image recognition. Proceedings of the 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas: IEEE, 2016. 770–778.
[15]
Zhu XZ. The application of wavelet transform in digital image processing. Proceedings of the 2008 International Conference on MultiMedia and Information Technology. Three Gorges: IEEE, 2008. 326–329.
[16]
Ukani N, Mehta H. An accurate method for license plate localization using morphological operations and edge processing. Proceedings of the 3rd International Congress on Image and Signal Processing. Yantai: IEEE, 2010. 2488–2491.
[17]
李金山. 彩色图像形态学算法研究及FPGA实现[硕士学位论文]. 西安: 西安电子科技大学, 2021.
[18]
Kingma DP, Ba LJ. Adam: A method for stochastic optimization. Proceedings of the 3rd International Conference on Learning Representations (ICLR). Ithaca, 2015.
[19]
陈舒曼, 陈玮, 尹钟. 单幅图像去雨算法研究现状及展望. 计算机应用研究, 2022, 39(1): 9-17.
[20]
胡明娣, 吴怡, 宋尧, 等. 单幅图像去雨数据集和深度学习算法的联合评估与展望. 中国图象图形学报, 2022, 27(5): 1359-1391. DOI:10.11834/j.issn.1006-8961.2022.5.zgtxtxxb-a202205003
[21]
Yang WH, Tan RT, Feng JS, et al. Deep joint rain detection and removal from a single image. Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Honolulu: IEEE, 2016. 1685–1694.
[22]
Fu XY, Huang JB, Zeng DL, et al. Removing rain from single images via a deep detail network. Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017. 1715–1723.