第1章 基于UNet的图像去雾算法

1.1 引言

大气中存在烟雾、粉尘等颗粒,光遇到这些颗粒时会发生折射和散射等现象[1-3],这使得在大气中拍摄的图像经常出现色彩失真、低对比度和模糊等情况[4-5]。这些低质量的图像将进一步影响其他高级视觉任务,如目标检测和分类[6],而去雾任务就是将有雾的图像恢复成干净清晰的图像。近几十年来,去雾任务作为高级视觉任务的预处理步骤越来越受到研究人员的关注[7-8]

传统的去雾方法主要利用先验知识进行去雾,如 He 等人[9]提出的暗通道先验(Dark Channel Prior,DCP)方法。该方法的先验知识是雾图中总有一个灰度值很低的通道,首先基于这个先验知识求解传输图,然后利用大气散射模型进行图像去雾。DCP 方法在当时取得了较好的去雾效果,但在某些场景下会引起颜色失真。Meng等人[10]提出了一种有效的正则化方法来去雾,该方法首先对传输函数的固有边界进行约束,再将该约束与基于 L1 范数的加权上下文正则化结合。这种基于边界约束的去雾方法能解决去雾图像亮度偏低的问题。Zhu 等人[11]提出了颜色衰减先验(Color Attenuation Prior,CAP)方法,该方法首先建立雾图深度的线性模型,并采用有监督学习的方法学习线性模型中的参数,然后利用线性模型估计传输图并利用大气散射模型得到去雾图像。上述的早期图像去雾方法在某些特定场景下能够取得较好的效果,对去雾技术的发展做出了巨大贡献。但由于这些方法大多数依赖先验知识,并采用人工方式提取雾图中的相关特征,导致传输图和大气光值的估计出现较大误差。因此,传统的去雾方法在很多情况下具有局限性,容易出现去雾不彻底和颜色失真等现象。

随着深度学习的迅速发展,研究人员提出了许多基于深度学习的去雾方法,这类方法大多利用卷积神经网络(Convolutional Neural Network,CNN)来构建可训练的去雾网络。例如,Cai 等人[12]提出了一种名为DehazeNet 的去雾网络,该网络首先通过学习雾图中的特征来估计有雾图像与传输图之间的映射关系,然后根据输入的有雾图像特征得出传输图,最后通过大气散射模型恢复无雾图像。Cai 等人的主要贡献是首次提出了一个端到端的去雾网络。Ren等人[13]提出了一种基于多尺度CNN(Multi-Scale Convolutional Neural Networks,MSCNN)的去雾方法,该方法首先利用大尺度网络估计整体传输图,然后利用小尺度网络进行细化,通过该方法得到的传输图更加真实,在一定程度上避免了细节信息损失。Li等人[14]重新推导了大气散射模型,首先用参数K表示传输图和大气光值,然后设计K估计模型来估计参数K,最后通过参数K 得到去雾图像。上述基于深度学习的方法首先采用 CNN 估计传输图、大气光值和其他中间变量,然后利用大气散射模型去雾。这类方法虽然取得了不错的去雾效果,但实际上把去雾任务分成了两步,不是真正意义上的端到端去雾方法。从单幅雾图中估计传输图和大气光值是非常困难的,为解决该问题,研究人员提出了利用深度卷积神经网络直接或迭代估计无雾图像的方法。这些方法主要采用通用的网络架构来直接估计传输图、大气光值和无雾图像,在保证鲁棒性的前提下提高了去雾性能。Ren 等人[15]提出了一种门控融合网络(Gated Fusion Network,GFN),该网络首先估计输入图像对应的权重图,然后以权重图为引导对输入图像进行加权融合,从而得到了无雾图像。Chen 等人[16]提出了一种门控上下文聚合网络(Gated Context Aggregation Network,GCAN),该网络采用平滑膨胀技术去除了由膨胀卷积引起的网格伪影,并利用门控子网络融合不同层次的特征,可以直接恢复最终的无雾图像。上述方法虽然在一定程度上提升了图像的去雾性能,但由于这些方法平等地对待有雾图像中的通道和像素,导致对图像中的浓雾像素区域和重要通道信息关注不足,最终对去雾性能产生影响。

本章针对上述方法存在的不足,提出了一种结合注意力机制的多尺度特征融合图像去雾算法。该算法利用类似于UNet的编码器-解码器结构来直接学习、输入自适应去雾模型。具体来说,首先在编码器子网络中采用 CNN 得到不同尺度的特征图;然后在解码器子网络中依次从编码的特征图中恢复图像细节,为了充分利用输入信息来准确估计编码器-解码器结构的细节,该算法采用跳跃连接的方式将编码器子网络的特征图与解码器子网络的特征图连接起来,实现了不同尺度特征图之间的融合;最后在编码器-解码器结构中巧妙地加入了由通道注意力模块和像素注意力模块组成的特征注意力模块。特征注意力模块能让本章算法将更多的注意力集中在浓雾像素区域和重要通道信息上。特征注意力模块提高了本章算法处理不同类型信息的灵活性,能够使本章算法更加有效地处理浓度高且细节丰富的雾图。