An All-in-One Network for Dehazing and Beyond

AOD-Net是一种基于卷积神经网络的图像去雾模型,采用端到端设计,直接从雾图像生成清晰图像,避免了传统方法中传输矩阵和大气光的单独估计步骤。实验表明AOD-Net在去雾质量和目标检测性能上优于其他先进方法,且运行效率高。
摘要由CSDN通过智能技术生成

Abstract

提出了一种基于卷积神经网络(CNN)的图像去雾模型,称为All-in-One去雾网络(AOD-Net)。它是基于一种新的大气散射模型设计的。AOD-Net不像以前的模型那样分别估计传输矩阵和大气光,而是直接通过轻量级CNN生成干净的图像。这种新颖的端到端设计使得易于将AOD-Net嵌入到其它深度模型中,更快的R-CNN,用于提高雾图像的高级任务性能。在人工合成和自然雾图像上的实验结果表明,该算法在峰值信噪比、SSIM和主观视觉质量方面均上级现有算法。此外,当AOD-Net与Faster R-CNN连接并从端到端地训练联合管道时,我们见证了雾图像上目标检测性能的大幅提高。

I. INTRODUCTION

由于诸如灰尘、薄雾和烟雾的气溶胶的存在,雾霾的存在给由相机捕获的图像增加了复杂的噪声。它大大降低了户外图像的可见性,其中对比度降低,表面颜色变得雾。此外,雾的图像将危及许多后续高级计算机视觉任务的有效性,例如对象检测和识别。因此,去雾算法被广泛认为是(不适定)图像恢复和增强的一个具有挑战性的实例。与图像去噪和超分辨率等其他问题类似[37],[15],早期的去雾工作[23],[30],[38],[12]假设来自同一场景的多个图像可用。然而,从一个单一的图像中去除雾现在已经获得了主导的流行,因为它对于现实设置更实用[7]。针对单幅图像的去雾问题进行了研究。

A. Prior Work

作为用于去雾的先验知识,雾图像生成遵循广受欢迎的物理模型(细节参见第II-A节)。除了估计全球大气光量级之外,已经认识到实现霾去除的关键是恢复透射矩阵。[7]提出了一种物理接地的方法,通过估计的反照率的场景。[9],[34]发现了有效暗通道先验(DCP),以更可靠地计算传输矩阵,随后进行了一系列工作[13],[24],[36]。[20]加强了边界约束和上下文正则化,以获得更清晰的恢复图像。在[33]中提出了一种用于自动恢复大气光的加速方法。[45]建立了雾图像的颜色衰减先验模型和场景深度线性模型,并对模型参数进行了有监督学习。[16]示出了从有雾的视频序列中联合估计场景深度和恢复清晰潜像的方法。[1]提出了一种基于非局部先验(Hazeline)的算法,该算法假设清晰图像中的每个颜色簇在RGB空间中成为一条Haze-line。所有这些方法都依赖于物理模型和各种复杂的图像统计假设。然而,由于从单个图像的物理参数的估计通常是不准确的,上述方法的去雾性能似乎并不总是令人满意的。最近,随着卷积神经网络(CNN)在计算机视觉任务中取得了普遍的成功,它们也被引入到图像去雾中。DehazeNet [3]提出了一种可训练模型,用于从模糊图像中估计传输矩阵。[27]进一步利用多尺度CNN(MSCNN),首先生成粗尺度传输矩阵,然后对其进行细化。

B. Key Challenges and Bottlenecks

1) Absence of End-to-End Dehazing:

大多数用于图像恢复和增强的深度学习方法都完全采用了端到端建模:训练模型以从所述损坏图像直接回归所述干净图像。示例包括图像去噪[42],去雾[31]和超分辨率[41]。相比之下,到目前为止还没有端到端的深度模型用于去雾,其直接从雾图像回归干净图像。虽然乍一看这可能看起来很奇怪,但人们需要认识到,haze本质上会带来不均匀的,依赖于信号的噪声:由雾度引起的表面的场景衰减与表面和照相机之间的物理距离相关(即,像素深度)。这与大多数假设信号独立噪声的图像退化模型不同,在这种情况下,所有信号都经历相同的参数化退化过程。因此,它们的恢复模型可以很容易地建模与一个静态映射函数。这一点并不直接适用于除雾:退化过程随信号而变化,并且恢复模型也必须是输入自适应的。

现有方法共享相同的信念,即为了从烟雾中恢复干净的场景,关键是估计准确的介质透射图[1],[3],[27]。通过经验规则分别计算大气光,并基于物理模型恢复干净图像。尽管是直观的,但是这样的过程不直接测量或最小化重建失真。用于估计传输矩阵和大气光的两个单独步骤中的误差将累积并潜在地彼此放大。因此,传统的分离流水线产生次优的图像恢复质量。

2) Missing Link with High-Level Vision Tasks:

目前,去雾模型依赖于两组评估标准:(1)对于合成雾图像,其中它们的真实干净图像是已知的,通常计算PSNR和SSIM以测量恢复保真度;(2)对于具有未知地面实况的真实的自然雾图像,去雾结果的唯一可用比较是主观视觉质量。然而,与图像去噪和超分辨率结果不同,其视觉伪影的抑制效果是可见的(例如,在纹理和边缘上),最先进的去雾模型[1],[3],[27]之间的视觉差异通常表现在全局照明和色调中,并且通常太细微而无法分辨。

一般的图像恢复和增强,被称为低级视觉任务的一部分,通常被认为是中级和高级视觉任务的预处理步骤。已经知道,高级计算机视觉任务(诸如对象检测和识别)的性能将在存在各种退化的情况下恶化,并且然后在很大程度上受到图像恢复和增强的质量的影响。然而,据我们所知,还没有探索将去雾算法和结果与高级视觉任务性能相关联。

C. Main Contributions

在本文中,我们提出了一体化去雾网络(AOD-Net),这是一种基于CNN的去雾模型,具有两个关键创新,以应对上述两个挑战:

·我们是第一个提出端到端可训练去雾模型的人,该模型直接从雾图像中产生干净的图像,而不是依赖于任何单独和中间的参数估计步骤1。.AOD-Net是基于重新制定的大气散射模型设计的,因此保留了与现有作品相同的物理基础[3],[27]。然而,它是建立在我们不同的信念,物理模型可以制定一个“更端到端”的方式,其所有参数估计在一个统一的模型。

·我们首次定量研究了去雾质量如何影响后续的高级视觉任务,这是比较去雾结果的新的客观标准。此外,AOD-Net可以无缝嵌入其他深度模型,构成一个管道,在雾图像上执行高级任务,并具有隐式去雾过程。由于我们独特的一体化设计,这样的管道可以从端到端进行联合调整,以进一步提高性能,如果用其他深度hehazing替代品取代AOD-Net,这是不可行的[3],[27]。

AOD-Net在合成雾图像上进行训练,并在合成和真实的自然图像上进行测试。实验证明AOD-Net优于几种最先进的方法,不仅在PSNR和SSIM方面(见图1),而且在视觉质量方面(见图2)。AOD-Net是一个轻量级的高效模型,在单个GPU上处理一张480 × 640的图像只需0.026秒。当与Faster R-CNN [26]连接时,AOD-Net在提高雾图像的对象检测性能方面明显优于其他去雾模型,并且当我们从端到端联合调整AOD-Net和Faster R-CNN的管道时,性能裕度得到了进一步提升。

本文是从以前的会议版本[14]2扩展。本文最显着的改进在于第四节,在那里我们对评估和增强对象检测的去雾进行了深入的讨论,并介绍了联合训练部分,其中包含了丰富的细节和分析。我们还对AOD-Net的架构进行了更详细和全面的分析(例如第III-D节)。此外,我们还包括更广泛的比较结果。

II. AOD-NET: THE ALL-IN-ONE DEHAZING MODEL

在本节中,解释所提出的AOD-Net。首先介绍了变换后的大气散射模型,并在此基础上设计了AOD-Net。然后详细描述了AOD-Net的体系结构。

A. Physical Model and Transformed Formula

大气散射模型已经成为雾图像生成的经典描述[19]、[21]、[22]:

 其中I(x)是观察到的雾图像,J(x)是场景辐射率(即,理想的“干净图像”)。有两个关键参数:A表示全局大气光,并且t(x)是透射矩阵,定义为:

 其中β是大气的散射系数,d(x)是物体和摄像机之间的距离。我们可以重写干净图像的模型(1)作为输出:

 现有的工作如[27]、[3]遵循相同的三步程序:1)使用复杂的深度模型从雾图像I(x)估计传输矩阵t(x);2)用经验方法估计A;3)通过(3)估计干净图像J(x)。这样的过程导致不能直接最小化图像重建误差的次优解决方案。当将t(x)和A组合在一起以计算(3)时,对t(x)和A的单独估计将导致累积或甚至放大的误差。

我们的核心思想是将两个参数t(x)和A统一为一个公式,即(4)中的K(x),并直接最小化像素域重建误差。为此,将(3)中的公式重新表示为以下的变换公式:

 

 B. Network Design

拟议的AOD-Net由两个模块组成,如图4(a)所示:K估计模块,其根据输入I(x)估计K(x),随后是干净图像生成模块,其利用K(x)作为其输入自适应参数来估计J(x)。

 K-估计模块是AOD-Net的关键组件,负责估计深度和相对霾水平。如图4(B)所示,我们使用五个卷积层,并通过融合不同大小的滤波器来形成多尺度特征。在[3]中,在第二层中使用具有不同滤波器大小的并行卷积。[27]将粗尺度网络特征与细尺度网络的中间层级联。受其启发,AOD-Net的“concat 1”层将“conv 1”和“conv 2”层的功能连接起来。类似地,“concat 2”连接来自“conv 2”和“conv 3”的那些;“concat 3”连接来自“conv 1”、“conv 2”、“conv 3”和“conv 4”的那些。这样的多尺度设计捕获不同尺度的特征,并且中间连接也补偿了卷积期间的信息损失。值得注意的是,AOD-Net的每个卷积层仅使用三个滤波器。因此,与现有的深度方法相比,AOD-Net的重量轻得多,例如,[3],[27]。在K估计模块之后,干净图像生成模块由逐元素乘法层和若干逐元素加法层组成,以便通过计算(4)来生成恢复图像。

来证明为什么共同学习t (x)和A分之一是很重要的,我们首先比较天真的基线估计与传统方法[9],然后学习t (x)从(3)使用一个端到端的深度网络通过最小化重建错误(见第三部分合成的设置)。当观察到在图3中,基线发现高估,导致过度的视觉效果。AOD-Net显然产生更现实的照明条件和结构细节,自从联合估计1/t (x)和A使他们能够彼此互相完善。其他超参数的不准确的估计(例如,伽马校正),也可以妥协和补偿一体化的构想。

III. EVALUATIONS ON DEHAZING

A. Datasets and Implementation

我们通过(1)使用具有来自室内NYU 2深度数据库[32]的深度元数据的地面实况图像来创建合成的雾图像。我们通过在[0.6,1.0]之间均匀地选择每个通道来设置不同的大气光A,并且选择β ∈ {0.4,0.6,0.8,1.0,1.2,1.4,1.6}。对于NYU 2数据库,我们取27256张图像作为训练集,3,170张作为非重叠测试集A。我们还从Middlebury立体数据库中获取800个全尺寸合成图像作为测试集B。此外,我们测试自然朦胧的图像,以评估我们的模型泛化。

在训练过程中,使用高斯随机变量初始化权重。我们使用ReLU神经元,因为我们发现在我们的特定设置中,它比[3]提出的BReLU神经元更有效。动量和衰减参数分别设置为0.9和0.0001。我们使用8张图像(480 × 640)的批量大小,学习率为0.001。我们采用了简单的均方误差(MSE)损失函数,并高兴地发现它不仅提高了PSNR,而且提高了SSIM以及视觉质量。

AOD-Net模型需要大约10个训练时期来收敛,并且通常在10个时期之后表现得足够好。在本文中,我们已经训练了40个epoch的模型。我们还发现,裁剪梯度以将范数限制在[−0.1,0.1]范围内也很有帮助。该技术在稳定循环网络训练方面很受欢迎[25]。

B. Quantitative Results on Synthetic Images

我们将所提出的模型与几种最先进的去雾方法进行了比较:快速可见性恢复(FVR)[35],暗通道先验(DCP)[9],边界约束上下文正则化(BCCR)[20],自动大气光恢复(ATM)[33],颜色衰减先验(CAP)[45],非局部图像去雾(NLD)[1],[2],DehazeNet [3]和MSCNN [27]。在以前的实验中,由于在真实的有雾图像上测试时缺乏无雾地面实况,因此很少报告关于恢复质量的定量结果。我们合成的雾图像伴随着地面实况图像,使我们能够比较这些去雾结果的PSNR和SSIM。

表I和III-B分别显示了测试集A和B的平均PSNR和SSIM结果。由于AOD-Net在MSE损失下从端到端进行了优化,因此看到其比其他产品更高的PSNR性能并不令人惊讶。更吸引人的是,AOD-Net获得了比所有竞争对手更大的SSIM优势,即使SSIM并不直接被称为优化标准。由于SSIM的测量超越了像素误差,并且众所周知更忠实地反映了人类的感知,我们开始好奇通过AOD-Net的哪个部分实现了这种一致的改进。

 我们进行了以下调查:测试集B中的每个图像被分解为平均图像和残差图像的和。前者由取相同平均值(图像上的平均3通道矢量)的所有像素位置构成。很容易证明,两幅图像之间的MSE等于它们的平均图像之间的MSE加上两幅残差图像之间的MSE。平均图像大致对应于全局光照并与A相关,而残差更多地关注局部结构变化和对比度等。我们观察到AOD-Net产生了与DehazeNet和CAP等几种竞争方法相似的残差MSE(在TestSet B上平均)。然而,AODNet结果的平均部分的MSE显著低于DehazeNet和CAP,如表III所示。这意味着,AOD-Net可以更有能力正确地恢复A(全局照明),这要归功于我们在端到端重建损失下的联合参数估计方案。由于人眼对全局照明的大变化肯定比任何局部失真更敏感,难怪AODNet的视觉结果也明显更好,而其他一些结果往往看起来不切实际地明亮。

上述优点还体现在计算SSIM的照明(I)项[39]中,并且部分地解释了我们的强SSIM结果。SSIM增益的另一个主要来源似乎来自对比度(c)项。例如,我们随机选取5幅图像进行测试,在TestSetB上的AOD-Net结果对比度均值为0.9989,明显高于ATM(0.7281)、BCCR(0.9574)、FVR(0.9630)、NLD(0.9250)、DCP(0.9457)、MSCNN(0.9697)、DehazeNet(0.9076)和CAP(0.9760)。

C. Qualitative Visual Results

a)合成图像:图5显示了来自测试集A的合成图像的去雾结果。我们观察到AOD-Net结果通常具有更清晰的轮廓和更丰富的颜色,并且在视觉上更忠实于地面实况。

b)具有挑战性的自然图像:虽然训练与室内图像合成,ADO-Net被发现在室外图像推广良好。我们在一些自然图像示例上对最先进的方法进行了评估,这些自然图像的去雾比[9],[8],[3]的作者发现的一般户外图像更具挑战性。挑战在于高度杂乱的对象、精细纹理或照明变化的主导地位。如图6所示,FVR存在过度增强的视觉伪影。DCP、BCCR、ATM、NLD和MSCNN在一个或多个图像上产生不真实的色调,例如第二行上的DCP、BCCR和ATM结果(注意天空颜色),或第四行上的BCCR、NLD和MSCNN结果(注意石头颜色)。CAP、DehazeNet和AOD-Net具有最具竞争力的视觉结果,具有合理的细节。然而,通过仔细观察,我们仍然观察到CAP有时会雾图像纹理,DehazeNet会使某些区域变暗。AOD-Net恢复更丰富和更饱和的颜色(比较第三和第四行结果),同时抑制大多数伪像。

c)白色风景自然图像:白色场景或物体一直是消除雾霾的主要障碍。许多有效的先验(诸如[9])在白色物体上失败,因为对于与大气光颜色相似的物体,透射值接近于零。DehazeNet [3]和MSCNN [27]都依赖于精心选择的过滤操作进行后处理,这提高了它们对白色物体的鲁棒性,但不可避免地牺牲了更多的视觉细节。

虽然AOD-Net没有明确考虑处理白色场景,但我们的端到端优化方案似乎在这里提供了更强的鲁棒性。图7显示了白色场景的两个雾图像及其通过各种方法的去雾结果。很容易注意到DCP结果的不可容忍的伪影,特别是在第一行的天空区域中。这个问题得到了缓解,但在CAP、DehazeNet和MSCNN结果中仍然存在,而AOD-Net几乎没有伪影。此外,CAP似乎雾了白色物体上的纹理细节,而MSCNN创建了相反的过度增强伪影:参见猫头区域进行比较。AOD-Net设法消除雾,而不会引入假色调或扭曲的对象轮廓。

d)无雾图像上的小伤害:虽然经过雾图像的训练,但AOD-Net被验证具有非常理想的属性,即如果输入图像没有雾,则对输入图像的负面影响很小。这证实了我们的K-估计模块的鲁棒性和有效性。图8显示了来自Colorlines[8]的两个挑战性干净图像的结果。

e)图像防光晕:我们在另一个图像增强任务上尝试AOD-Net,称为图像反光晕,而无需重新训练。光晕是指光线扩散超出适当的边界,在照片的明亮区域形成不理想的雾效果。与去雾相关但遵循不同的物理模型,AODNet的防光晕结果也很不错:一些例子见图9。

D. Effectiveness of Multi-Scale Features

在本节中,我们具体分析了K估计模块的层间级联的有用性,它联合收割机了来自不同大小滤波器的多尺度特征。我们推测,尽管有经验的发现,目前的级联方式有利于平稳的功能过渡,从低层次到更高的水平,通过一贯的饲料几个连续的较低的层到下一层。为了便于比较,我们设计了一个基线:“convl-conv 2-conv 3-conv 4-conv 5(K)”,其不涉及层间级联。对于测试集A,平均PSNR为17.0517dB,SSIM为0.7688。对于测试集B,平均PSNR为22.3359 dB,SSIM为0.9032。这些结果通常劣于AOD-Net(除了测试集B上的PSNR略微更高),特别是两个SSIM值都遭受显著下降。

E. Running Time Comparison

AOD-Net的轻质结构导致更快的去雾。我们从测试集A中选择50个图像,供所有型号在同一台机器(英特尔(R)酷睿(TM)i7-6700 CPU@3.40GHz和16 GB内存)上运行,没有GPU加速。所有模型的每图像平均运行时间如表IV所示。尽管有其他较慢的Matlab实现,但比较DehazeNet(Pycaffe版本)和我们的[11]是公平的。实验结果表明,AOD-Net具有良好的效率,每幅图像的开销仅为DehazeNet的1/10。

IV. BEYOND RESTORATION: EVALUATING AND IMPROVING DEHAZING ON OBJECT DETECTION

高级计算机视觉任务,如对象检测和识别,涉及视觉语义,并受到了极大的关注[26],[43]。然而,这些算法的性能可能会在很大程度上受到危害的各种退化在实际应用中。常规方法在馈送到目标任务中之前采取单独的图像恢复步骤。最近,[40],[17]验证了恢复和识别步骤的联合优化将显着提高传统两阶段方法的性能。然而,以前的作品[44],[5],[4]主要研究了常见退化(如噪声,雾和低分辨率)对图像分类任务的影响和补救措施。据我们所知,目前还没有类似的工作来定量研究雾的存在如何影响高级视觉任务,以及如何使用联合优化方法来减轻其影响。

我们研究的对象检测的存在下,有雾的问题,作为一个例子,如何高层次的视觉任务可以与去雾互动。我们选择Faster R-CNN模型[26]作为强基线4,并在合成和自然雾图像上进行测试。然后,我们将AOD-Net模型与Faster R-CNN模型连接起来,作为统一的管道进行联合优化。从我们的实验中得出的一般结论是:当雾度变重时,物体检测变得不太可靠。在所有雾霾条件下(轻度、中度或重度),我们的联合调整模型不断提高检测能力,超越了单纯的Faster R-CNN和非联合方法。

V. DISCUSSION AND CONCLUSIONS

该论文提出了AOD-Net,这是一个一体化的管道,可以通过端到端CNN直接重建无雾图像。我们比较AOD-Net与各种国家的最先进的方法,在合成和自然雾霾图像,使用客观(PSNR,SSIM)和主观标准。大量实验结果证实了AOD-Net的优越性、鲁棒性和高效性。此外,我们还提出了第一个同类的研究,如何AOD-Net可以提高对象检测和识别性能的自然雾图像,通过联合管道优化。可以观察到,我们的联合调整模型在存在雾的情况下不断改进检测,超过了朴素的Faster R-CNN和非联合方法。尽管如此,如上所述,去雾技术与来自图像的深度估计高度相关,并且存在通过并入深度先验知识或精细深度估计模块来改进AOD-Net的性能的空间。

代码

import tensorflow as tf


class AODNet(tf.keras.Model):

    def __init__(self, stddev: float = 0.02, weight_decay: float = 1e-4):
        super(AODNet, self).__init__()
        self.conv_layer_1 = tf.keras.layers.Conv2D(
            filters=3, kernel_size=1, strides=1, padding='same', activation=tf.nn.relu,
            use_bias=True, kernel_initializer=tf.initializers.random_normal(stddev=stddev),
            kernel_regularizer=tf.keras.regularizers.L2(weight_decay)
        )
        self.conv_layer_2 = tf.keras.layers.Conv2D(
            filters=3, kernel_size=1, strides=1, padding='same', activation=tf.nn.relu,
            use_bias=True, kernel_initializer=tf.initializers.random_normal(stddev=stddev),
            kernel_regularizer=tf.keras.regularizers.L2(weight_decay)
        )
        self.conv_layer_3 = tf.keras.layers.Conv2D(
            filters=3, kernel_size=5, strides=1, padding='same', activation=tf.nn.relu,
            use_bias=True, kernel_initializer=tf.initializers.random_normal(stddev=stddev),
            kernel_regularizer=tf.keras.regularizers.L2(weight_decay)
        )
        self.conv_layer_4 = tf.keras.layers.Conv2D(
            filters=3, kernel_size=7, strides=1, padding='same', activation=tf.nn.relu,
            use_bias=True, kernel_initializer=tf.initializers.random_normal(stddev=stddev),
            kernel_regularizer=tf.keras.regularizers.L2(weight_decay)
        )
        self.conv_layer_5 = tf.keras.layers.Conv2D(
            filters=3, kernel_size=3, strides=1, padding='same', activation=tf.nn.relu,
            use_bias=True, kernel_initializer=tf.initializers.random_normal(stddev=stddev),
            kernel_regularizer=tf.keras.regularizers.L2(weight_decay)
        )
        self.relu = tf.keras.layers.ReLU(max_value=1.0)

    def call(self, inputs, *args, **kwargs):
        conv_1 = self.conv_layer_1(inputs)
        conv_2 = self.conv_layer_2(conv_1)
        concat_1 = tf.concat([conv_1, conv_2], axis=-1)
        conv_3 = self.conv_layer_3(concat_1)
        concat_2 = tf.concat([conv_2, conv_3], axis=-1)
        conv_4 = self.conv_layer_4(concat_2)
        concat_3 = tf.concat([conv_1, conv_2, conv_3, conv_4], axis=-1)
        k = self.conv_layer_5(concat_3)
        j = tf.math.multiply(k, inputs) - k + 1.0
        output = self.relu(j)
        return output

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值