本文主要是介绍适应CLIP作为图像去雾的聚合指导,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Adapt CLIP as Aggregation Instructor for Image Dehazing
2408.12317 (arxiv.org)
大多数去雾方法都存在感受野有限的问题,并且没有探索视觉-语言模型中蕴含的丰富语义先验,这些模型已在下游任务中被证明是有效的。
本文介绍了CLIPHaze,这是一个开创性的混合框架,它通过结合Mamba的高效全局建模能力与CLIP的先验知识和零样本能力,同时解决了这两个问题。
采用并行状态空间模型和基于窗口的自注意力机制,分别获得全局上下文依赖和局部细粒度感知。为了无缝地融合来自两条路径的信息,我们引入了CLIP指导的聚合模块(CAM)。
对于非均匀雾和均匀雾,CAM利用零样本估计的雾密度图和高质量图像嵌入(无退化信息)来显式和隐式地确定每个像素的最佳神经操作范围,从而自适应地融合具有不同感受野的两条路径。在
各种基准测试上的广泛实验表明,CLIPHaze达到了最先进的(SOTA)性能,特别是在非均匀雾的处理上。代码将在接受后公开。
Introduction
现有的基于学习的方法面临两个主要限制:(i)单层固有的有限感受野;(ii)未利用来自视觉-语言模型的丰富先验。
一些方法试图通过堆叠层来解决问题(i)。然而,通过堆叠层来获得大感受野可能不如预期那样有效。关于问题(ii),尽管对比语言-图像预训练框架(CLIP)[15]在诸如目标检测[16]和语义分割[17]等各种视觉任务中取得了显著成功,但CLIP中的语义先验知识在图像去雾任务中的应用尚未得到探索。
在本研究中,介绍了CLIPHaze,它同时解决了上述两个问题。CLIPHaze的基本单元是提出的Transformer-Mamba双聚合(TrambaDA)块,它采用双路径设计。在一条路径中,它利用基于窗口的自注意力[18]来获得每个像素相对于其最近邻特征的细粒度感知。在另一条路径中,目标是在单层内以较低的计算开销来补充全局感受野。得益于最近关于结构化状态空间序列模型(SSMs)的研究,与Transformer相比,它们在保持全局依赖建模能力的同时,随序列长度线性扩展。因此,使用选择性扫描空间状态序列模型(S6)块[19]作为该路径的核心,并采用VMamba[21]中提出的四向扫描策略来解决由视觉数据的非因果性质引起的“方向敏感”问题。直接的全局建模可以更好地恢复浓雾区域。相反,仅在浓雾斑块内执行局部运算符会导致恢复精度下降,因为无法提取有价值的恢复信息。
接下来的关键问题是如何在TrambaDA块中合理地聚合Transformer路径和Mamba路径。提出了CLIP指导的聚合模块(CAM),它利用CLIP强大的零样本能力和丰富的语义知识来进行无缝信息聚合。CAM的设计取决于雾的类型。虽然本文重点关注非均匀雾的去除,因为它与实际情况更为接近,但仍然为均匀雾的去除设计了一个专用架构,考虑到RESIDE[24]是最具影响力的基准测试,并为了进一步探索CLIP在图像去雾中的应用。
具体来说,对于非均匀雾的去除,先前的工作PMNet[25]已经证明,将雾密度图纳入其中是有益的。受此启发,本文认为使用雾密度来指导两条路径特征的聚合是有效的。
本文的关键见解是,不同雾密度的斑块需要不同的感受野。对于浓雾区域,来自Mamba路径的全局信息更为重要,而对于薄雾区域,来自Transformer路径的局部感知应占主导地位【本人注解:这个解释有点站不住,全文并没有给出合理的原理解释或实验证明】。然而,像PMNet那样使用网络中的中间特征作为雾密度图缺乏可解释性,并可能导致次优估计。因此,本文探索了CLIP强大的零样本能力来进行逐块的雾密度估计。
如图1所示,CLIP可以在一定程度上作为区分雾和清晰图像的指标。因此,我们将CLIP的雾提示特征与逐块图像特征之间的相似性视为雾密度。然而,如图1所示,几乎不可能找到最准确的手动提示来描述精确的雾况。此外,提示工程既费力又耗时。因此,本文将可学习的雾/清晰提示与雾和清晰图像一起编码到潜在空间中,然后在潜在空间内缩小图像和文本之间的距离。最后,使用可学习提示估计的密度图来生成两条路径的聚合权重。与显式特征聚合相比,本文为均匀雾采用了一种隐式聚合策略。
我们的主要见解是,不同类别或尺度的区域对感受野有不同的要求。将关于场景内容的语义信息融入网络有助于实现区域感知的自适应聚合。因此,我们对TrambaDA块的输入特征和来自修改后CLIP(不含退化信息)的图像嵌入进行双向交叉注意力操作,以获得语义嵌入表示。基于此,生成聚合权重。
贡献:
• 引入了一个开创性的框架,名为CLIPHaze。广泛的实验表明,我们的CLIPHaze在各种基准测试中优于最先进的方法,特别是在非均匀图像去雾方面。
• 提出的Transformer-Mamba双聚合(TrambaDA)块在同一层内同时实现了局部细粒度感知和直接全局建模,进一步探索了Mamba架构在低级视觉任务中的应用。
• 将CLIP引入图像去雾任务,利用CLIP强大的零样本能力和丰富的语义知识,为非均匀和均匀图像去雾设计了CLIP指导的聚合模块。
Method
Overall architecture
整体架构部分,CLIPHaze 基于一个分层的编码器-解码器框架。
给定一个雾霾图像 I_haze∈R^{H×W×3},我们首先使用一个 3×3 卷积层来提取浅层特征 Fs∈R^{H×W×C}。
然后,将浅层特征 Fs 输入到一个两级对称的编码器-解码器网络中。每个编码器/解码器阶段包含多个 Transformer-Mamba Dual Aggregation(TrambaDA)块以及下采样/上采样操作。
使用步长卷积和 PixelShuffle 来实现下采样和上采样,并在每个级别中添加编码器和解码器之间的跳跃连接。
最后,使用最后一个解码器阶段的输出以及输入的雾霾图像来生成无雾图像。
Transformer-Mamba Dual Aggregation Block
TrambaDA 块的目标是在单个层中同时实现局部细粒度感知和直接全局建模。因此,我们采用了一个并行的双路径设计,每条路径执行其各自的角色。TrambaDA 块的内部结构如图 2(b) 所示。
- Transformer Path:使用窗口基自注意力来捕获局部纹理和细节。将输入特征 Fin 分成非重叠的窗口,然后在每个窗口内执行自注意力操作。
- Mamba Path:使用状态空间模型(SSM)来构建,能够捕获非局部信息,对于去除雾霾至关重要。采用修改后的 S6 块来构建这一路径,并通过四向扫描策略来解决视觉数据的“方向敏感”问题。
TrambaDA 块是 CLIPHaze 框架中的核心组件,通过并行处理的两条路径(Transformer Path 和 Mamba Path)来分别实现局部和全局的特征提取。这种设计使得模型能够在单个层内同时捕捉图像的局部细节和全局上下文信息,从而更有效地去除雾霾。
Density-aware Aggregation Module (DAM)
DAM的核心是从CLIP中获取零样本估计的雾气密度图,该图指导网络为不同密度的区域确定最优的神经操作范围,从而实现改进的聚合结果。
雾气密度图估计:
受图1的启发,我们相信CLIP有潜力生成雾气密度图。在实践中,给定一张雾气图像 I_haze∈R^{H×W×3} 和一个描述雾气和清晰条件的提示对 T∈R^2(例如,['hazy image', 'clear image']),它们通过预训练的CLIP被编码到潜在空间中:
其中,Φ_text 和 Φ_image 分别表示CLIP的文本编码器和图像编码器。然后,使用余弦相似度来测量图像特征和文本特征之间的相似度,并基于相似度分数来估计雾气密度图 M。
聚合权重生成:
利用估计的雾气密度图 M 来生成聚合权重 Wa 和 Wm,用于将Transformer路径和Mamba路径的输出进行聚合。首先,通过插值操作调整 M 的大小以匹配 Fout_a 和 Fout_m 的尺寸,然后应用线性投影和通道分割来生成权重:
最终,通过以下方程执行聚合:
Semantic-aware Aggregation Module (SAM)
在引言部分已经提到,场景内容的语义信息可以隐式地指导双路径的聚合。考虑到CLIP的预训练图像编码器是通过一个分类预训练任务得到的,特征图在池化之前的每个位置都捕获了区域性的语义信息[35]。我们利用CLIP来构建SAM。然而,直接将雾图输入到CLIP中会导致包含退化信息的低质量图像嵌入。幸运的是,最近的研究DA-CLIP[38]能够直接从退化的输入图像中获得高质量、无退化信息的图像嵌入,因此使用DA-CLIP的图像编码器而不是原始的CLIP。
SAM采用了一种基于深度学习和注意力机制的方法,从输入的雾图中提取语义信息,并基于这些信息生成聚合权重。具体来说,我们设计了一个双交叉注意力机制,包括F_input -> F_image
交叉注意力和F_image -> F_input
交叉注意力。前者计算过程如下:
其中,F_input
是TrambaDA块的输入特征,F_image
是经过DA-CLIP图像编码器处理的图像嵌入,W_Q
、W_K
、W_V
是注意力机制中的可学习参数。后者(F_image -> F_input
交叉注意力)以类似的方式计算。
这两个交叉注意力的输出被拼接起来,并通过两层深度卷积进行细化,生成语义嵌入表示M
。基于M
,我们按照等式(8)生成聚合权重,最终按照等式(4)进行聚合。
Result
这篇关于适应CLIP作为图像去雾的聚合指导的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!