【CLIP-LIT】Iterative Prompt Learning for Unsupervised Backlit Image Enhancement

摘要

我们提出了一种新颖的无监督逆光图像增强方法,简称为 CLIP-LIT,通过探索 对比语言-图像预训练(CLIP)在像素级图像增强中的潜力。

我们证明了开源的 CLIP 先验不仅可以区分逆光图像和光照良好的图像,还可以感知具有不同亮度的异质区域,从而促进增强网络的优化。

与[[高层次图像操作]]任务不同,直接将 CLIP 应用于图像增强任务并不容易,原因在于很难找到准确的提示词

为了解决这个问题,我们设计了一种提示学习框架,该框架通过约束文本-图像相似性(负样本/正样本)和 CLIP 潜在空间中对应图像(逆光图像/光照良好的图像)之间的关系,首先学习初始提示词对。

然后,我们基于增强结果和初始提示对之间的文本-图像相似性训练增强网络 。为了进一步提高初始提示对的准确性,我们通过迭代微调提示学习框架 来减少逆光图像、增强结果和光照良好图像之间的分布差异,通过排序学习提升增强性能。我们的方法在提示学习框架和增强网络之间交替进行更新,直到获得视觉上令人满意的结果。

广泛的实验表明,我们的方法在视觉质量和泛化能力方面优于当前最先进的方法,并且不需要任何配对数据。


引言

逆光图像是指主要光源位于某些物体后方时拍摄的图像。这类图像通常由于光照分布严重不均衡而受影响,这会影响视觉质量或后续感知算法的准确性。

手动修复逆光图像是一项繁琐的任务由于在增强曝光不足区域的同时保留光照良好区域的复杂挑战,人们可以尝试采用自动光照增强方法,但会发现现有方法无法很好地处理逆光图像。例如,许多现有的监督光照增强方法 [27, 28, 34] 无法准确感知明暗区域,因此使用相同的流程处理这些区域,导致光照良好区域过度增强或低光区域增强不足。另一方面,无监督光照增强方法通常依赖于理想假设,如平均亮度和灰色世界模型 [10, 16],或者通过对抗训练直接学习参考图像的分布 [11]。然而,这些方法的鲁棒性和泛化能力有限。

至于传统的曝光校正方法 [1, 30],由于逆光场景和亮度强度的多样性,它们在应对真实世界中的逆光图像时表现乏力。通过收集由摄影师修饰的真实图像(作为参考图像)来解决这一问题的方法效果有限,因为这些图像永远无法匹配真实逆光照片的真实分布。

在这项工作中,我们提出了一种无监督的逆光图像增强方法。与之前的无监督方法不同,这些方法通常基于某种物理假设学习曲线或函数 ,或通过对抗训练学习特定任务数据的光照良好图像分布

我们探索了包含在对比语言-图像预训练(CLIP)模型中的丰富视觉-语言先验,用于像素级图像增强。

![[Pasted image 20250111160238.png]]

尽管 CLIP 在某种程度上可以作为区分光照良好图像和逆光图像的指标,但将其直接用于训练逆光图像增强网络仍然具有挑战性。

例如,对于一张光照良好的图像(图2左上角),将"正常光"替换为"光照良好"会显著提高 CLIP 分数。

在相反的情况下(图2右上角),"正常光"成为正确的提示词。

这表明最佳提示词可能会因场景中复杂的光照而有所不同。此外,几乎不可能找到准确的"单词"提示词来描述精确的亮度条件。提示词工程是一项耗时且费力的任务,需要为数据集中的每张图像进行注释。

此外,CLIP 的嵌入通常会受到图像中高级语义信息的干扰。因此,使用固定提示词或提示词工程难以实现最佳性能。

为了解决这些问题,我们提出了一种新流程,针对我们的任务定制了 CLIP 模型。该流程包括以下组件:

1)提示初始化(Prompt Initialization)

我们首先通过预训练的 CLIP 图像和文本编码器,将逆光图像和光照良好图像连同可学习的提示对(正样本和负样本)编码到潜在空间中。通过缩小图像和文本在潜在空间中的距离,我们获得了一个可以有效区分逆光图像和光照良好图像的初始提示对。

2)基于 CLIP 的增强训练(CLIP-aware Enhancement Training)

通过初始化的提示词,我们使用 CLIP 嵌入空间中的文本-图像相似性约束训练一个增强网络。

3)提示优化(Prompt Refinement)

我们引入了一种提示微调机制,通过排序学习进一步区分逆光图像、增强结果和光照良好图像之间的分布差异,从而更新提示词。我们迭代地更新增强网络和提示学习框架,直到获得视觉上令人满意的结果。

我们的方法区别于现有的逆光图像增强技术,因为我们利用了 CLIP 的内在感知能力。与仅将 CLIP 用作损失目标 [8, 36] 不同,我们将提示词优化作为优化过程的一个重要组成部分,以进一步提升性能。我们的方法是第一个在低层次视觉任务中利用提示词学习(prompt learning)和CLIP 先验(CLIP prior)的工作。

我们的方法在定性和定量指标上都超越了最先进的方法,并且不需要任何配对的训练数据。通过图1中结果的预览,我们展示了该方法的泛化能力和稳健性,并在图3中将我们的结果与现有方法进行了比较。

方法

![[Pasted image 20250111160728.png]]

概述:我们提出的方法由两个阶段组成,如图4所示。

在第一阶段,我们通过约束提示与CLIP嵌入空间中相应图像之间的文本-图像相似度,来学习初始提示对(指背光/光线良好图像的负向/正向提示)。

利用初始提示对,我们使用冻结的CLIP模型来计算 提示与增强结果 之间的文本-图像相似度,以训练初始增强网络。

在第二阶段,我们通过排序学习,利用背光图像、增强结果和光线良好的图像来优化可学习的提示。优化后的提示可用于微调增强网络,以进一步提高性能。我们交替进行提示优化和增强网络的微调,直到获得视觉上令人满意的结果。应当注意的是,在整个学习过程中,CLIP模型保持固定,并且我们的方法除了提示初始化和优化之外,不会引入任何额外的计算负担。我们将在下面提供关于我们方法的关键组件的更多细节。

3.1. 初始提示与增强训练

我们方法的第一阶段涉及负向和正向(可学习的)提示的初始化,以大致表征逆光图像和光线良好的图像,以及初始增强网络的训练。

![[Pasted image 20250111164234.png]]

图5:提示学习框架的图示。

  1. 提示初始化:交叉熵损失约束所学习的提示,使 CLIP 潜在空间中负样本和正样本的表示之间的距离最大化。
  2. 将当前轮次 I t I_t It 的增强结果添加到排序过程中(即排序损失),以使增强结果 I t I_t It在CLIP潜在空间中更接近光线良好的图像 I w I_w Iw的表示,并远离输入图像 I b I_b Ib的表示。
  3. 添加从上一轮次推断出的图像 I t − 1 I_{t-1} It−1,以约束更新后的增强网络的结果。 I t I_t It在CLIP潜在空间中比上一轮次 I t − 1 I_{t-1} It−1更接近正样本的表示,并且远离负样本 I b I_b Ib的表示。

提示初始化:提示初始化的过程如图5(a)所示。

给定一张逆光图像 I b ∈ R H × W × 3 I_b \in \mathbb{R}^{H\times W\times 3} Ib∈RH×W×3和一张光线良好的图像 I w ∈ R H × W × 3 I_w \in \mathbb{R}^{H\times W\times 3} Iw∈RH×W×3(作为参考),我们随机初始化一个正向提示 T p ∈ R N × 512 T_p \in \mathbb{R}^{N\times 512} Tp∈RN×512和一个负向提示 T n ∈ R N × 512 T_n \in \mathbb{R}^{N\times 512} Tn∈RN×512。

N N N 表示每个提示中嵌入标记的数量。

然后,我们将逆光图像和光线良好的图像输入到预训练的CLIP的图像编码器 Φ i m a g e \Phi_{image} Φimage中,以获得它们的潜在编码 。同时,我们也通过将正向和负向提示输入到文本编码器 Φ t e x t \Phi_{text} Φtext中提取它们的潜在编码。

基于CLIP潜在空间 中的文本-图像相似性,我们使用对逆光图像和光线良好的图像进行分类的[[二元交叉熵损失]]来学习初始提示对: L i n i t i a l = − ( y ∗ log ⁡ ( y ^ ) + ( 1 − y ) ∗ log ⁡ ( 1 − y ^ ) ) , ( 1 ) \mathcal{L}{initial} = -(y * \log(\hat{y}) + (1 - y) * \log(1 - \hat{y})), \quad (1) Linitial=−(y∗log(y^)+(1−y)∗log(1−y^)),(1) y ^ = e c o s ( Φ i m a g e ( I ) , Φ t e x t ( T p ) ) ∑ i ∈ { n , p } e c o s ( Φ i m a g e ( I ) , Φ t e x t ( T i ) ) ) , ( 2 ) \hat{y} = \frac{e^{cos(\Phi{image}(I),\Phi_{text}(T_p))}}{\sum_{i\in\{n,p\}} e^{cos(\Phi_{image}(I),\Phi_{text}(T_i)))}}, \quad (2) y^=∑i∈{n,p}ecos(Φimage(I),Φtext(Ti)))ecos(Φimage(I),Φtext(Tp)),(2) 其中 I ∈ { I b , I w } I \in \{I_b, I_w\} I∈{Ib,Iw}, y y y是当前图像的标签,0 表示负样本 I b I_b Ib,1 表示正样本 I w I_w Iw。

训练初始增强网络

给定从第一阶段获得的初始提示,我们可以使用CLIP感知损失 来训练一个增强网络。作为基线模型,我们使用一个简单的Unet[23]来增强逆光图像,不过也可以使用更复杂的网络。

受广泛[[用于光线增强的Retinex模型]][14]的启发,增强网络[[估计光照图]] I i ∈ R H × W × 1 I_i \in \mathbb{R}^{H\times W\times 1} Ii∈RH×W×1,然后通过 I t = I b / I i I_t = I_b / I_i It=Ib/Ii 生成最终结果。

为了训练增强网络,我们采用CLIP增强损失 L c l i p \mathcal{L}{clip} Lclip和恒等损失 L i d e n t i t y \mathcal{L}{identity} Lidentity。

CLIP增强损失 :衡量增强结果与CLIP空间中提示的相似性: L c l i p = e c o s ( Φ i m a g e ( I t ) , Φ t e x t ( T n ) ) ∑ i ∈ { n , p } e c o s ( Φ i m a g e ( I t ) , Φ t e x t ( T i ) ) ) . ( 3 ) \mathcal{L}{clip} = \frac{e^{cos(\Phi{image}(I_t),\Phi_{text}(T_n))}}{\sum_{i\in\{n,p\}} e^{cos(\Phi_{image}(I_t),\Phi_{text}(T_i)))}}. \quad (3) Lclip=∑i∈{n,p}ecos(Φimage(It),Φtext(Ti)))ecos(Φimage(It),Φtext(Tn)).(3) 恒等损失 :鼓励增强结果在内容和结构上与逆光图像相似 : L i d e n t i t y = ∑ l = 0 4 α l ⋅ ∣ ∣ Φ i m a g e l ( I b ) − Φ i m a g e l ( I t ) ∣ ∣ 2 , ( 4 ) \mathcal{L}{identity} = \sum{l=0}^{4} \alpha_l \cdot ||\Phi_{image}^{l}(I_b) - \Phi_{image}^{l}(I_t)||2, \quad (4) Lidentity=l=0∑4αl⋅∣∣Φimagel(Ib)−Φimagel(It)∣∣2,(4) 其中 α l \alpha_l αl是ResNet101 CLIP模型中图像编码器第 l l l层的权重。训练增强网络的最终损失是这两种损失的组合: L e n h a n c e = L c l i p + w ⋅ L i d e n t i t y , ( 5 ) \mathcal{L}{enhance} = \mathcal{L}{clip} + w \cdot \mathcal{L}{identity}, \quad (5) Lenhance=Lclip+w⋅Lidentity,(5) 其中 w w w是平衡不同损失项大小的权重,根据经验设置为0.9。我们将训练计划分为两部分。首先,我们使用恒等损失来实现自重构,因为它鼓励增强结果在像素空间中与逆光图像相似。然后,我们使用恒等损失和CLIP增强损失来训练网络。对于恒等损失,在自重构阶段,我们将公式(4)中的 α l = 0 , 1 , ... , 4 \alpha_{l=0,1,\ldots,4} αl=0,1,...,4设置为1.0。在逆光增强网络的训练过程中,我们设置 α l = 0 , 1 , 2 , 3 = 1.0 \alpha_{l=0,1,2,3} = 1.0 αl=0,1,2,3=1.0且 α l = 4 = 0.5 \alpha_{l=4} = 0.5 αl=4=0.5。这是因为我们发现最后一层的特征与图像的颜色更相关,而这正是我们想要调整的。

3.2 提示词优化与增强调优

在第二阶段,我们通过迭代 的方式执行提示词优化 和增强网络的调优。提示词优化和增强网络的调优交替进行。

其目标是提升学习到的提示词在区分逆光图像、增强结果和良好光照图像方面的准确性,同时感知不同亮度区域的异质性。

提示词优化

我们观察到,仅使用从逆光图像和良好光照图像获得的初始提示词不足以增强颜色和亮度。这是因为初始提示词可能无法捕捉逆光图像、增强结果和良好光照图像之间的细粒度差异。

为了解决这个问题,我们提出了对可学习的正提示词和负提示词进行进一步优化。

给定通过当前增强网络增强的结果 I t ∈ R H × W × 3 I_t \in \mathbb{R}^{H \times W \times 3} It∈RH×W×3,我们使用一个边距排序损失来更新提示词。提示词优化的过程如图 5(b) 所示。

形式上,我们定义图像与提示词对之间的负相似度分数为:

S ( I ) = e cos ⁡ ( Φ image ( I ) , Φ text ( T n ) ) ∑ i ∈ { n , p } e cos ⁡ ( Φ image ( I ) , Φ text ( T i ) ) S(I) = \frac{e^{\cos(\Phi_{\text{image}}(I), \Phi_{\text{text}}(T_n))}}{\sum_{i \in \{n, p\}} e^{\cos(\Phi_{\text{image}}(I), \Phi_{\text{text}}(T_i))}} S(I)=∑i∈{n,p}ecos(Φimage(I),Φtext(Ti))ecos(Φimage(I),Φtext(Tn))


然后,边距排序损失可以表示为:

L prompt1 = max ⁡ ( 0 , S ( I w ) − S ( I b ) + m 0 ) + max ⁡ ( 0 , S ( I t ) − S ( I b ) + m 0 ) + max ⁡ ( 0 , S ( I w ) − S ( I t ) + m 1 ) \begin{aligned} \mathcal{L}_{\text{prompt1}} & = \max\big(0, S(I_w) - S(I_b) + m_0\big) \\ & + \max\big(0, S(I_t) - S(I_b) + m_0\big) \\ & + \max\big(0, S(I_w) - S(I_t) + m_1\big) \end{aligned} Lprompt1=max(0,S(Iw)−S(Ib)+m0)+max(0,S(It)−S(Ib)+m0)+max(0,S(Iw)−S(It)+m1)

其中, m 0 ∈ [ 0 , 1 ] m_0 \in [0, 1] m0∈[0,1] 表示良好光照/增强结果和逆光图像在 CLIP 嵌入空间中的分数之间的边距。我们将 m 0 m_0 m0 设置为 0.9 0.9 0.9,以尽可能扩大逆光图像与良好光照图像之间的距离。同时, m 1 m_1 m1 表示增强结果与良好光照图像在 CLIP 嵌入空间中的分数之间的边距。我们将 m 1 m_1 m1 设置为 0.2,以确保迭代学习在每轮迭代中能提高性能,我们在排序过程中保留了由前一个增强网络得到的前一轮增强结果 I t − 1 I_{t-1} It−1。我们将两组增强结果 ( I t − 1 I_{t-1} It−1) 和 ( I t I_t It) 加入约束中,从而使新学习到的提示词更关注图像的光线和色彩分布,而不是图像中的高级内容(见图 10)。损失函数修改为:

L prompt2 = max ⁡ ( 0 , S ( I w ) − S ( I b ) + m 0 ) + max ⁡ ( 0 , S ( I t − 1 ) − S ( I b ) + m 0 ) + max ⁡ ( 0 , S ( I w ) − S ( I t ) + m 1 ) + max ⁡ ( 0 , S ( I t ) − S ( I t − 1 ) + m 2 ) \begin{aligned} \mathcal{L}{\text{prompt2}} &= \max(0, S(I_w) - S(I_b) + m_0) \\ & + \max(0, S(I{t-1}) - S(I_b) + m_0) \\ & + \max(0, S(I_w) - S(I_t) + m_1) \\ & + \max(0, S(I_t) - S(I_{t-1}) + m_2) \end{aligned} Lprompt2=max(0,S(Iw)−S(Ib)+m0)+max(0,S(It−1)−S(Ib)+m0)+max(0,S(Iw)−S(It)+m1)+max(0,S(It)−S(It−1)+m2)

其中 m 2 m_2 m2 表示新增强结果与先前增强结果之间的边界。我们设定 m 2 = m 1 m_2 = m_1 m2=m1,因为边界 m 1 m_1 m1 和 m 2 m_2 m2 具有相同的目标,从而使两组图像保持相似性。

调整增强网络。 增强网络的调整遵循与第3.1节相同的过程,只是我们使用经过优化的提示(prompts)来计算CLIP-Enhance损失 L clip L_{\text{clip}} Lclip,并生成来自更新网络的增强训练数据,以进一步优化提示。

讨论

为了展示迭代学习的有效性,我们参考了Chefer等人[7]的方法,利用CLIP模型中的注意力图可视化学习的负提示词与输入图像在不同迭代轮次下的交互。热力图(如图6所示)表示图像中每个像素与学习提示词之间的相关性。热力图显示,在迭代过程中,学习的负提示词逐渐与具有不良光照和颜色的区域相关性增强。我们还展示了不同迭代轮次下的增强结果(如图7所示)。在中间轮次,一些增强区域的颜色过饱和。经过足够的迭代后,过饱和现象得到了修正,而暗色区域也比之前的输出更接近理想的光照状态。以上观察表明,我们的方法能够感知不同亮度的异质区域的能力。我们将在第4.3节提供定量比较。

实验

数据集 (Dataset)

用于训练,我们从BAID训练数据集中随机选择380张逆光图像作为输入图像,并从DIV2K数据集中选择384张光照良好的图像作为参考图像。我们在BAID测试数据集上测试了我们的方法,该数据集包含368张在多种光照场景和环境下拍摄的逆光图像。为了测试泛化能力,我们收集了一个新的评估数据集,命名为Backlit300,其中包括305张从互联网、Pexels和Flickr获取的逆光图像。该数据将会公开发布。


训练 (Training)

我们在单张NVIDIA GTX 3090Ti GPU上使用PyTorch实现了我们的方法。优化器采用Adam,参数设置为 β 1 = 0.9 \beta_1 = 0.9 β1=0.9 和 β 2 = 0.99 \beta_2 = 0.99 β2=0.99。在每个可学习的提示中嵌入的标记数 N 设置为16。

总训练迭代次数设置为50K,其中自监督重建迭代次数为1K,提示对初始化学习的迭代次数为10K。提示初始化/优化和增强网络训练的学习率分别设置为 5 × 1 0 − 6 5 \times 10^{-6} 5×10−6 和 2 × 1 0 − 5 2 \times 10^{-5} 2×10−5。提示初始化/优化和增强网络训练的批量大小分别设置为8和16。在训练期间,我们将输入图像调整为512 × 512的分辨率,并使用翻转、缩放和旋转等数据增强方法。


推理 (Inference)

BAID和Backlit300测试数据集中的一些输入图像尺寸较大,而某些方法无法直接处理如此高分辨率的图像。为了确保公平的比较,如果图像尺寸大于2048 × 2048,我们将所有测试图像的长边调整为2048像素。


对比方法 (Compared Methods)

由于公开可用的基于深度学习的逆光图像增强方法非常少,我们将我们的方法与解决相关任务的代表性方法进行比较,包括低光图像增强方法(例如Zero-DCE [10]、Zero-DCE++ [16]、SCI [22]、URetinex-Net [28]、SNR-Aware [29]、Zhao等 [35] 和EnlightenGAN [11]);曝光校正方法(例如Affi等 [1]);以及逆光增强方法(例如ExCNet [32])。一些方法提供了基于不同数据集训练的模型。我们将所有发布的模型进行对比,以确保公平的比较。

为了进一步验证,我们在补充材料中提供了重新训练的有监督方法的结果。对于无监督方法,我们在与我们方法相同的训练数据上重新训练它们,以确保在相同条件下进行评估。

相关推荐
一车小面包20 小时前
人工智能中的线性代数总结--简单篇
人工智能·numpy
大模型真好玩20 小时前
深入浅出LangGraph AI Agent智能体开发教程(四)—LangGraph全生态开发工具使用与智能体部署
人工智能·python·mcp
算家计算20 小时前
OpenAI百亿美元造芯计划曝光,算力争夺战进入新阶段?
人工智能·openai·资讯
非门由也20 小时前
《sklearn机器学习——回归指标1》
机器学习·回归·sklearn
百锦再20 小时前
脚本语言的大浪淘沙或百花争艳
java·开发语言·人工智能·python·django·virtualenv·pygame
拓端研究室20 小时前
Python用PSO优化SVM与RBFN在自动驾驶系统仿真、手写数字分类应用研究
人工智能·机器学习
Shiyuan720 小时前
【检索通知】2025年IEEE第二届深度学习与计算机视觉国际会议检索
人工智能·深度学习·计算机视觉
shao91851621 小时前
Gradio全解10——Streaming:流式传输的音频应用(7)——ElevenLabs:高级智能语音技术
人工智能·gradio·tts·streaming·elevenlabs·stt·eleven music
Monkey的自我迭代21 小时前
基于OpenCV的银行卡号识别系统:从原理到实现
人工智能·opencv·计算机视觉
方案开发PCBA抄板芯片解密21 小时前
什么是算法:高效解决问题的逻辑框架
算法