IJCV 2024 | 基于密度和深度分解的鲁棒无配对图像去雾

题目:Robust Unpaired Image Dehazing via Density and Depth Decomposition

基于密度和深度分解的鲁棒无配对图像去雾

作者:Yang Yang Chaoyue Wang Xiaojie Guo Dacheng Tao
开源代码:https://github.com/YaN9-Y/D4_plus


更多TPAMI,IJCV,TMI等顶刊文章欢迎关注我们的微信公众号,每天带你阅读最新顶刊论文
在这里插入图片描述

为了解决在合成的有雾-清晰图像对上训练的去雾模型的过拟合问题,近期的方法尝试通过在未配对数据上训练来增强泛化能力。然而,大多数现有方法仅仅依赖于生成对抗网络来构建去雾-加雾循环,却忽略了现实世界有雾环境中的物理属性,即雾效应会随着密度和深度的变化而变化。本文提出了一种鲁棒的自增强图像去雾框架,用于雾的生成和移除。与仅仅估计传输图或清晰内容不同,所提出的方案专注于探索有雾和清晰图像的散射系数和深度信息。通过估计场景深度,我们的方法能够重新渲染具有不同厚度的有雾图像,这有助于去雾网络的训练。此外,引入了双重对比感知损失,以进一步提高去雾和加雾图像的质量。通过全面实验,我们的方法在视觉质量、模型大小和计算成本方面优于其他最先进的未配对去雾方法。而且,我们的模型不仅可以在合成的室内数据集上稳健训练,还可以在真实的室外场景上训练,对现实世界图像去雾有显著改进。

引言

雾是由大气中气溶胶粒子的散射效应引起的自然现象。它会导致视觉内容严重下降,给人类观察者和计算机视觉系统带来麻烦。去雾方法旨在去除雾并提高现实世界雾图像的视觉质量,这可以惠及像图像分割、雾天目标检测等下游计算机视觉任务。自然场景中雾效应的退化可以通过Koschmieder定律来表述:
I ( z ) = J ( z ) t ( z ) + A ( 1 − t ( z ) ) , I(z) = J(z)t(z) + A(1 − t(z)), I(z)=J(z)t(z)+A(1t(z)),
其中 I ( z ) I(z) I(z)表示观测到的雾图像的第 z z z个像素, J ( z ) J(z) J(z) A A A分别是场景辐射度和全局大气光。传输图 t ( z ) = e − β d ( z ) t(z) = e^{−βd(z)} t(z)=eβd(z)由场景深度 d ( z ) d(z) d(z)和散射系数 β β β定义,反映了雾的密度。借助深度神经网络的强大学习能力,提出了大量方法以监督方式解决图像恢复任务以及图像去雾。通过在大量合成雾-清洁图像对上训练,监督深度去雾方法在特定测试集上取得了令人印象深刻的结果。然而,合成和现实世界雾图像之间存在相当大的领域差异。仅在成对合成图像上训练的去雾模型容易过拟合,并且对现实世界的雾条件泛化能力差。由于所需的现实世界雾和清洁图像对几乎无法获得,近年来,许多无成对深度学习方法被提出,以探索无成对训练数据中的去雾线索。其中,构建去雾循环和加雾循环被广泛采用,因为它为在执行领域转换时保持内容一致性提供了一个简单有效的方案。如果雾和清洁图像领域能够被准确建模,循环框架有望在无成对去雾上取得有希望的性能。然而,我们认为,简单地继承来自无成对图像到图像翻译方法的CycleGAN框架将无法处理无成对图像去雾任务。现有的基于循环的去雾方法忽略了现实世界雾环境的物理属性,即现实世界的雾随密度和深度的变化而变化。如图1(i)和(iii)-(e)所示,基于CycleGAN的方法容易崩溃,合成固定密度的雾,并且可能错误地模拟雾效应,例如,随着场景深度的增加,雾应该更厚。此外,大多数现有的无成对方法仅依赖于GAN来指导去雾网络的训练,然而,一些先前的研究已经揭示了仅应用GAN在图像去雾方面的局限性,可能导致雾未完全去除或局部伪影。迫切需要额外的正则化来解决这个问题。

本文建立了一个名为D4(+)(通过将传输图分解为密度和深度进行去雾)的新型去雾框架,用于无成对雾合成和去除。遵循雾图像形成过程,我们显式地对目标场景的散射系数β和深度图 d ( z ) d(z) d(z)进行建模。在去雾-加雾分支上,我们的模型被训练以直接从雾图像中估计传输图和散射系数。根据等式(1)中的物理过程,场景深度和清洁内容可以直接推导出来。在加雾-去雾分支上,我们的模型旨在估计输入清洁图像的深度信息,然后合成具有不同密度的雾图像,即散射系数。考虑到空间变化的雾厚度为感知场景深度提供了额外的线索,从雾图像估计的深度图作为清洁图像深度的伪真实深度。同样,在加雾-去雾分支中,加雾步骤中随机采样的散射系数β在去雾步骤中作为预测密度的伪真实深度。通过我们的新型无成对去雾框架,我们可以从清洁图像中估计深度图;合成具有各种密度的真实雾图像(用于数据增强);并且以更少的参数和FLOPs实现比最先进的无成对去雾方法更好的去雾性能。此外,仅应用对抗性损失还不足以指导生成器完全去除雾或生成真实的雾。虽然对比学习已被验证其在利用负样本和正样本的知识以及提高网络表示能力方面的有效性,我们引入对比学习以提高雾去除和生成的能力。具体来说,我们提出了双重对比感知损失,它将去雾和加雾图像推向其相应的正样本,并将它们从嵌入空间中的负样本中拉开。实验表明,雾去除和生成都可以从对比学习的应用中受益。最后,由于现实世界的雾/清洁图像比合成数据集中的图像要复杂得多,为了更好地支持在无成对真实世界图像上的训练,我们进一步引入了暗通道先验以在训练期间生成伪深度监督,并使用天空掩模来排除天空的歧义。因此,我们可以成功地将训练范围从合成图像扩展到真实世界图像,并在去雾性能上取得了显著进步。总的来说,我们的贡献可以总结为:

  • 我们提出了一种新型的无成对去雾框架,显式地对雾场景的散射系数(即密度)和深度图进行建模。所提出的基于物理的框架大大缓解了无成对去雾方法中的不适定问题。
  • 受到这样的直觉启发:空间变化的雾厚度反映了场景深度,我们的模型学会从雾图像预测深度信息。然后,仅使用无成对的雾和清洁图像,我们的模型能够预测清洁图像的深度信息。
  • 有了估计的场景深度,我们的模型可以通过改变散射系数生成不同厚度的雾图像。这种特性作为自增强策略,更好地训练去雾网络。
  • 引入了双重对比感知损失,以拉近去雾/加雾图像与它们相应的正样本的距离,并在嵌入空间中将它们与负样本推开。因此,恢复/加雾图像的质量得到了进一步提高。
  • 我们引入了DCP以提供伪深度监督,并采用天空掩模损失,以更好地支持和稳定在无成对真实世界图像上的训练。
  • 在合成和真实图像上进行了广泛的实验,以揭示我们设计的效用。所提出的框架在泛化能力方面显示出比其他最先进方法的明显优势。

本文的初步版本已在Yang等人中发表。在原始版本中,整个框架的训练仅由对抗性损失驱动,这限制了去雾能力,并有时会导致伪影。此外,由于真实户外环境在规模、深度范围和雾的分布方面与室内场景大相径庭,以前的D4在训练时仅限于合成室内数据集,并且在微调户外数据集时需要预训练的权重。为了解决这些问题,本文提出了高级版本D4+。升级后的框架利用双重对比感知损失进一步提高了雾去除和生成的性能。此外,它引入了DCP以生成伪深度监督,并使用天空掩模损失将训练范围从室内合成数据集扩展到真实的户外场景,并在去雾性能上取得了显著改进,这在第3.5节中有详细讨论。这种扩展与引入的对比损失使整个框架对真实世界的雾场景更加健壮和有效。我们在合成和真实数据集上进行了更详细的实验,以验证我们方法的有效性。

相关工作

本节简要回顾了与我们密切相关的先前去雾工作,这些工作被分为基于先验的、监督学习和无监督学习基础的方法。此外,还简要讨论了对比学习的概念及其相关工作。

2.1 基于先验的方法

为了缓解单图像去雾的不适定性,早期尝试集中在从统计分析或观察中发现无雾图像的先验。其中,He等人提出了暗通道先验,它假设在无雾自然图像中,RGB通道中的局部最低强度应该接近零。Zhu等人引入了颜色衰减先验,他们指出像素的值和饱和度之间的差异应该与场景深度在线性模型中正相关。在Fattal中,Fattal发现小区域的值在RGB空间中主要分布在一维线上。此外,Berman等人提出了另一种基于观察的单图像去雾方法,即在无雾图像中用于聚类的像素在雾图像的RGB空间中形成一条线,称为雾线。作为一个严重的缺陷,这些方法都是基于手工制作的先验,这些先验并不总是与复杂的真实环境一致。
2.2 监督学习方法

得益于CNN的成功和大规模合成数据集的发展,基于深度学习的监督方法放宽了手工制作先验的限制,并占据了主导地位。例如,DehazeNet是第一个通过构建卷积神经网络以端到端的方式从雾图像中估计传输图的方法。Ren等人提出了一个多尺度卷积网络,从粗糙到精细预测传输图。然而,这些方法可能会在分别估计传输和大气光时遭受累积误差。为了解决这个问题,AODNet重新制定了方程,同时估计传输图和大气光。此外,一些方法直接从雾输入估计清洁图像,而没有显式地建模大气散射模型。最近,一些尝试将域适应方法引入图像去雾任务,旨在缩小合成数据和真实数据之间的领域差距。总的来说,尽管监督方法在合成数据集上取得了显著的性能,但它们容易过拟合到所提供的培训数据,并且对其他雾图像,特别是真实世界的雾泛化能力差。

2.3 无监督学习方法

与监督方法相比,无监督学习方法不依赖成对的监督。一些无监督方法可以直接在雾图像上进行训练。例如,Li等人以零样本的方式进行去雾,将雾图像分解为清洁图像和其他组成部分。DeepDCP通过在雾图像上最小化基于DCP的损失来训练网络。在这些方法中,由于清洁图像没有参与训练,因此清洁图像域的内在属性没有得到有效考虑,从而限制了它们的性能。无成对去雾方法从无成对的清洁和雾图像中学习去雾映射。除了一些尝试在GAN监督下从雾图像中分离清洁组分的方法外,大多数无成对去雾方法都基于CycleGAN和其他特定设计。然而,这些方法通常在生成雾图像时忽略了深度信息和密度的多样性。这些因素的缺失导致不真实的雾生成,进而影响去雾性能。为了解决这些问题,在所提出的D4(+)框架中,我们专注于探索雾和清洁图像中包含的深度信息和散射系数。

2.4 对比学习

对比学习是一个在表示学习领域快速发展的自监督框架。其主要思想是通过在特征空间中拉近正样本,推开负样本的表示,来最大化不同领域之间的相互信息。最近,对比学习被用于一系列低级视觉任务,并在性能上取得了显著改进。具体来说,Han等人将PatchNCE损失应用于单图像水下图像恢复。Zhang等人提出了对比解耦编码和对比特征细化,用于盲图像超分辨率。Wu等人利用预训练的VGG实现单图像去雾的对比学习。然而,对比学习在无成对图像去雾上的应用鲜有研究。在本文中,我们提出了一种加权双重对比损失,以进一步提高原始D4框架的去雾性能。

提出的方法

CycleGAN是一个广泛采用的框架,用于无成对图像到图像的翻译。一方面,GAN损失被用来强制图像在两个领域之间进行翻译。另一方面,循环重建损失在保持内容一致性方面表现良好。对于图像去雾,基于CycleGAN的方法通常包含一个去雾网络和一个加雾网络,它们分别从对方预测清洁图像和雾图像。在这里,我们认为这样的做法可能是有问题的。在这些方法中忽略了两个关键属性,深度和密度。因此,生成的雾通常缺乏现实感和多样性,这进一步影响了去雾网络的学习。为了解决这些问题,在Yang等人中,我们提出了一个名为D4(通过将传输图分解为密度和深度进行去雾)的新型无成对去雾框架。然而,在所提出的D4框架中,雾/清洁域之间的翻译仅由对抗性损失驱动,这可能会限制模型的性能。

为了充分发挥我们提出的D4框架的潜力,在高级版本D4+中,我们进一步引入了双重对比感知损失,以联合缩小去雾/加雾图像与它们相应的正样本之间的差距。整体框架和训练过程如下所述。

3.1 整体框架

给定一个清洁图像集 X C = { C } i = 1 N 1 X_C = \{C\}^{N_1}_{i=1} XC={C}i=1N1和一个雾图像集 X H = { H } i = 1 N 2 X_H = \{H\}^{N_2}_{i=1} XH={H}i=1N2,其中 N 1 N_1 N1 N 2 N_2 N2分别代表两组的基数。与合成雾-清洁图像数据集不同,这两组之间没有成对信息。如图3所示,我们的D4+框架由三个网络组成:去雾网络 G D G_D GD,深度估计网络 G E G_E GE和细化网络 G R G_R GR

3.1.1 去雾网络

去雾网络 G D G_D GD被训练用于从雾图像 H H H中估计传输图 t ^ \hat{t} t^和散射系数 β ^ \hat{\beta} β^,可以表述为:
( β ^ , t ^ ) = G D ( H ) . (\hat{\beta}, \hat{t}) = G_D(H). (β^,t^)=GD(H).
根据等式1,可以通过估计的传输 t ^ \hat{t} t^和散射系数 β ^ \hat{\beta} β^计算雾图像的深度图 d d d
d ( z ) = − ln ⁡ ( t ^ ( z ) ) / β ^ . d(z) = -\ln(\hat{t}(z)) / \hat{\beta}. d(z)=ln(t^(z))/β^.

3.1.2 深度估计网络

深度估计网络 G E G_E GE旨在从清洁图像 C C C中估计深度 d ^ \hat{d} d^,可以表述为:
d ^ = G E ( C ) . \hat{d} = G_E(C). d^=GE(C).
请注意,我们的深度估计网络 G E G_E GE与其他单图像深度估计网络具有相同的功能,但在训练期间,我们不使用任何现有的深度估计器的预训练权重或真实深度监督。在我们的D4+框架中,网络 G E G_E GE是使用去雾网络 G D G_D GD的伪监督进行训练的,更多细节在第3.4节中介绍。

3.1.3 细化网络

与以前基于CycleGAN的方法直接从输入清洁图像合成雾图像不同,所提出的D4+通过考虑两个物理属性(密度和深度)来模拟加雾(重新加雾)过程。具体来说,我们首先通过结合清洁图像、其估计的深度和散射系数来导出一个粗略的假雾图像。然后,细化网络 G R G_R GR作为一个图像到图像的翻译网络,将粗略的假雾图像映射到遵循真实雾图像分布的雾图像,可以表述为:
H ^ = G R ( H ^ c o a r s e ) . \hat{H} = G_R(\hat{H}_{coarse}). H^=GR(H^coarse).
换句话说,所提出的细化网络可以被视为执行条件雾图像生成。给定深度和密度信息,细化网络旨在生成视觉上逼真的雾图像。

3.2 网络架构

在我们提出的D4+框架中,去雾网络 G D G_D GD和深度估计网络 G E G_E GE都基于efficientnet-lite3。具体来说,去雾模块 G D G_D GD包括一个传输估计子网络和一个散射系数估计子网络(简称β-子网络)。前者从输入雾图像预测传输图,其主干与Xian等人(2018)中的相同。它专注于使用预训练的Efficientnet-lite3逐步融合多尺度特征。β-子网络使用一系列卷积层处理从相同的预训练Efficientnet-lite3中提取的特征。由于散射系数代表雾密度,它在图像中全局分布,我们应用全局平均池化层来获取反映输入特征全局雾水平的压缩特征。然后使用这些特征估计散射系数作为一个标量。深度估计网络 G E G_E GE的架构如图2右侧所示。直接输出的深度图在[0, 1]范围内,然后映射到预定义的深度范围。我们的细化网络基于U-Net构建,详细架构在表1中显示。

3.3 训练过程

如图3所示,我们D4+的训练包含两个分支:(i) 去雾-加雾分支和(ii) 加雾-去雾分支。

3.3.1 去雾-加雾分支

通过将雾图像 H H H馈送到去雾网络 G D G_D GD,我们可以获得估计的传输图 t ^ \hat{t} t^,估计的散射系数 β ^ H \hat{\beta}_H β^H和计算出的深度 d H d_H dH。同时,去雾结果 c ^ \hat{c} c^可以通过以下方式计算:
c ^ ( z ) = H ( z ) − A ^ ⋅ t ^ ( z ) + A ^ , \hat{c}(z) = H(z) - \hat{A} \cdot \hat{t}(z) + \hat{A}, c^(z)=H(z)A^t^(z)+A^,
其中 A ^ \hat{A} A^是通过先验估计的大气光。有了去雾图像 c ^ \hat{c} c^,深度估计器 G E G_E GE预测从它来的深度 d ^ H \hat{d}_H d^H。然后,我们使用先前估计的散射系数 β ^ H \hat{\beta}_H β^H和估计的 d ^ H \hat{d}_H d^H 对去雾图像 c ^ \hat{c} c^进行重新加雾。具体来说,我们首先使用雾形成过程导出粗略雾图像 H ^ c o a r s e \hat{H}_{coarse} H^coarse
H ^ c o a r s e ( z ) = c ^ ( z ) ⋅ e − β ^ H d ^ H ( z ) + A ^ ( 1 − e − β ^ H d ^ H ( z ) ) , \hat{H}_{coarse}(z) = \hat{c}(z) \cdot e^{- \hat{\beta}_H \hat{d}_H(z)} + \hat{A}(1 - e^{- \hat{\beta}_H \hat{d}_H(z)}), H^coarse(z)=c^(z)eβ^Hd^H(z)+A^(1eβ^Hd^H(z)),
我们采用最亮的像素作为大气光 A A A用于雾生成。然后,粗略雾图像 H ^ c o a r s e \hat{H}_{coarse} H^coarse通过细化网络处理以获得最终的重新加雾图像 H ^ = G R ( H ^ c o a r s e ) \hat{H} = G_R(\hat{H}_{coarse}) H^=GR(H^coarse)

3.3.2 加雾-去雾分支

在加雾-去雾分支中,我们从集合 X C X_C XC中采样一个清洁图像 C C C。深度估计网络 G E G_E GE被用来从图像 C C C估计深度图 d ^ C \hat{d}_C d^C。然后,我们从预定义的均匀分布中随机采样一个 β C \beta_C βC。按照等式7中呈现的相同物理过程,我们导出具有可变雾密度的粗略雾图像 h ^ c o a r s e \hat{h}_{coarse} h^coarse,即
h ^ c o a r s e ( z ) = C ( z ) ⋅ e − β C d ^ C ( z ) + A ( 1 − e − β C d ^ C ( z ) ) . \hat{h}_{coarse}(z) = C(z) \cdot e^{-\beta_C \hat{d}_C(z)} + A(1 - e^{-\beta_C \hat{d}_C(z)}). h^coarse(z)=C(z)eβCd^C(z)+A(1eβCd^C(z)).
我们的假雾图像 h ^ \hat{h} h^然后由细化网络 G R G_R GR合成,并通过去雾网络 G D G_D GD进一步处理以预测传输 t ^ C \hat{t}_C t^C,散射系数 β ^ C \hat{\beta}_C β^C。最后,我们可以使用等式6中呈现的相同计算重建清洁输入。值得注意的是,在这一分支中,由于 β C \beta_C βC是从预定义范围中随机采样的,我们的加雾过程可以被视为去雾网络后续训练的数据增强操作。

3.4 训练目标

在所提出的D4+框架中,我们共同训练所提出的三个网络以执行去雾和加雾循环。与CycleGANs类似,循环一致性损失和对抗性训练损失被采用,以惩罚内容一致性和数据分布。不同地,我们提出了新颖的伪散射系数监督损失和伪深度监督损失,用于从无成对的雾和清洁图像中学习物理属性(密度和深度)。此外,通过采用双重对比感知损失,我们在原始D4框架的基础上进一步提高了性能。

循环一致性损失

循环一致性损失强加了一个中间图像从一个领域转移到另一个领域后应该能够转移回去的条件。在我们的D4+框架中,重建的清洁图像 C ^ \hat{C} C^和雾图像 H ^ \hat{H} H^应该与它们的输入对应物 C C C H H H一致。我们D4+中的循环一致性损失可以写成以下形式:
L c y c = E C ∼ X C ∥ C − C ^ ∥ 1 + E H ∼ X H ∥ H − H ^ ∥ 1 , L_{cyc} = \mathbb{E}_{C \sim X_C} \left\| C - \hat{C} \right\|_1 + \mathbb{E}_{H \sim X_H} \left\| H - \hat{H} \right\|_1, Lcyc=ECXC CC^ 1+EHXH HH^ 1,
其中 ∥ ⋅ ∥ 1 \left\| \cdot \right\|_1 1表示 ℓ 1 \ell_1 1范数。

对抗学习损失

对抗学习损失评估一个生成图像是否属于特定领域。换句话说,它惩罚我们的去雾和加雾图像应该是视觉上真实的,并遵循训练集 X H X_H XH X C X_C XC中图像的相同分布。我们采用LSGAN,因为它在稳定性和视觉质量方面表现出色。对于去雾网络 G D G_D GD和相应的判别器 D C D_C DC,对抗损失可以表示为:
L a d v ( D C ) = E [ ( D C ( c ) − 1 ) 2 ] + E [ ( D C ( c ^ ) ) 2 ] , L_{adv}(D_C) = \mathbb{E}[(D_C(c) - 1)^2] + \mathbb{E}[(D_C(\hat{c}))^2], Ladv(DC)=E[(DC(c)1)2]+E[(DC(c^))2],
L a d v ( G D ) = E [ ( D C ( c ^ ) − 1 ) 2 ] , L_{adv}(G_D) = \mathbb{E}[(D_C(\hat{c}) - 1)^2], Ladv(GD)=E[(DC(c^)1)2],
其中 c c c是来自清洁图像集 X C X_C XC的真实清洁样本, c ^ \hat{c} c^是来自 G D G_D GD的去雾结果, D C D_C DC是判断输入图像是否属于清洁领域的判别器。对于雾细化网络 G R G_R GR和相应的判别器 D H D_H DH,对抗损失采用相同的形式。

双重对比感知损失

在我们最初的D4中,整个框架仅由对抗性损失驱动。然而,判别器通常限于指导生成器产生适当适应目标分布的样本,特别是当没有成对监督时。为了解决这个问题,受到相关工作的启发,我们为无成对去雾框架提出了双重对比感知损失,它强制去雾/加雾图像在嵌入空间中更接近清洁/雾样本,并远离雾/清洁样本。因此,加雾和去雾过程都将从这种正则化中受益。具体来说,我们采用了预训练的VGG19来提取图像的嵌入。双重对比感知损失可以表述为:
L d c = ∑ j = 1 n ω j ( ∥ ϕ j ( c ^ ) − ϕ j ( p ) ∥ 1 / ( ∥ ϕ j ( c ^ ) − ϕ j ( q ) ∥ 1 + ∥ ϕ j ( h ^ ) − ϕ j ( q ) ∥ 1 ) ) , L_{dc} = \sum_{j=1}^{n} \omega_j \left( \left\| \phi_j(\hat{c}) - \phi_j(p) \right\|_1 \right. \left. / \left( \left\| \phi_j(\hat{c}) - \phi_j(q) \right\|_1 + \left\| \phi_j(\hat{h}) - \phi_j(q) \right\|_1 \right) \right), Ldc=j=1nωj(ϕj(c^)ϕj(p)1/(ϕj(c^)ϕj(q)1+ ϕj(h^)ϕj(q) 1)),
其中 ϕ j ( ⋅ ) \phi_j(\cdot) ϕj()表示从预训练的VGG19的第 j j j层提取的特征, ω j \omega_j ωj指的是第 j j j层的权重。具体来说,我们采用了预训练的VGG19的第3层、第5层和第13层提取的特征,并且相应的权重被分配为0.4、0.6和1。 p p p q q q是从 X C X_C XC X H X_H XH中随机采样的清洁和雾图像。请注意, p p p q q q不是 C C C H H H的相同图像。

伪散射系数监督损失

伪散射系数监督损失惩罚了在加雾-去雾分支中用于雾生成的随机采样散射系数 β C \beta_C βC与从生成的雾图像 h ^ \hat{h} h^估计的散射系数 β ^ C \hat{\beta}_C β^C之间的差异:
L s c a t t = ( β ^ C − β C ) 2 . L_{scatt} = (\hat{\beta}_C - \beta_C)^2. Lscatt=(β^CβC)2.
对于训练集中的雾图像 X H X_H XH,真实散射系数不可用。因此,我们选择使用随机采样的散射系数和相应的生成雾图像来训练所提出的去雾网络。

伪深度监督损失

根据观察,空间变化的雾厚度为感知场景深度提供了额外的线索,我们使用从雾图像 H H H预测的深度图 d H d_H dH作为伪真实深度。然后,我们训练深度估计网络 G E G_E GE从去雾图像 c ^ \hat{c} c^估计深度图 d ^ H \hat{d}_H d^H,即 d ^ H = G E ( c ^ ) \hat{d}_H = G_E(\hat{c}) d^H=GE(c^)。然后,我们定义训练损失,
L d e p t h = ∥ d ^ H − d H ∥ 1 . L_{depth} = \left\| \hat{d}_H - d_H \right\|_1. Ldepth= d^HdH 1.
总的来说,深度估计网络 G E G_E GE仅通过深度损失 L d e p t h L_{depth} Ldepth进行优化。其余模块通过循环损失、对抗损失和伪散射系数损失的加权组合共同优化:
L t o t a l = λ c y c L c y c + λ a d v L a d v + λ d c L d c + λ s c a t t L s c a t t , L_{total} = \lambda_{cyc} L_{cyc} + \lambda_{adv} L_{adv} + \lambda_{dc} L_{dc} + \lambda_{scatt} L_{scatt}, Ltotal=λcycLcyc+λadvLadv+λdcLdc+λscattLscatt,
其中 λ c y c \lambda_{cyc} λcyc λ a d v \lambda_{adv} λadv λ d c \lambda_{dc} λdc λ s c a t t \lambda_{scatt} λscatt是平衡不同项的权重。在我们的实验中,经验设置 λ c y c = 1 \lambda_{cyc} = 1 λcyc=1 λ a d v = 0.2 \lambda_{adv} = 0.2 λadv=0.2 λ d c = 0.0001 \lambda_{dc} = 0.0001 λdc=0.0001 λ s c a t t = 1 \lambda_{scatt} = 1 λscatt=1效果很好。由于 L d c L_{dc} Ldc的幅度较大,我们为 λ d c \lambda_{dc} λdc分配了一个较低的值以平衡每个项。

3.5 在真实世界图像上的训练

由于真实世界的雾图像与合成雾图像有很大不同,我们提出了以下训练策略,使我们的模型适合在真实世界数据上训练。

真实户外场景的伪深度监督

户外环境下的雾可能与合成数据集中的雾有很大不同。通常,室内去雾数据集中的雾分布几乎满足理想条件。具体来说,一方面,室内场景的深度信息比合成户外样本更准确,因为前者通常由专业深度相机测量。而大多数户外去雾数据集直接应用深度估计算法,通常在估计深度上包含大误差。根据Guo等人的研究,NYU-Depth V2只有0.5米的平均误差,而KITTI平均超过7米。另一方面,室内数据集中的雾通常严格根据大气散射模型(等式1)进行模拟。显然,在室内数据集中,深度和雾之间的关系清晰且易于学习。然而,当涉及到真实户外场景时,情况变得复杂。首先,在野外捕获的图像可能在规模上有所不同,这可能极大地影响深度估计的学习。此外,与室内数据集相比,后者的深度范围通常是0-10米,户外场景中的最大深度可能超过500米。此外,在真实场景中,雾的分布可能不严格符合大气散射模型。这些因素将使我们的两个子网络(即去雾网络和深度估计网络)难以共同优化。因此,在训练的早期阶段,用于计算伪深度监督的传输通常质量较低,从而增加了训练的难度。实际上,在我们最初的D4中,其在真实户外场景上的训练依赖于在室内数据集上预训练的模型进行微调。为了解决这个问题并提高模型对真实场景的适用性,我们提议引入暗通道先验来协助深度估计网络的学习。具体来说,在伪深度监督损失(等式13)中,我们使用DCP代替我们去雾网络估计的传输 t ^ H \hat{t}_H t^H来进一步计算伪真实深度 d ~ H \tilde{d}_H d~H。修改后的损失可以表述为:
L d e p t h = ∥ d ^ H − d ~ H ∥ 1 , L_{depth} = \left\| \hat{d}_H - \tilde{d}_H \right\|_1, Ldepth= d^Hd~H 1,
其中伪真实深度 d ~ H \tilde{d}_H d~H是根据我们去雾网络 G D G_D GD估计的散射系数 β ^ H \hat{\beta}_H β^H和传输 t ~ H \tilde{t}_H t~H计算的,可以表述为:
d ~ H = − ln ⁡ ( t ~ H ) / β ^ H . \tilde{d}_H = -\ln(\tilde{t}_H) / \hat{\beta}_H. d~H=ln(t~H)/β^H.
通过这样做,深度估计网络可以获得更高质量的伪深度监督,我们的整个模型能够直接在真实户外场景上从头开始训练。

消除天空区域的歧义

在真实世界户外场景上进行无成对训练时,另一个问题来自于大天空区域,即天空区域的清洁/雾歧义。根据大气散射模型(等式1),清洁和雾天空区域都具有大值的深度(相当于,传输很少)。如图5所示,雾/清洁图像中的天空区域可能具有相似的外观。这种歧义会混淆判别器,进而影响对抗性训练的稳定性和有效性,导致次优的去雾性能。基于以上分析,很自然地引入掩模来在训练期间排除天空区域的影响。尽管在去雾中使用掩模的想法在几个先前工作中已经讨论过,其中大多数采用天空掩模来改进传统去雾方法,我们是第一个为无成对去雾引入天空掩模的。具体来说,对于清洁和雾图像,我们采用一种方法来获得天空掩模,如图5b、d所示。在训练期间,我们希望去雾损失更集中在非天空区域,因此在对抗性损失中,只有非天空区域被馈送到训练去雾判别器并计算对抗性损失。对于去雾网络 G D G_D GD和相应的 D C D_C DC,修改后的对抗性损失可以表述为:
L a d v ( D C ) = E [ ( D C ( c M ) − 1 ) 2 ] + E [ ( D C ( c ^ M ) ) 2 ] , L_{adv}(D_C) = \mathbb{E}\left[(D_C(c_M) - 1)^2\right] + \mathbb{E}\left[(D_C(\hat{c}_M))^2\right], Ladv(DC)=E[(DC(cM)1)2]+E[(DC(c^M))2],
L a d v ( G D ) = E [ ( D C ( c ^ M ) − 1 ) 2 ] , L_{adv}(G_D) = \mathbb{E}\left[(D_C(\hat{c}_M) - 1)^2\right], Ladv(GD)=E[(DC(c^M)1)2],
其中 c M = c ⊙ ( 1 − M c ) c_M = c \odot (1 - M_c) cM=c(1Mc) c ^ M = c ^ ⊙ ( 1 − M c ^ ) \hat{c}_M = \hat{c} \odot (1 - M_{\hat{c}}) c^M=c^(1Mc^)表示掩模清洁样本和去雾样本,( M_c, M_{\hat{c}} 分别是 分别是 分别是c 和 和 \hat{c}$的天空掩模。同样,由于循环一致性损失的重新加雾-去雾部分对去雾性能贡献更多,为了使损失更集中在非天空区域,我们也在循环一致性损失的相应部分采用掩模,可以表述为:
L c y c = E C ∼ X C ∥ ( 1 − M C ) ⊙ ( C − C ^ ) ∥ 1 + E H ∼ X H ∥ ( H − H ^ ) ∥ 1 , L_{cyc} = \mathbb{E}_{C \sim X_C} \left\| (1 - M_C) \odot (C - \hat{C}) \right\|_1 + \mathbb{E}_{H \sim X_H} \left\| (H - \hat{H}) \right\|_1, Lcyc=ECXC (1MC)(CC^) 1+EHXH (HH^) 1,
其中 M C M_C MC M H M_H MH分别是清洁图像 C C C和雾图像 H H H的天空掩模。

实验

4.1 实验配置

在这项工作中,我们采用了RESIDE、Foggy Cityscape和I-HAZE数据集来训练和评估我们的模型以及其他候选模型的性能。

4.1.1 数据集

RESIDE数据集是一个广泛使用的大规模去雾基准数据集,包括以下子集:(i) ITS/OTS,包含13,990/313,950个合成室内/室外雾图像及其真实参考,用于训练。(ii) SOTS-indoor/outdoor,包括500个合成室内/室外雾图像及其真实参考,用于测试。(iii) RTTS和URHI,都包含超过4,000个真实雾图像,没有真实参考图像。Foggy Cityscape数据集是使用Cityscapes数据集上的雾模拟生成的。整个数据集包括20,550对合成雾/清洁图像。I-HAZE数据集是通过在室内环境中应用专业的雾生成器生产的,包含35对雾/清洁图像。由于I-HAZE数据集不用于训练,我们采用整个I-HAZE数据集进行测试。

4.1.2 对比方法

为了验证我们方法的有效性,我们将我们的D4+与几种代表性的最新去雾算法进行了比较。在这些方法中,一些使用成对数据进行训练,包括DehazeNet、AODNet、EPDN、HardGAN、FFANet、DADehaze和PSD。而其他方法是在没有成对数据的情况下训练的,包括DCP、CycleGAN、DeepDCP、CycleDehaze、DisentGAN、YOLY和RefineDNet。

4.1.3 指标

我们选择PSNR、SSIM和CIEDE2000作为在具有真实参考的 数据集上定量评估性能的指标。在这些指标中,PSNR和SSIM的值越高表示质量越好,而CIEDE2000的值越低表示越好。对于真实参考图像不可用的情况,我们采用FADE进行定量评估。FADE测量图像中的雾密度,FADE值越低表示去雾结果中残留的雾越少,这反映了更好的去雾能力。

4.1.4 实现细节

在训练阶段,我们采用了Isola等人(2017)提出的判别器,补丁大小为30×30。使用Adam优化器,其中β1 = 0.9,β2 = 0.999,学习率lr = 10^-4,批量大小为2来优化网络。引入了余弦退火策略来改变学习率。所有训练样本都被调整到256 × 256的大小,其中一半进行了水平翻转以进行数据增强。对于真实世界图像,除了数据增强外,它们的亮度和对比度还会随机改变。网络在NVIDIA RTX 2080Ti GPU下使用Pytorch框架进行训练。至于散射系数β和深度的范围,当在ITS数据集上训练时,我们将β的范围设置为[0.6, 1.8],深度设置为[0.2, 5],这在训练中表现良好。当涉及到户外场景时,为了更好地适应户外环境,我们将散射系数和深度的范围设置为[0.010, 0.035]和[20, 350]。

5 性能评估

为了定量评估我们的D4+的性能和泛化能力,我们在基准数据集上进行了一系列实验。具体来说,我们在ITS数据集上训练了我们的模型。为了公平比较,所有监督方法都在ITS数据集内使用成对训练数据,然而,包括我们的D4+在内的无成对方法在训练期间放弃了所有成对信息。考虑到SOTS-indoor与ITS的合成方式相同,我们选择它作为我们的测试集之一。而SOTS-outdoor、I-HAZE和Foggy Cityscape在场景和雾类型上有所不同,这四个测试集的结果可以反映不同模型的去雾泛化能力。定量结果在表2中报告。从SOTS-indoor数据集的结果中,我们可以看到,监督方法HardGAN和FFANet在所有指标上占据了第一和第二位,具有很大的优势,这表明它们具有强大的拟合能力。然而,我们提出的D4+是在没有使用成对训练数据的所有方法中表现最好的,甚至超过了一些监督去雾方法。相比之下,当涉及到SOTS-outdoor、I-HAZE和Foggy Cityscape数据集时,由于这些数据集中的样本与训练数据不一致,FFANet和HardGAN失去了它们的主导地位,这部分揭示了监督去雾方法的过拟合问题。而我们的方法摆脱了这样的缺陷,在所有三个数据集中表现优于其他方法。具体来说,我们的D4+在七个指标中排名第一,在两个指标中排名第二。此外,测试数据集的定性结果如图4、5、6和图7所示,供视觉比较。

从图4中我们可以看到,FFANet和我们的D4+都可以彻底去除雾并生成清晰的结果。而其他方法的结果仍然可以观察到雾。包括PSD、DisentGAN、CycleDehaze和CycleGAN在内的一些方法遭受了颜色失真和棋盘效应等伪影。当涉及到与训练数据不同的样本时,如图6所示,监督方法FFANet完全无法去除雾,并遭受严重的失真。尽管包括DehazeNet、AODNet、CycleGAN、PSD、DeepDCP和YOLY在内的一系列方法在远处建筑物上留下了薄雾。DisentGAN的结果在天空区域存在一些伪影。尽管DCP更彻底地去除了雾,但其结果过度饱和,特别是在天空区域。RefineDNet成功去除了雾,但它也倾向于过度去雾图像。所有过度去雾的区域在图6中用绿色箭头指出。在图7中,大多数结果无法彻底去除远处物体上的雾。此外,AODNet、HardGAN、CycleGAN、CycleDehaze、DisentGAN和PSD产生的结果颜色明显偏离真实情况。FFANet仍然遭受严重的伪影。DeepDCP和RefineDNet的结果也倾向于过度去雾,使结果全局或局部太暗。总的来说,与其他方法相比,我们的D4和D4+可以更好地去除雾,并成功摆脱任何伪影或过度去雾。

5.2 在真实世界数据集上的实验

为了进一步评估我们的模型在实际使用中的性能,即在真实户外场景下,我们使用无成对的真实户外雾/清洁图像训练了我们的D4+和其他无成对去雾方法。具体来说,我们使用了包含3577张真实户外清洁图像和2903张来自RESIDE的高质量雾图像的RESIDEunpaired。我们使用Salazar-Colores等人的方法来获得图像的天空掩模。此外,一些在ITS数据集上训练的监督方法,以及根据Yang等人在无成对真实户外数据集上微调的我们最初的D4,也包括在内进行比较。性能在RTTS数据集上以非参考指标FADE进行评估。定量结果在表3中报告,从中我们可以推断出我们的方法D4+在FADE上排名第一。由于FADE测量图像中的雾密度,表3中的结果无疑验证了我们在彻底去除雾方面的优势。图8显示了RTTS数据集中的两个样本。在样本中,D4+可以更彻底地去除雾。CycleDehaze产生了过于模糊的结果。PSD可以提高图像的亮度,但其结果在视觉上不自然。其他方法留下的雾比我们的方法更厚。此外,从定量和定性结果来看,我们的D4+比最初的D4有显著改进,这表明我们为真实户外数据集提出的训练范式是有效的。

5.3 在深度估计和雾生成上的实验

我们注意到,通过伪深度监督的设计,我们的网络能够学习从无成对的雾和清洁图像中估计相对深度图的能力。图9显示了NYU-Depth V2数据集上深度估计的一些案例,从中我们可以推断出,即使仅使用无成对监督,我们的网络也能够生成视觉上合理的深度图,这在一定程度上揭示了我们设计的有效性。此外,由于雾的模拟需要深度信息,有了更准确的估计深度,我们的模型自然能够生成比其他方法如CycleGAN更真实的雾图像。此外,如图10b所示,我们的模型可以从室内和室外场景中预测合理的相对深度图。在估计深度的基础上,通过控制输入散射系数的值,我们的模型能够生成不同厚度的真实雾(图10c-e)。

5.4 在估计雾密度上的实验

由于我们的去雾网络在训练期间执行散射系数估计,在这一部分中,我们检验了散射系数估计模块是否正常工作。具体来说,我们首先为不同雾密度下相同场景估计散射系数。如图11a-c所示,估计的散射系数与雾密度相对一致。此外,我们还尝试从各种户外场景中估计散射系数。从图11d-f中,我们可以推断出,我们模型的这种能力在真实户外场景中也得到了很好的泛化。即使在不同场景下,预测的散射系数与视觉上的雾效果相对一致。然而,如果我们比较图11a-f,可以发现户外场景中的雾效应更加明显,但我们的模型预测的散射系数较小。我们推断这是因为户外场景的深度远大于室内场景,根据ASM,户外场景的散射系数较小,以产生类似的雾效应。这意味着当场景深度差异很大时,绝对值的比较价值较小。总的来说,我们的模型也可以有效地估计雾密度,这有可能作为非参考指标来评估去雾性能。

5.5 在模型效率上的实验

为了进一步比较方法的效率,我们进行了实验,测量了去雾模型的参数数量和每秒浮点运算次数(FLOPS)。具体来说,只考虑每个模型的去雾部分。比较结果在表4中报告。从比较中,我们可以推断出,我们的D4+在没有成对数据训练的模型组中需要的参数最少,在所有参与的代表性去雾方法中FLOPs非常少。一些轻量级模型如AODNet和DehazeNet在参数和FLOPS方面具有极大的优势。然而,如表2所示,这些模型需要监督训练,并且性能比我们的无成对模型差。一方面,这样的结果表明我们的模型在效率和去雾性能方面与其他方法相比具有出色的折衷。另一方面,我们的D4+可以在如此轻量级的模型上实现显著的去雾性能,这进一步验证了我们提出的去雾框架的有效性。

6 消融研究

为了验证我们提出的伪监督、自增强和双重对比感知损失的有效性,我们在SOTS-indoor上进行了一系列的消融研究。具体来说,我们移除了这些机制,并测试了它们在雾去除和生成方面的能力。

伪监督机制

我们首先检查我们模型中的伪监督机制,由于伪β监督和伪深度监督紧密相连,我们必须一起添加或移除它们。没有这两种伪监督(w/o PS),我们移除了去雾网络GD估计β的功能,并将深度估计网络GE改为直接估计传输图。总体而言,这种设置使我们的框架退化为普通的CycleGAN-like架构。如表5中的第1组和第2组所示,没有伪监督,去雾性能的PSNR下降了3dB以上。此外,从图13中可以看出,没有伪监督的模型在绿色边框区域产生了最雾蒙蒙的结果,在图12中,生成的雾太薄且视觉上不连续。所有这些都验证了伪监督在我们整个框架中的重要位置。

自增强机制

然后我们测试了自增强机制的有效性。为了移除自增强,我们用固定值替换了加雾-去雾分支中随机生成的β,其他设置保持不变。结果报告为表5中的第2组。与具有自增强的模型(第3组)相比,去雾性能也存在很大差距。如图13所示,没有自增强的模型仍然在绿色边框区域留下了可观的雾。至于雾的生成,产生的雾在图像中分布过于平均。而具有自增强的模型产生的雾在近侧较薄,符合ASM模型,更加真实。

散射系数的范围

此外,我们进行了实验,探讨自增强机制中散射系数范围对性能的影响。具体来说,我们尝试扩大或缩小散射系数的采样范围,结果性能报告在表6中。从表格中,我们可以推断出,缩小和扩大散射系数的范围都会导致去雾性能的下降。更具体地说,与扩大散射系数的范围相比,缩小其范围会导致更严重的性能下降。我们认为原因在于缩小的散射系数范围不能完全覆盖数据集中的雾密度。因此,模型无法适当处理异常情况,从而导致性能下降。相比之下,扩大范围不会引起这样的缺陷,但每个模型在容量和表示能力上都有其局限性。过度扩大散射系数的范围将相应地损害特定雾场景的去雾性能。

双重对比感知损失

我们还进行了实验,探讨我们提出的双重对比感知损失的效果。具体来说,如图4-7所示的实验组,我们测试了各种λdc值,以寻找最优权重。由于提出的双重对比损失比其他损失项具有更大的幅度,我们选择了一系列较低的权重,即10-2到10-5进行实验。结果表明,当λdc的值过大时,对比损失可能会对去雾性能造成伤害。当λdc = 0.01时,去雾过程会受到影响,结果中出现伪影。我们推断过度正则化导致了这种现象。λdc = 0.0001的模型取得了最佳结果,并在25.42 dB的基础上获得了另外0.37dB的PSNR。从图13d、e中,我们可以推断出,具有双重对比损失的模型可以更彻底地去除雾。在图12中,(e)中的近侧雾比(d)中的轻,这揭示了具有双重对比损失的模型可以生成更符合ASM模型的雾。总之,雾的去除和生成都可以从我们提出的双重对比感知损失中受益。

真实世界图像上的训练策略

最后,我们进行了实验,比较了真实世界雾图像的不同训练策略。作为我们的默认设置,如第3.5节所述,我们在无成对的真实户外训练数据集上从头开始训练我们的D4+,使用DCP生成伪深度监督,并使用天空掩模损失优化模型。为了比较,我们使用了仅在ITS上训练的我们的D4+,以及在无成对真实户外训练数据集上微调的版本,但没有使用我们为真实世界图像提出的策略。性能在RTTS数据集上以FADE为依据进行评估。定量结果在表7中显示,从中我们可以推断出我们提出的训练策略带来了更好的结果。此外,图14显示了我们提出的天空掩模策略的有效性。未经天空掩模损失训练的模型生成的结果(图14b)遭受明显的伪影并留下更浓的雾。而我们的完整模型减轻了这些缺陷并生成了更好的去雾结果(图14c)。我们推断对天空区域的过度惩罚导致了伪影,我们的天空掩模可以帮助减轻这些缺陷。由于严重的伪影会影响FADE的计算,我们只采用定性结果来验证天空掩模的有效性。

7 对真实世界图像视觉质量的分析

根据我们的观察,尽管我们在真实世界数据集RTTS上取得了更好的FADE,但在某些情况下,RefineDNet的结果的视觉质量比我们的好。在这一部分,我们将简要分析原因,并尝试进一步增强我们的模型。真实世界雾图像的退化,特别是RTTS数据集中的一些案例,非常多样化,包括低光、噪声、块效应和浓雾。然而,这些退化大多超出了ASM模型的范围。此外,ASM模型本身有局限性,即它不能很好地处理天空区域,可能会导致光晕效应。所有这些因素都对我们模型在真实世界图像上的性能有害。

为了解决这些缺陷,RefineDNet提出了一种有效的方法,通过改进DCP处理的结果并执行感知融合来混合不同的去雾结果,以获得更有资格的结果。我们认为我们的方法也可以从这样的处理过程中受益,因此我们尝试用我们估计的传输图替换RefineDNet中嵌入的DCP。由于预训练的RefineDNet更好地适应了原始DCP的传输幅度,我们首先根据 min ⁡ γ ∥ mean ( T γ D 4 ) − mean ( T D C P ) ∥ \min_{\gamma} \left\| \text{mean}(T_{\gamma D4}) - \text{mean}(T_{DCP}) \right\| minγmean(TγD4)mean(TDCP)对我们的传输进行修改,使其接近DCP的幅度,其中 T D 4 T_{D4} TD4是我们方法的传输, T D C P T_{DCP} TDCP是由DCP计算的传输。我们可以解出 γ = log ⁡ ( mean ( T D C P ) ) / log ⁡ ( mean ( T D 4 ) ) \gamma = \log(\text{mean}(T_{DCP})) / \log(\text{mean}(T_{D4})) γ=log(mean(TDCP))/log(mean(TD4))。通过用我们的 T γ D 4 T_{\gamma D4} TγD4替换RefineDNet中嵌入的DCP,我们发现我们的去雾结果的视觉质量也得到了大幅提升,甚至可以超越RefineDNet的原始结果。由于光晕效应而丢失的细节得到了有效的恢复,并且遭受了较轻的其他伪影,如噪声和块效应。这些实验验证了,通过适当的后处理或细化步骤,我们的模型也可以克服由ASM模型带来的局限性。

8 结论和局限性

在本文中,我们提出了一个自增强的无成对图像去雾框架,称为D4(+),它将传输图的估计分解为预测密度和深度图。有了估计的深度,我们的方法能够以各种密度重新渲染雾图像作为自增强,从而显著提高去雾性能。此外,提出了双重对比感知损失,以迫使生成的去雾和加雾图像在嵌入空间中更接近相应的正样本,远离负样本,进一步提高了雾去除和生成的性能。此外,为了提高对复杂真实户外场景的适用性,我们提出通过引入DCP的传输来放松我们模型的训练,以协助深度估计网络的学习,并使用天空掩模来消除天空的歧义。广泛的实验验证了我们方法相对于其他最先进去雾方法的明显优势。此外,进行了广泛的消融研究,以揭示我们提出的模块和训练过程的有效性。

然而,我们的方法仍然有局限性,它可能会过高估计极亮区域的传输,这会误导深度估计网络对过亮区域预测较低的深度值。此外,我们基于ASM的网络几乎不考虑图像中的其他类型的退化,如噪声和块效应。当在复杂的真实世界图像上训练时,我们的模型有时会导致去雾结果中的天空区域出现欠平滑和光晕效应,这是基于ASM的去雾方法的常见问题。为了减轻这些问题,引入像引导滤波器(GF)或细化步骤这样的后处理模块是可行的。尽管如此,我们进一步分解物理模型中变量的思想可以扩展到其他任务,如低光增强。我们期待我们的方法能够为未来的工作带来创新,特别是对于低级视觉任务中的无成对学习。

声明

本文内容为论文学习收获分享,受限于知识能力,本文队员问的理解可能存在偏差,最终内容以原论文为准。本文信息旨在传播和学术交流,其内容由作者负责,不代表本号观点。文中作品文字、图片等如涉及内容、版权和其他问题,请及时与我们联系,我们将在第一时间回复并处理。

  • 14
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学视觉

您的赞赏是我们坚持下去的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值