【CLIP-LIT】Iterative Prompt Learning for Unsupervised Backlit Image Enhancement
标题
- 针对的问题:无监督背光图像增强
- 提出的核心技术:迭代提示学习
摘要
- 针对的问题:无监督逆光图像增强
- 研究的方法:对比语言-图像预训练 “Contrastive Language-Image Pre-Training (CLIP)” (Liang 等, 2023, p. 8094) (pdf)
- 遇到的困难:很难找到准确的提示词用于图像增强任务
- 解决的方法:
- 开源的 CLIP 先验促进增强网络的优化
- 可以区分逆光图像和光照良好的图像
- 感知具有不同亮度的异质区域
- 提示学习框架
- 约束 “text-image similarity” (Liang 等, 2023, p. 8094) (pdf)
- 约束 CLIP 潜在空间中对应图像(逆光图像/光照良好的图像)之间的关系
- 训练增强网络
- 迭代微调提示学习框架 ⇒ \Rightarrow ⇒ 减少 逆光图像、增强结果和光照良好图像之间的分布差异
- 排序学习 ⇒ \Rightarrow ⇒ 提升增强性能
- 在提示学习框架和增强网络之间交替进行更新
- 开源的 CLIP 先验促进增强网络的优化
- 效果:
- 在视觉质量和泛化能力方面优于当前最先进的方法
- 不需要任何配对数据【zero shot】
引言
- 提出问题及其原因
- 手动校正背光图像很难
- 在增强 曝光不足的区域 的同时 保留光线充足的区域 也很难
- 文献调研
- 相关内容
- 缺点批判
- 本文的贡献
问题建模
1)提示初始化(Prompt Initialization)
我们首先通过**预训练的 CLIP 图像和文本编码器**,将逆光图像和光照良好图像 连同 可学习的提示对(正样本和负样本)编码到潜在空间中。通过缩小图像和文本在潜在空间中的距离,我们获得了一个:可以有效区分逆光图像和光照良好图像的**初始提示对**。
2)基于 CLIP 的增强训练(CLIP-aware Enhancement Training)
通过初始化的提示词,我们使用 CLIP 嵌入空间中的 文本-图像相似性 约束训练一个增强网络。
3)提示优化(Prompt Refinement)
我们引入了一种提示微调机制,通过[[排序学习]]进一步区分逆光图像、增强结果和光照良好图像之间的分布差异,从而更新提示词。我们迭代地更新增强网络和提示学习框架,直到获得视觉上令人满意的结果。
方法和分析
- 文字链接所有公式
- 逻辑清晰顺畅
- 适当的停顿和解释
- 目前获得了什么意义
- 能得到什么样的启示
- 与其他的文章比较
- 已经有什么样的好处
- 从读者角度出发(不要写得自己日后看不懂)
- 掌握一套数学分析工具(理论)
提示初始化
1. 输入初始化
- 给定两种图像:
- 逆光图像 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:作为参考图像,光线条件较好。
- 随机初始化两个提示(prompts):
- 正向提示 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 :每个提示中嵌入标记的数量(可以理解为提示中的单词或标记数量)。
- 512:每个单元包含 512 维特征
2. 编码特征提取
- 使用预训练的 CLIP 模型:
- 图像编码器 Φ i m a g e \Phi_{image} Φimage:对逆光图像 I b I_b Ib 和光线良好的图像 I w I_w Iw 进行编码,提取潜在图像特征表示。【latent code】
- 文本编码器 Φ t e x t \Phi_{text} Φtext:对正向提示 T p T_p Tp 和负向提示 T n T_n Tn 进行编码,提取潜在文本特征表示。
3. 基于 文本-图像相似性 进行优化
- CLIP 潜在空间中的特点是:图像编码和文本编码可以通过余弦相似性进行对齐。
- 目标是:通过学习,使正向提示 T p T_p Tp 更贴近光线良好的图像 I w I_w Iw,负向提示 T n T_n Tn 更贴近逆光图像 I b I_b Ib。
分类预测
- 分类公式:
- 预测值
y
^
\hat{y}
y^ 通过以下公式计算:
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 ) ) \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))}} y^=∑i∈{n,p}ecos(Φimage(I),Φtext(Ti))ecos(Φimage(I),Φtext(Tp))
- 预测值
y
^
\hat{y}
y^ 通过以下公式计算:
- c o s ( ⋅ , ⋅ ) cos(\cdot, \cdot) cos(⋅,⋅):图像编码和文本编码之间的余弦相似度。
- I ∈ { I b , I w } I \in \{I_b, I_w\} I∈{Ib,Iw}:当前输入的图像。
- T p T_p Tp:正向提示, T n T_n Tn:负向提示。
title: 为什么分子中只有 $T_p$?
collapse: open
分子中只有 $T_p$ 是因为只在计算输入图像 $I$ 属于光线良好类的概率。
如果是光线良好的图输入,则希望结果是 $1$
如果是背光图像的输入,则希望结果是 $0$
- 二元交叉熵损失:
-
使用 L i n i t i a l \mathcal{L}_{initial} Linitial 对预测值 y ^ \hat{y} y^ 和实际标签 y y y 进行优化:
L i n i t i a l = − ( y ⋅ log ( y ^ ) + ( 1 − y ) ⋅ log ( 1 − y ^ ) ) \mathcal{L}_{initial} = -(y \cdot \log(\hat{y}) + (1 - y) \cdot \log(1 - \hat{y})) Linitial=−(y⋅log(y^)+(1−y)⋅log(1−y^))- y = 0 y = 0 y=0:当输入图像为负样本(逆光图像 I b I_b Ib)。
- y = 1 y = 1 y=1:当输入图像为正样本(光线良好的图像 I w I_w Iw)。
-
目标是最小化该损失函数,从而让提示 T p T_p Tp 和 T n T_n Tn 能够正确区分光线良好图像和逆光图像。
-
总结
- 输入: 逆光图像 I b I_b Ib 和光线良好的图像 I w I_w Iw。
- 初始化: 随机生成正向提示 T p T_p Tp 和负向提示 T n T_n Tn。
- 编码: 使用 CLIP 的图像编码器和文本编码器提取潜在特征。
- 优化:
- 通过余弦相似性计算正向和负向提示与图像编码的相似度。
- 使用二元交叉熵损失,让提示 T p T_p Tp 与光线良好的图像 I w I_w Iw 更匹配,提示 T n T_n Tn 与逆光图像 I b I_b Ib 更匹配。
最终,通过学习得到的提示 T p T_p Tp 和 T n T_n Tn 可以更好地表征图像的光线条件。
训练初始增强网络
1. 基本概念和任务
目标是使用CLIP感知损失来训练一个增强网络,该网络可以增强逆光图像 I b I_b Ib,生成光线更好的图像 I t I_t It。这个过程基于从第一阶段获得的初始提示(正向提示 T p T_p Tp 和负向提示 T n T_n Tn)。
-
增强网络选择:
- 使用一个Unet作为基线模型来增强逆光图像。
- 同样,可以使用更复杂的网络架构。
-
光照估计:
- 增强网络根据[[用于光线增强的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 = \frac{I_b}{I_i}, It=IiIb,
其中 I t I_t It 是增强后的图像。
2. 损失函数设计
增强网络的训练基于两个核心损失函数:CLIP增强损失和恒等损失。最终的总损失是它们的加权组合。
2.1 CLIP增强损失 L c l i p \mathcal{L}_{clip} Lclip
- 目的: 衡量增强后的结果 I t I_t It 与 CLIP 空间中正向和负向提示之间的相似性。希望增强图像 I t I_t It 更接近光线良好的图像(即更符合正向提示 T p T_p Tp 的描述)。
- 计算公式:
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 ) ) \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))}} Lclip=∑i∈{n,p}ecos(Φimage(It),Φtext(Ti))ecos(Φimage(It),Φtext(Tn))
- c o s ( ⋅ , ⋅ ) cos(\cdot, \cdot) cos(⋅,⋅):CLIP 图像编码和文本编码之间的余弦相似度。
- T n T_n Tn 和 T p T_p Tp:分别是负向和正向提示。
2.2 恒等损失 L i d e n t i t y \mathcal{L}_{identity} Lidentity
- 目的: 保证增强图像 I t I_t It 在内容和结构上与原始逆光图像 I b I_b Ib 保持一致。
- 计算公式:
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 \mathcal{L}_{identity} = \sum_{l=0}^{4} \alpha_l \cdot ||\Phi_{image}^l(I_b) - \Phi_{image}^l(I_t)||_2 Lidentity=l=0∑4αl⋅∣∣Φimagel(Ib)−Φimagel(It)∣∣2- Φ i m a g e l ( ⋅ ) \Phi_{image}^l(\cdot) Φimagel(⋅):CLIP 图像编码器在第 l l l 层的特征输出。
- α l \alpha_l αl:每一层的权重,用于调节不同层次特征对内容和结构的影响。
title:这里的l为什么最大只到了4
collapse: open
- **为什么到 $l=4$ ?**
1. CLIP 图像编码器基于 ResNet101,具有 5 个关键特征层(0 到 4)。
2. 第 $l=4$ 层是 ResNet 的最高语义特征层,表示全局信息,没有更高层的特征存在。
- **为什么第 $l=4$ 层权重较低?**
1. 第 $l=4$ 层更关注颜色调整和全局语义,而增强任务需要保持图像内容和结构的一致性,因此赋予低权重(0.5)。
2. 低层和中层特征对图像的细节和局部信息有更大贡献,因此权重较高(1.0)。
- **实际意义:**
这是对特征层次的合理利用,既保证了增强效果的语义一致性,又能保留原始图像的细节和结构信息。
2.3 最终损失组合
- 总损失函数是两种损失的加权组合:
L e n h a n c e = L c l i p + w ⋅ L i d e n t i t y \mathcal{L}_{enhance} = \mathcal{L}_{clip} + w \cdot \mathcal{L}_{identity} Lenhance=Lclip+w⋅Lidentity- 权重 w = 0.9 w = 0.9 w=0.9:用于平衡 CLIP 增强损失和恒等损失的影响。
3. 训练流程分阶段
为了更好地优化增强网络,训练分为两个阶段:
3.1 自重构阶段
- 目的: 使用恒等损失 L i d e n t i t y \mathcal{L}_{identity} Lidentity 来确保增强结果在像素空间中与原始逆光图像 I b I_b Ib 保持一致。
- 设置: 在公式 (4) 中,将所有层的权重 e 设置为
1.0
1.0
1.0,即:
α l = 0 , 1 , … , 4 = 1.0 \alpha_{l=0,1,\ldots,4} = 1.0 αl=0,1,…,4=1.0
3.2 逆光增强阶段
- 目的: 综合使用恒等损失 L i d e n t i t y \mathcal{L}_{identity} Lidentity 和 CLIP 增强损失 L c l i p \mathcal{L}_{clip} Lclip 对增强网络进行完整训练。
- 设置:
- 根据经验调整不同层的权重:
α l = 0 , 1 , 2 , 3 = 1.0 , α l = 4 = 0.5 \alpha_{l=0,1,2,3} = 1.0, \quad \alpha_{l=4} = 0.5 αl=0,1,2,3=1.0,αl=4=0.5 - 原因:
- 较低层 ( l = 0 , 1 , 2 , 3 ) (l=0,1,2,3) (l=0,1,2,3)的特征与图像的结构和内容更相关,权重较高。
- 最后一层 ( l = 4 ) (l=4) (l=4)的特征与图像颜色更相关,由于我们希望调整颜色,权重较低。
- 根据经验调整不同层的权重:
总结
- 输入: 逆光图像 I b I_b Ib,通过增强网络预测光照图 I i I_i Ii 并生成增强图像 I t = I b / I i I_t = I_b / I_i It=Ib/Ii。
- 损失: 结合 L c l i p \mathcal{L}_{clip} Lclip(增强效果的感知损失)和 L i d e n t i t y \mathcal{L}_{identity} Lidentity(内容一致性损失)。
- 训练策略:
- 首先进行自重构训练,专注于恒等损失。
- 然后综合使用两种损失进行完整训练,调整不同层的特征权重。
- 网络输出: 一个在光线条件和视觉感知上更接近光线良好图像的增强结果。
Input: A backlit image
I
b
I_b
Ib , where the illumination map
I
i
I_i
Ii is predicted by the enhancement network, and the enhanced image is generated as
I
t
=
I
b
/
I
i
I_t = I_b / I_i
It=Ib/Ii .
Loss Function: Combines
L
c
l
i
p
\mathcal{L}_{clip}
Lclip (perceptual loss for enhancement effect) and
L
i
d
e
n
t
i
t
y
\mathcal{L}_{identity}
Lidentity (content consistency loss).
Training Strategy:
- Perform self-reconstruction training first, focusing on identity loss.
- Then, conduct full training with both losses, adjusting feature weights at different layers.
Network Output: An enhanced result that is closer to well-lit images in terms of lighting conditions and visual perception.
3.2 提示词优化与增强调优
1. 目标
- 主要目标:通过 提示词优化 和 网络调优 的交替执行,提升提示词的区分能力。具体包括:
- 识别逆光图像、增强结果和良好光照图像之间的差异。
- 更好地感知不同亮度区域的异质性。
2. 提示词优化的重要性
- 问题:初始提示词(从逆光和良好光照图像生成)无法捕捉细粒度的光线和亮度差异。
- 解决方案:进一步优化可学习的正提示词(描述增强目标)和负提示词(避免的特性)。
- 方法:引入 [[边距排序损失]] 来更新提示词,从而引导增强结果逐步接近理想的良好光照图像。
3. 负相似度分数公式
- 定义了图像与提示词对的相似度(通过负相似度分数
S
(
I
)
S(I)
S(I) 表示),公式为:
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))
解释:
- Φ image \Phi_{\text{image}} Φimage:表示图像在 CLIP 嵌入空间中的特征。
- Φ text \Phi_{\text{text}} Φtext:表示提示词在 CLIP 嵌入空间中的特征。
- T n T_n Tn:负提示词; T p T_p Tp:正提示词。
- 作用:将增强后的图像特征与理想目标(正提示词)靠近,同时远离不理想目标(负提示词)。
4. 初始边距排序损失
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)
- 含义:
- S ( I w ) − S ( I b ) + m 0 S(I_w) - S(I_b) + m_0 S(Iw)−S(Ib)+m0:良好光照图像 I w I_w Iw 与逆光图像 I b I_b Ib 的分数差异应大于边距 m 0 m_0 m0(目标:区分逆光与良好光照图像)。
- S ( I t ) − S ( I b ) + m 0 S(I_t) - S(I_b) + m_0 S(It)−S(Ib)+m0:增强结果 I t I_t It 应远离逆光图像。
- S ( I w ) − S ( I t ) + m 1 S(I_w) - S(I_t) + m_1 S(Iw)−S(It)+m1:增强结果 I t I_t It 应接近良好光照图像 I w I_w Iw。
- 边距设置:
- m 0 = 0.9 m_0 = 0.9 m0=0.9:确保逆光与良好光照图像间有显著分离。
- m 1 = 0.2 m_1 = 0.2 m1=0.2:使增强结果与良好光照图像靠近。
5. 引入历史增强结果的优化
-
问题:为了进一步提高提示词性能,需要考虑增强网络的历史行为。
-
解决:引入上一轮增强结果 I t − 1 I_{t-1} It−1,更新边距排序损失公式:
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) -
新增项:
- S ( I t − 1 ) − S ( I b ) + m 0 S(I_{t-1}) - S(I_b) + m_0 S(It−1)−S(Ib)+m0:上一轮增强结果应远离逆光图像。
- S ( I t ) − S ( I t − 1 ) + m 2 S(I_t) - S(I_{t-1}) + m_2 S(It)−S(It−1)+m2:当前增强结果应接近上一轮增强结果。
-
边距设置:
- m 2 = m 1 = 0.2 m_2 = m_1 = 0.2 m2=m1=0.2:保证每轮增强间保持平滑的光线和色彩调整。
6. 最终优化目标
- 新的提示词不仅能更好地分辨图像的光线差异,还能平衡连续增强的平滑性和合理性。
- 图 10:展示了提示词优化如何使增强结果更加关注图像光线和颜色,而非高级内容。
总结
目标
- 区分能力:准确区分逆光图像、增强结果和良好光照图像。
- 细节感知:更好地捕捉图像中不同亮度区域的细粒度差异。
主要方法:
-
提示词优化:
- 针对初始提示词不足的问题,优化正提示词和负提示词。
- 利用边距排序损失函数 L prompt1 \mathcal{L}{\text{prompt1}} Lprompt1,通过图像和提示词的相似性调整提示词,使其更准确地表示光照和颜色的分布。
-
增强损失改进:
- 引入前一轮增强结果 I t − 1 I_{t-1} It−1,在损失函数 L prompt2 \mathcal{L}_{\text{prompt2}} Lprompt2 中加入约束。
- 设置多重边距 m 0 , m 1 , m 2 m_0, m_1, m_2 m0,m1,m2,确保增强结果与良好光照图像接近,同时保持与前一轮增强结果的相似性。
-
交替迭代:
- 优化提示词后调整增强网络。
- 使用增强结果进一步优化提示词,重复迭代以逐步提升性能。
核心思想:通过优化提示词和增强网络的协同作用,使模型能够学习并关注图像的光线、亮度和颜色分布,而不被高级内容干扰。
Goals
- Discrimination Ability: Accurately distinguish between backlit images, enhancement results, and well-lit images.
- Detail Awareness: Better capture fine-grained differences in brightness across different regions of the image.
Main Methods
- Prompt Optimization:
- Address the shortcomings of initial prompts by optimizing positive and negative prompts.
- Utilize a margin ranking loss function L prompt1 \mathcal{L}_{\text{prompt1}} Lprompt1 to adjust the similarity between images and prompts, making the prompts more accurately reflect the distribution of lighting and color.
- Enhanced Loss Improvement:
- Introduce the previous enhancement result I t − 1 I_{t-1} It−1 into the loss function L prompt2 \mathcal{L}_{\text{prompt2}} Lprompt2 as a constraint.
- Define multiple margins m 0 , m 1 , m 2 m_0, m_1, m_2 m0,m1,m2 to ensure the enhancement result is closer to a well-lit image while maintaining similarity to the previous enhancement result.
- Alternating Iteration:
- Adjust the enhancement network after optimizing the prompts.
- Use the enhancement results to further optimize the prompts, iteratively improving performance.
Core Idea: By optimizing the interplay between prompts and the enhancement network, the model can focus on the distribution of lighting, brightness, and color in the image without being distracted by high-level content.