连文杰, 叶少珍, 2
(1. 福州大学计算机与大数据学院, 福建 福州 350108; 2. 福州大学智能制造仿真研究院, 福建 福州 350108)
基于深度学习的去雾方法是通过建立网络模型, 高效学习有雾图像与清晰图像的关联, 通过建立损失函数不断调整网络模型使得在学习结束后得到高质量的恢复图像. 与基于图像增强[1]和图像复原[2]的去雾方法相比, 深度学习在图像识别处理方面取得了更优越的效果, 因此现在仍然被广泛研究. 文献[3]建立了卷积神经网络模型, 训练学习有雾图像与其场景透射率的关系, 代入大气散射模型实现图像去雾; 文献[4]利用大气散射模型将大气光照值和透射率重新组合成一个新的变量值, 重构物理模型进行特征学习实现去雾; 文献[5]提出一种通过多引导双边学习的超高清图像去雾化方法, 使用深度神经网络来建立一个仿射双边网格, 可以较好保持图像中详细的边缘和纹理. 文献[6]将全局和局部交互集成在一起, 从而在有限计算资源的情况下, 更好地平衡模型容量和泛化能力. 总的来说, 上述算法主要分为估计参数法和直接修复法. 如DCP[7]、 AOD-Net[4]等, 都是通过估计透射率, 或结合大气散射模型等物理模型实现去雾效果. 如GFN[8]、 EPDN[9]等更多是通过特征融合的方法直接对图像进行修复. 但是这些算法都不能完美地解决去雾问题, 对于不同浓度的、 分布不均的带雾图而言, 大都表现得比较乏力, 有一部分在颜色较深的场景不能实现好的效果, 尤其在处理蓝天、 密林等特殊的场景中.
本研究提出一种基于注意力机制的多层次融合图像去雾算法, 分为提取特征、 融合特征和图像重建3个部分, 通过不同的方法提取不同层次特征, 以注意力机制将特征进行融合, 能够更好地捕捉全局特征信息、 进行图像重建, 从而得到清晰的去雾图像.
将模拟人类注意力的想法运用在计算机科学中, 最早的想法出现在计算机视觉领域. 只关注图像的部分重要区域, 而不是每次都对整个图像进行分析计算, 以此来降低图像处理的计算复杂度, 同时提高性能. 目前所知道的注意力机制的真正起点通常是源于自然语言处理领域, 如Bahdanau等[10]的在机器翻译模型中实现了注意力模型, 以解决循环神经网络结构中的某些问题. 在此之后, 注意力机制高速发展, 并迅速流行于各种任务, 如文本分析、 字幕处理、 图像复原和语音识别等.
注意力函数Attention从本质上来说, 就是能在输入的众多特征中精准快速找到有用的信息, 同时选择性忽略不太重要的特征信息, 其结果通常都是生成权重矩阵, 为不同的特征赋予不同的权重, 其通用公式可定义为
(1)
其中:Q为查询语句;K是关键字;V是输入特征向量;dk为词向量的长度, 首先Q与K的转置做一个点积运算, 生成所需的相似度矩阵, 将得到的结果除以词向量的长度, 目的是为了减小点积运算引起的方差过大的问题, 使其训练时梯度更新更加稳定. 再将其做一个归一化(softmax)处理, 得到权重系数矩阵, 最后将系数矩阵与V做张量乘法计算加权, 这样做能最大限度地保留输入的特征. 通过这样计算得到的权重矩阵在训练中的泛化能力更高, 增强了表达能力, 能够更好地定位到特征图中最需要关注的部分.
对于输入是二维图像的神经网络来说, 两个维度分别是以长宽组成的尺度空间和通道数. 考虑到特征图过多的通道数对于关键信息的贡献不同, 本模型为每个通道上的信息都赋予一个权重值, 权重越高说明通道信息越重要. 在通道域中生成注意力掩码, 并使用它选择重要通道. 其中最经典的就是文献[11]提出的一种基于通道注意力机制的网络(squeeze-and-excitation networks, SENet).
SENet 主体网络结构如图1所示, 在普通卷积之后引出一个分支, 将特征图的[H,W]压缩为[1, 1], 即图1中的Fsq操作, 它是一种将空间维度进行特征压缩, 但是特征通道数不发生变化, 是一个全局的池化操作. 将得到的值送入一个两层的全连接神经网络, 运用ReLU和Sigmoid两种激活函数, 为每个特征通道生成不同的权重系数, 即图1中的Fex操作. 所以FC的计算公式被定义为
FC=F⊗Fex(F,W)=F⊗σ(W2δ(W1F))
(2)
图1 SENet主体网络结构Fig.1 SENet main network structure
式中:σ为ReLU激活函数;δ为Sigmoid激活函数;W1、W2为中间特征向量;Fscale为按通道元素相乘的操作.通过Fex操作之后将得到的权重与输入特征F相乘得到新特征FC, 将权重应用于原来的每个特征通道.这帮助本文网络的性能得到明显的提升, 与其他增加网络深度来提升性能但计算量大大增加的方法不同, 这种方法只增加了少量的计算量.
对于一张特征图, 维度是H×W×C, 与通道注意力不同, 空间注意力关注的是在H×W平面中, 比较有意义的像素点代表的特征.与通道注意力相似的有
FS=F⊗σ(f5×5([AvgPool(F); MaxPool(F)]))
(3)
式中:σ为ReLU激活函数.对于一个H×W×C的特征F, 为了计算其空间注意力, 首先沿通道轴使用平均池化(AvgPool)和最大池化(MaxPool)两个操作, 使特征通道数变为1, 并将它们连接起来以生成一个有效的特征表达, 再将其经过一个5×5的卷积层, 得到的空间注意权重系数Ms与特征F相乘得到空间注意特征.对于所有的通道, 在二维平面上, 对H×W特征图的每个像素点都会被赋予一个权重值.同样的, 权重值越高意味着像素点的空间位置信息越重要.
本研究提出了一个基于注意力机制的多层次特征提取去雾网络模型, 如图2所示. 主要由两个部分构成, 黄色框部分是一个三层次的特征提取增强模块, 第一层特征提取阶段由残差密集网络构成, 将特征通道数增加到32, 接下来两个阶段都是由自校准卷积网络组成, 它们分别将通道数提升至64和128, 同时分别将特征分辨率降低了一半. 不同于很多任务只用第三阶段的输出, 选择将三个阶段的输出全部反馈到图2红色框中的注意力模块中. 这个部分结合了通道注意力和空间注意力的双重注意单元, 第三层次的注意力结果与第二层次的注意力结果连接在一起再送入一个双重注意单元, 经过一个线性插值上采样层之后再与第一层次的注意力结果连接在一起, 最后将这个结果再通过一个像素注意力单元, 网络捕获到更关键和信息丰富的特征, 以实现更好的去雾结果. 最终的图像重建由简单的元素相加和一个3×3的卷积层组成.
图2 去雾网络模型结构Fig.2 Structure of dehaze network model
2.1.1残差密集网络
在大多数去雾网络中, 低分辨率图像的层次特征经常被忽略抛弃, 但其同样蕴含大量细节特征信息, 文献[12]提出一种残差密集网络来解决这一问题, 并且取得了较好的结果. 受其启发, 本研究提出一种低层次特征提取网络, 如图3所示. 主体结构包含两个3×3的卷积, 连接3个残差密集块(residual dense block, RDB), 再连接一个特征融合模块, 最后再通过一个3×3的卷积得到低层次特征F′.
图3 残差密集提取网络结构Fig.3 Residual dense extraction network structure
图3黄色框中给出了RDB块的基本结构, 它包含密集连接层、 局部特征融合和局部残差学习, 从而形成连续存储机制. 连续存储机制使得前一个RDB的状态信息能够传递给当前RDB的每一层卷积, 更充分地提取低层次特征, 如图3黄色框中蓝色弧线部分. 第n个RDB的第c层输出可被表示为
Fn, c=σ(Wn, c[Fn-1,Fn, 1, …,Fn, c-1])
(4)
式中:σ为ReLU激活函数;Wn, c为第c个卷积层的权重值. 将每个RDB的每一层的输出特征进行映射拼接, 前一个RDB和当前RDB的每一层都直接连接到后续层, 通过这种连接方式很好地保留了前馈特征, 也能很好地保留局部特征. 网络自适应融合前一个RDB和当前RDB中整个网络层的状态, 本方法中选择使用3个RDB块作为网络的主干, 在得到每个RDB局部信息特征之后, 再进行一个全局特征融合和全局残差学习. 与RDB内部相似, Concat层融合每一个RDB的输出特征, 并且与初始输入特征进行一个全局残差学习, 如图3中绿色箭头所示, 更好地保留了低层次特征, 减少信息丢失.
最后将融合好的RDB特征送入一个3×3的卷积并将得到的特征与其自身再做一个融合, 得到第一层次的提取特征, 其结果可被定义为
F′=Fcat+Conv(Fcat)
(5)
式中: Covn是一个3×3的卷积操作;Fcat为RDB特征经过全局融合和残差学习后的结果, 以此作为特征提取的第一层很好地保留了低层次的特征, 有助于恢复图像细节部分.
2.1.2自校准卷积网络
自校准卷积网络是一种较新颖的卷积层, 文献[13]首次提出它的结构, 它首先将通道特征分割为通道数减半的两个部分, 将其分别通过不同的滤波器来提取和融合多尺度特征, 最后再将两个部分的特征相加, 得到新的特征. 它每个空间位置不仅可以自适应地感受上下文信息, 还可以建模通道间的依赖关系, 以此来自动调整其感受野大小和形状, 以更好地捕捉输入数据的特征. 同时自校准操作只考虑每个空间位置的上下文信息而不会考虑全局信息, 减少了其他不相关区域信息的影响. 该方法基于一种自适应机制, 根据输入特征的统计属性学习调制卷积滤波器的权重, 可以显著提高卷积神经网络的准确性, 而不增加计算复杂度.
本研究提出一种基于自校准卷积的特征提取模块, 如图4所示. 首先是两个3×3的卷积, 将特征通道数变为原来的两倍, 之后引入自校准卷积网络(SConv)来扩大卷积层的感受野, 使其能捕捉到更多细节特征, 最后再传入一个3×3的卷积, 并且进行一个上采样操作得到高层次特征Fout.
图4 自校准卷积提取网络Fig.4 Self-calibration convolution extraction network
本节的目标是通过使用注意力机制来增加特征的表达能力, 文献[14]提出一种结合通道注意力和空间注意力的双重注意单元, 参考其思路, 本研究将其改造成特征提取融合的一个重要模块, 也是本网络的中心部分, 其具体结构如图5所示.
图5 双重注意单元模块Fig.5 Dual attention unit
3个层次的特征都分别输入到双重注意单元, 输入特征首先先经过一个由两个3×3的卷积和PReLU激活函数组成的网络, 然后分别通过通道注意力层和空间注意力层得到特征FC和FS, 将这两个特征张量进行拼接之后再经过一个3×3的卷积, 为了防止网络退化, 最后将其与浅层特征Fin做一个残差跳跃连接得到最后输出Fout, 由式(2)~(3)可得
Fout=C(FC,FS)⊕Fin
(6)
式中:C为张量拼接计算. 卷积运算通过混合跨通道和空间信息来提取信息特征, 两个注意力单元可以分别在通道和空间轴上学习到重要特征, 并且能在空间准确地定位, 通过不断地增强和抑制不同的特征信息, 帮助网络中的信息更高效地流动.
为了优化前文所提出来的网络, 应用了均方损失函数(mse)、 边缘损失函数(edge)及鲁棒性损失函数(charbonnier). 均方损失函数用于测量清晰图像与去雾图像在像素方面的差异, 边缘损失函数有助于复原更多的细节, 鲁棒性损失函数可以增强图像的真实感. 因此总损失函数(L)被定义为
L=Lmse+αLedge+βLcharbonnier
(7)
其中:α、β是用来调整两个损失函数相对权重的参数.在本实验中,α=β=0.01.
由于目前很难收集到大量真实世界的雾霾图像和无雾图像, 大多数的图像去雾任务都使用RESIDE数据集来作为训练和测试的数据集. 本实验使用它的室内训练集(13 990张图片)和室外训练集(29 405张图片)进行模型的训练, 并且使用综合客观测试集来进行模型效果的测试.
为了更好地评价图像去雾的质量, 使用峰值信噪比(peak signal to noise ratio,RPSN)和结构相似度(structural similarity,MSSI)来作为定量分析的客观指标.RPSN是基于对应像素点之间的误差, 即基于误差敏感的图像质量评价.MSSI分别从亮度、 对比度、 结构3方面度量图像相似性. 本文算法与经典的图像去雾算法进行对比, 其中包括DCP[7]、 AOD-Net[4]、 GFN[8]、 EPDN[9]、 RefineDNet[15]、 D4[16]、 4KDehazing[5]. 表1展示了本文算法与其他算法在RESIDE综合测试集上的测试结果, 从中可以看出本文算法在室内外的测试集上RPSN、MSSI均取得了最高值, 说明本文算法对比其他算法具有一定的优势, 去雾图像受噪声的影响更小, 去雾前后的图像具有更高的相似度.
表1 不同算法的RPSN和MSSI对比结果
图6为在RESIDE综合测试集中的部分去雾结果. 为了更好地证明本文算法的优势, 在室内测试集中分别选择了颜色亮眼的图片、 光线充足的图片和光线较暗的图片, 在室外测试集中分别选择了薄雾图片、 中雾图片和浓雾图片, 以此从多个角度来对比效果. 通过对比发现, 虽然几种算法都能达到去雾效果, 但去雾效果并不是都能令人满意. AOD-Net算法处理后的图像整体亮度偏暗, 色彩颜色偏重甚至有一点失真, 尤其在较暗处和浓雾处效果并不理想; GCA算法在处理室内的图片取得了比较好的效果, 但是在室外图片, 尤其是有蓝天的图片, 出现了黑斑, 并且背景颜色有一些偏浅; RefineDNet算法在室内光线较亮和较暗的图片去雾不彻底, 在室外图片的边缘处理有一些偏暗, 在密集树叶部分颜色较深; 4Kdehazing算法对于室内图片去雾效果不彻底, 对于蓝天处也还存在薄雾, 而在光线曝光处处理后带有黑影. 本文算法在以上几种场景中都取得了较好的去雾效果, 具有最好的视觉效果, 最接近真实图像.
图6 不同算法在RESIDE数据集上的测试结果Fig.6 Test results of different algorithms on RESIDE dataset
消融实验能验证前文所提出的几个模块的有效性. 消融实验的详细配置如表2所示.
表2 消融实验配置
其中主干网络的三层提取特征网络都是由一个3×3的卷积和两个残差块组成, 图像特征融合重建部分使用普通的通道注意力层. 消融实验是在RESIDE室内测试集中测试的, 具体指标见表3.
表3 消融实验结果
从表3结果可知, 在特征提取三层网络单独使用残差密集网络和自校准卷积网络都能使网络提取能力增强(对比网络1和对比网络2), 但是将这二者结合(对比网络3), 也就是使用本文网络的结构可以进一步提高网络的特征提取能力. 在将普通注意力层换成双重注意单元之后(对比网络4), 使网络性能进一步提升. 最后再加上像素注意力层(本文网络), 虽然对RPSN影响不大, 但是能使MSSI小幅度提升. 从实验中可以看出, 本文提出的几个模块都对网络性能的提升具有一定的帮助, 实现更好的图像去雾效果.
为了更好地解决传统去雾算法中图片锐化严重、 部分失真的问题, 本研究提出一种基于注意力机制的多层次特征融合的图像去雾算法. 利用密集残差网络和自校准卷积网络高效地提取到各个层次的特征, 不仅扩大了网络的感受野, 同时也更好地保留住低层次特征. 结合通道注意力、 空间注意力和像素注意力将特征进行提取融合, 使得网络中的信息流动更加高效准确, 同时在处理一些特殊的边缘特征上也有较好的效果, 以此来重建恢复去雾图像. 实验表明, 文中使用的几个模块都能使网络的性能提升, 尤其是残差密集网络和自校准卷积网络的配合使用效果尤为突出. 本文算法大大提高了图像的能见度, 与其他算法相比, 峰值信噪比和结构相似性都有所提高, 并且增强了主观效果, 在细节处理之处也比其他算法更好.