作者:SFXiang
首发:AI算法修炼营
本文是收录于CVPR2020的工作,我是被双目图像去雾的题目所吸引的,其实整个工作的创新性不高,但是可以从中学到数据集的制作,图像去雾等基本知识。整体上,也可以看作视觉注意力机制的又一应用。
论文地址:
http://openaccess.thecvf.com/...\_CVPR\_2020/papers/Pang\_BidNet\_Binocular\_Image\_Dehazing\_Without\_Explicit\_Disparity\_Estimation\_CVPR\_2020\_paper.pdf
严重的雾度会导致图像质量严重下降,从而影响视觉感知、目标检测等性能。通常,去雾化的双目图像在像3D目标检测等立体视觉任务上的表现要优于雾度较高的图像,并且图像雾度是一个与深度有关的函数。在这些基础上,本文提出了一种双目图像去雾网络(BidNet),旨在利用深度学习框架的对双目左右图像进行去雾。
现有的双目除雾方法依赖于同时除雾和估计视差,而BidNet不需要明确执行耗时长、具有挑战性的视差估计任务。但是,由于视差的小误差会引起深度变化和无雾图像估计的大变化,BidNet网络中所提出的立体变换模块(STM)编码了双目图像之间的关系和相关性。 同时,对双目图像中的左右图像同时进行除雾是互利的,这比仅对左图像除雾要好。最后,作者将Foggy Cityscapes数据集扩展为具有双目有雾图像对的Stereo Foggy Cityscapes数据集。实验结果表明,在主观和客观评估中,BidNet均明显优于最新的除雾方法。
简介
在计算机视觉领域,通常使用雾天图像退化模型来描述雾霾等恶劣天气条件对图像造成的影响,该模型是McCartney首先提出。该模型包括衰减模型和环境光模型两部分。模型表达式为:
其中,是图像像素的空间坐标,是观察到的有雾图像,是待恢复的无雾图像,表示大气散射系数,代表景物深度,是全局大气光,通常情况下假设为全局常量,与空间坐标无关。
公式(1)中的表示坐标空间处的透射率,使用来表示透射率,于是得到公式(2):
由此可见,图像去雾过程就是根据求解的过程。要求解出,还需要根据求解出透射率和全局大气光。
实际上,所有基于雾天退化模型的去雾算法就是是根据已知的有雾图像求解出透射率和全局大气光 。
根据上述等式可知,图像雾度是深度的函数。双目图像的相关性可以帮助预测深度,这表明双目图像对于除雾任务是有益的。为了克服雾度造成的双目图像退化,直接和分别在左雾图像和右雾图像上应用单个图像去雾方法不能获得令人满意的结果,尤其是对于重雾度,因为这种方法没有利用双目图像。
现有的双目图像去雾方法依赖于同时执行去雾和视差估计。然而,这种方法有三个缺点:(1)对于给定的微小视差误差,深度误差会随着视差的增加而增加。因为估计透射图对去雾图像是必需的,并且透射图是深度的指数函数,误差不均也导致在估计透射图时出现较大误差,并妨碍了无雾度图像。(2)最新的基于学习的视差估计方法很耗时,因为它们必须应用3D卷积,计算量大。(3)这些方法仅输出左去雾图像,而不是双目去雾图像对。在本文中,提出了一种新颖的基于深度学习的双目图像去雾网络(BidNet),该网络能够利用左右图像中包含的协作信息,而无需明确执行耗时且具有挑战性的视差估计环节。
图1.使用提出的BibNet样本图像去雾结果。左上:输入左雾图像。左下:输入右雾图像。右上:去雾左图像。右下:去雾右图像
对于基于深度学习的双目图像去雾任务,没有包含双目雾图像的特定数据集。通过将雾添加到Cityscapes数据集中来创建Foggy Cityscapes数据集。本文将Foggy Cityscapes数据集扩展到Stereo Foggy Cityscapes数据集,该数据集由双目有雾图像对组成。关键是利用视差和给定的摄像机参数来计算摄像机与左场景之间的距离以及摄像机与右场景之间的距离。在这个过程中,应用了complete pipeline ,它使用不完整的深度信息将合成雾添加到真实,晴朗的天气图像中。
主要贡献:
(1)提出了一种新颖的双目图像去雾框架,称为BidNet,该框架能够利用左右图像之间的相关性对双目图像对进行除雾,而无需估计视差, 它可以避免由不精确的视差估计引起的大误差。
(2)受non-local网络的启发,提出了一种简单而有效的机制并将其嵌入BidNet中,通过该机制将右图像特征图中的有用信息引入左图像特征图中。 具体是通过计算立体horizontal non-local相关矩阵并将该矩阵与右图像的特征图相乘来实现的。嵌入的过程是有效的,因为相关矩阵的大小比传统的non-local网络小一阶。类似地,可以将左图像的特征图的有用信息嵌入到右图像的有用信息中。
(3)在输入左图像和右图像的情况下,只能使用上述除雾框架对左图像或右图像进行除雾。但是发现,通过同时考虑左右图像来制定除雾损失函数,可以同时去除左右雾度图像的雾度,从而产生更好的除雾效果。
(4)扩展了Cityscapes数据集以适应去雾任务。实验结果表明,在主观评估和客观评估方面,BidNet均明显优于最新的除雾方法。
本文方法:BidNet
图2.(a)双目图像去雾网络(BidNet)的总体架构。BidNet输入双目模糊图像对并输出无雾的双目图像对。(b)转换模块(STM)的结构。提出了STM来探索和编码双目图像对之间的关系
如图2所示,BidNet网络输入双目有雾图像对并估算透射图、大气光,同时对双目图像对进行去雾。BidNet的架构如图2(a)所示。引入了STM(Stereo Transformation Module )来探索和编码双目左右图像之间的相关性。
一、 Stereo Transmission Map Estimation Network
Stereo Transmission Map Estimation Network(STMENet)可以分为三个部分:权重共享特征提取模块,Stereo Transformation Module (STM)和Refinement Module优化模块。
1、权重共享特征提取模块(Weight-Shared Feature Extraction Module)
如图2(a)所示,权重共享特征提取模块是编码器-解码器结构。
表1. BidNet的详细架构。如果没有特别说明,则在卷积层之后是BN和ReLU。除权重共享特征提取模块外,左分支和右分支中的其余权重不共享。⊕表示concatenation和一个3×3卷积层以减少通道。上采样表示双线性插值。
输入图片首先通过预处理层以学习更好的输入特征。学习到的左(和右)特征通过stride为2的四个3×3卷积层传递。四个卷积层的通道增加为32、48、64和96。之后对经过卷积的下采样特征应用四个双线性插值。通过自下而上和自上而下的结构,所获得的左特征(F1)和右特征(Fr)是有区别的。
2、Stereo Transformation Module (STM)
权重共享模块的左侧和右侧模块仅融合其自身的信息。没有利用双目图像对之间的关系和相关性。于是,设计了一个Stereo Transformation Module(STM),通过学习左右特征之间的horizontal相关性来转换深度信息。
图2(b)表示出了STM的结构。由于双目图像对在垂直方向上对齐,因此STM仅需要了解它们之间的水平相关性。受non-local网络的启发,将某个位置的响应计算为沿水平维度所有位置的特征的加权总和,这可以捕获包含视差(深度)信息的远程依赖关系。
3、Refinement Module
STM估计的透射图仍然缺乏全局结构信息。空间金字塔池是parameter-free的,而且效率很高,于是网络中采用空间金字塔池引入多尺度上下文信息来完善透射图transmission maps,从而增强鲁棒性。 上面的表1中显示了详细的结构,使用了三个平均池化层,内核大小分别为3、7和15,步长为1。池化层将初始估计的transmission maps转换为全局表示的增强集合。然后,将这些具有初始估计的transmission maps通过concat进行聚合,并进入1×1卷积层以融合特征。最终,输出是refine后的透射图。
二、大气光估算网络Atmospheric Light Estimation Network
大气光估计网络(ALENet)旨在估计大气光A。如图2(a)所示,ALENet也是一种编码器/解码器结构,但没有尺度的跳跃连接。它包括一个3×3卷积层作为预处理,三个Conv-BN-Relu-Pool块作为编码器,三个Up-Conv-BN-Relu块作为解码器,最后是一个3×3卷积层估计大气光A,如表1所示。1.立体图像对具有相同的大气光A。因此,ALENet仅输入左侧图像进行预测。
三、通过物理散射模型去雾Dehazing via The Physical Scattering Model
如图2(a)所示,通过等式(2)计算左无雾图像和右无雾图像。等式(2)确保整个网络同时优化。直接计算出的无雾双目图像有一些噪点,于是添加了图像优化模块,这是一个轻量级的密集块。轻量级密集块具有四个3×3卷积层,其输入是在之前生成的特征图的串联。输入通道的数量为3、8、16和24,但输出通道的数量均为8。最后,采用1×1卷积层来估计精确的无雾双目图像。
四、损失函数
BidNet的损失函数包括:去雾 的双目图像的误差、透射图误差、大气光的误差、Perceptual 损失。 在损失函数中同时考虑了左右图像的误差,因此同时对两个图像去雾是互利的。
无雾的双目图像误差:
透射图误差:
大气光误差:
基于从预训练网络中提取的高级特征的Perceptual 损失被广泛用于图像超分辨率领域。此外,Perceptual 损失比像素损失更有效地衡量图像的视觉相似性。受此启发,作者引入了Perceptual 损失以增加恢复的无雾图像与真实图像之间的Perceptual 相似性。 Perceptual 损失利用从预先训练的深度神经网络中提取的多尺度特征来量化估计图像和ground truth之间的视觉差异。本文中,使用在ImageNet 上预先训练的VGG16 作为loss网络,并从VGG16中的Conv33中提取特征。Perceptual loss定义为:
Stereo Foggy Cityscapes Dataset
整个数据集制作过程参考了文章《Semantic foggy scene understanding with synthetic data》,感兴趣的话,可以参考原文。
实验与结果
数据集:Stereo Foggy Cityscapes Dataset
评价指标:PSNR、SSIM
实验配置:使用256×256大小的RGB图像训练网络,训练是在两台NVIDIA GeForce GTX 1070上进行的,并且一个GPU用于测试。
1、对比实验
2、定性评估
3、消融实验
4、Drivingstereo 数据集上的实验
对于400×881的图像,BidNet在NVIDIA GeForce GTX 1070上对双目图像进行去雾处理的速度为0.23s。
更多实验细节,可以参考原文。
推荐阅读
- CVPR2020 | 定向和密集的目标检测怎么办?动态优化网络来解决
- ECCV2020 | SNE-RoadSeg:一种基于表面法向量提取的道路可行驶区域分割方法
- Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
更多机器学习、深度学习、计算机视觉、自动驾驶、机器人等领域最新最前沿的科技请关注微信号AI算法修炼营。