
去烟/雾算法发展概览
本文介绍了去烟/雾算法的发展历程,介绍了几个经典模型。
早期:基于先验的方法
此阶段的方法不依赖于深度学习,而是基于对大量无雾和有雾的观察,人工总结出统计规律(先验知识),利用物理散射模型来反推图像的透射率和大气光值。
主要的代表算法是暗通道先验(Dark Channel Prior, DCP)。通过观察发现,在绝大多数没有雾的户外图像的局部区域中,至少有一个颜色通道的像素值是非常低的,这个通道就被称为暗通道。
例如在阴影比如树荫、建筑背光处,三个通道的值都很低;鲜艳的物体如一朵红色花,R通道值很高,G和B的通道值则很低(接近0),黑色的物体如树干、石头,三个通道值都很低。
而雾(大气光)通常是白茫茫的,亮度较高。
- 如果有雾:原本应该很黑的暗通道,会因为叠加了白色的雾气而像素值升高。
- 计算逻辑:算法通过计算暗通道的像素值有多高,就能反推出该区域的雾气有多浓(即此处的透射率有多大)。
- 还原:知道了雾的浓度,可以根据物理公式来将雾减去,还原出清晰的图像。
在数学上,暗通道可以表示为:
- 其中是图像的R、G、B的某个通道。
- 是以像素为中心的局部窗口(通常是的方块)。
利用大气散射模型对图像进行去雾:
- 其中为观察到的有雾图像。
- 为要恢复的无雾图像。
- 为透射率,代表光线穿透雾的能力,雾越浓,则t越小。
- 代表大气光值,通常取整张图中最亮区域的值。
归一化:将方程两边同时处以大气光A:
取最小值:对方程两边进行两次取最小操作(第一次是对RGB取最小,一次是对局部窗口取最小):
代入先验:根据暗通道先验,无雾图像的暗通道趋近0,即。因此中间一项约为0。
求解:
引入常数的原因是为了保留少量的雾,使得图片更加自然,保留景深感。
暗通道先验的优点是简单且有效,在很多场景下效果惊人;缺点是对天空失效,因为天空本身就很亮,不符合暗通道趋近于0的假设,所有DCP在处理天空时会容易出现颜色失真,且模型基于理想化的假设,在面对复杂不均匀的真实世界雾霾时,刚性的假设往往会失效,导致泛化能力较差。
相似的算法还有颜色衰减先验(Color Attenuation Prior)和颜色线(Color-Lines)先验,都是基于先验的方法。
深度学习初期:基于CNN的方法
此处主要从人工先验转换到数据驱动,利用卷积神经网络的特征提取能力,从大规模的数据集中自动学习雾霾的特征。深度学习方法主要还是分为两个方面,早中期还是以大气散射模型为基础;由于现实中的雾实际上更加复杂,要综合考虑深度、光照等因素,因此后期则直接以端到端模型为主。
基于大气散射模型的CNN方法
以DehazeNet为例,该方法还是以大气散射模型为基础,但是和不再依靠人工规则计算,而是通过训练一个CNN来计算。
该方法通过CNN模型计算出透射率图,即,然后将透射率图输入到大气散射模型来恢复无雾图像。
该模型的主要创新点以及所相应解决的问题如下:
- 在特征提取层引入了Maxout单元,在第一层卷积以后使用Maxout激活参数,来解决特征学习的单一性和局限性。Maxout是一种分段线性函数,作用是输出k个不同的输入值中的最大值,可以通过学习不同的滤波器参数,自动拟合出类似于“最小值滤波”(暗通道)、“最大值滤波”(最大对比度)等多种去雾特征,网络可以自动学习最有效的雾气特征,而不仅仅依赖于人工假设。
- 多尺度映射:在网络的第二层使用并行卷积操作。解决了尺度变化的适应性。雾的透射率和景深相关,而图像中的物体的大小和距离是多变的。单一尺度的卷积核难以同时处理微小的细节和巨大的物体,多尺度卷积就能够很好地解决这个问题,从多个尺度提取特征,提高模型对图像缩放和不同大小的鲁棒性。
- 局部极值操作:在网络的第三层引入最大池化操作,主要是用于对传输图做平滑处理,来防止逐像素计算出的特征可能因为纹理、颜色等变化而产生巨大剧烈波动;除此以外,还能有效地抑制了由白色物体或图像噪声引起的传输率低估误差。
- 双边ReLU激活函数:通过新的激活函数BReLU,将输出限制在中,来解决透射率大于1的情况;同时还规避了Sigmoid函数的梯度消失问题,保留了ReLU的局部线性,提升了图像恢复的质量。
端到端的CNN方法
这类方法不再纠结于中间物理参数,而是直接学习从”有雾图“到”无雾图“的映射关系,减少了对物理先验的依赖,通常能够获得更高的图像保真度。
以FFA-Net为例,该模型是一个完全的端到端网络,输入有雾图,直接输出无雾图,中间不再显式计算透射率与大气光。
该方法主要解决了传统深度学习去雾方法的两个痛点:
- 低效处理:之前的网络通常对图像中的每一个像素和每一个特征都“一视同仁”,但是实际上雾在图像中的分布是不均匀的,有些地方的雾比较厚,有些地方仅仅只有薄雾;且不同的特征通道包含的信息重要性不同,有些通道包含更多的边缘纹理,有些地方包含更多色彩。如果不区分对待,则网络就会将资源浪费在简单的区域,在苦难的区域在效果不佳。
- 浅层信息的丢失:随着网络层数变深,原本图像的细节容易在多次卷积之后丢失。同时保留深层语义和浅层细节就变成了一个难题。
FFA-Net使用了注意力机制和融合来解决以上问题:
- 注意力:雾气分布不均匀,那么网络应该学会聚焦,侧重雾气较厚的地方。
- 特征融合:保留中间产生的信息,网络前几层提取的特征和后几层提取的特征应当结合起来,共同确定最后的去雾图像。
FFA-Net的模型架构如下:
该模型主要由以下阶段组成:
- 浅层特征提取:图像先经过一个简单的卷积层,为后续的深层处理准备。
- 堆叠的组架构:特征图连续通过三个组架构,每一组都提取出不同层级的特征。
- 特征融合:三个组架构的输出除了作为下一组的输入意外,还会被汇聚到拼接模块,拼接的特征会通过一个特征注意力模块,这样可以让网络同时保留浅层细节特征和深层语义特征,并且自动学习它们的权重进行融合。
- 重建与全局残差:融合后的特征再经过最后的卷积层来重建图像。原始输入的图像直接连接到网络的末端,说明整个网络学习的实际上是残差,即如何从有雾的图中减去雾,或者如何修正输入的图片。
细分来看,每个组内由19个基本块串联而成,基本块包含局部残差学习和特征注意力。流程为。而特征注意力又主要由通道注意力和像素注意力串联而成:
- 通道注意力主要解决不同特征通道的重要性不同的问题,例如某些通道可能用于响应浓雾,某些用于响应边缘。通过使用全局平均池化压缩空间的信息,算出每个通道的一个权重值,然后乘以原特征。
- 像素注意力主要解决雾在图像上分布不均的问题,通过卷积和Sigmoid生成一张和原图一样大的权重图。雾大的地方权重可能大,没雾的地方权重较小。
Transformer模型
CNN的劣势就是卷积核视野(感受野)太小,看局部容易将白墙当成雾。而Transformer的Self-Attention天生就能够看全局。
以DehazeFormer为例,该模型在Swin Transformer的基础上改进了归一化方法和将循环移位替换为反射填充,成为了在SOTS indoor数据集上
PSNR指标首次超过40dB的Transformer架构的模型,在去雾这一领域超越了CNN。
DehazeFormer主要解决的问题如下:
- CNN的局限性:传统的CNN擅长提取局部特征,但是在捕捉全局上下文方面则较弱,而去雾则非常依赖全局信息。
- 通用Transformer在去雾领域表现不佳:Swin Transformer直接用于去雾会出现很多问题,因为其很多设计是为了“识别物体”而设计的,并不是为复原像素而设计的:
- Swin Transformer的LayerNorm会破坏雾的特征,雾的浓度通常与图像的亮度和对比度强相关。如果强行将每个图像块都归一化为一样的分布,相当于把雾的浓度信息丢掉了。
- 循环移位会带来伪影,为了让不同的窗口进行信息交流,Swin Transformer使用了一种称为循环移位的操作,在去雾这种需要生成高质量图片的任务中,会导致明显的边缘伪影。
该模型的架构如下:
针对以上问题,DeHazeFormer主要做出了以下改进:
- 提出了新的归一化方法来替代LayerNorm:先像LayerNorm一样将数据归一化,然后再将整张特征图的全局均值和全局方差加回去。归一化是为了让网络训练更加稳定,而加回全局均值和方差,这是为了保留”雾的浓度信息“。
- 使用反射填充替代循环移位,当划分窗口时,如果在边缘不够切分,选择使用镜像反射的方式将边缘补齐,处理完之后再切去,这样能够保证边缘的连续性,不会出现”把图片左边的像素强行拼到右边“这种违背物理空间位置的操作,有效消除了去雾后的边缘伪影。
- 并行卷积和注意力:在Transformer的注意力机制旁边加了一个并行的深度卷积分支,有效将全局信息和局部信息结合起来,同时兼顾了去雾程度和纹理的保留。
结语
算法的演进,是为了让我们看得更清。从基于统计学的物理先验,到卷积神经网络的局部特征提取,再到 Transformer 的全局上下文感知,去烟算法在精度与泛化性上不断突破天花板。这一路走来,不仅是在通过数学消除图像中的雾霭,更是在探索如何让机器在不确定性中还原真实世界的本来面貌。虽然“完美去雾”在复杂多变的现实场景中仍面临挑战,但随着模型架构的持续创新,那层遮挡在镜头前的“迷雾”正变得越来越淡。
参考文献如下:
Kaiming He, Jian Sun and Xiaoou Tang, "Single image haze removal using dark channel prior," 2009 IEEE Conference on Computer Vision and Pattern Recognition, Miami, FL, USA, 2009, pp. 1956-1963, doi: 10.1109/CVPR.2009.5206515.
B. Cai, X. Xu, K. Jia, C. Qing and D. Tao, "DehazeNet: An End-to-End System for Single Image Haze Removal," in IEEE Transactions on Image Processing, vol. 25, no. 11, pp. 5187-5198, Nov. 2016, doi: 10.1109/TIP.2016.2598681.
Qin, X., Wang, Z., Bai, Y., Xie, X., & Jia, H. (2020). FFA-Net: Feature Fusion Attention Network for Single Image Dehazing. Proceedings of the AAAI Conference on Artificial Intelligence, 34(07), 11908-11915. https://doi.org/10.1609/aaai.v34i07.6865
Yuda Song, Zhuqing He, Hui Qian, and Xin Du. 2023. Vision Transformers for Single Image Dehazing. Trans. Img. Proc. 32 (2023), 1927–1941. https://doi.org/10.1109/TIP.2023.3256763
