【LLIE专题】基于Retinex理论的transformer暗光增强

在这里插入图片描述


本文将对 Retinexformer: One-stage Retinex-based Transformer for Low-light Image Enhancement,这篇暗光增强算法进行讲解。参考资料如下:

[1] Retinexformer 文章

[2] Retinexformer 代码


专题介绍

在低光照环境下,传统成像设备往往因画面昏暗、细节丢失而受限。LLIE(低照度暗光增强)技术应运而生,它通过提升图像亮度、对比度,减少噪点并恢复色彩细节,让暗夜变得清晰可见。

LLIE技术从传统方法如直方图均衡化、Retinex模型等起步,近年来借助深度学习,尤其是卷积神经网络(CNN),GAN模型,扩散模型实现了质的飞跃。这些算法能自动学习图像特征,精准处理低光照图像,效果显著优于传统技术。

本专题将聚焦LLIE技术的核心原理、应用案例及最新进展,让我们一起见证LLIE如何点亮暗夜,开启视觉新视界!欢迎一起探讨交流!

系列文章如下
【1】ZeroDCE
【2】HVI
【3】CLIP-LIT
【4】GLARE


一、研究背景

Retinex理论是一种经典的图像增强理论,它将图像分解为反射分量和光照分量。通过分别对这两个分量进行处理,可以有效地改善图像的视觉效果。Retinex理论在低光照图像增强中得到了广泛应用,但传统的Retinex方法存在一些问题,如计算复杂度高、对噪声敏感等。因此,如何结合Transformer架构和Retinex理论的优势,设计一种高效的低光照图像增强方法,是本文研究的重点

二、Retinexformer方法

在这里插入图片描述
作者首先基于通用Retinex理论提出了自己优化的Retinex理论,基于该理论提出了一个亮度引导的Unet类型的Transformer网络结构用于图像增强。上图为整个模型的结构示意图。

1. 通用Retinex理论

I = R ⊙ L \mathbf{I}=\mathbf{R} \odot \mathbf{L} I=RL
其中 I ∈ R H × W × 3 I \in \mathbb{R}^{H \times W \times 3} IRH×W×3 为低照度图像, R ∈ R H × W × 3 R \in \mathbb{R}^{H \times W \times 3} RRH×W×3 为反射率图像, L ∈ R H × W × 1 L \in \mathbb{R}^{H \times W \times 1} LRH×W×1 为光照入射图。该理论假设在图像处理过程中,图像的结构和语义信息保持不变。然而,实际情况是,在低光照条件下进行拍摄时,通常需要使用高ISO和长曝光时间,这会导致图像中出现噪声和伪影。此外,在使用模型对低光照图像进行增强时,也可能会出现噪声和伪影的放大、图像过曝或欠曝以及色彩失真等问题。

2. 作者建立的Retinex理论

作者引入了干扰项,建立了更完善的理论。
I = ( R + R ^ ) ⊙ ( L + L ^ ) = R ⊙ L + R ⊙ L ^ + R ^ ⊙ ( L + L ^ ) \begin{align} \mathbf{I}&= (\mathbf{R}+\hat{\mathbf{R}}) \odot (\mathbf{L}+\hat{\mathbf{L}}) \\ &= \mathbf{R} \odot \mathbf{L} + \mathbf{R} \odot \hat{\mathbf{L}} + \hat{\mathbf{R}} \odot (\mathbf{L}+\hat{\mathbf{L}}) \end{align} I=(R+R^)(L+L^)=RL+RL^+R^(L+L^)
其中 R ^ ∈ R H × W × 3 , L ^ ∈ R H × W × 1 \hat{\mathbf{R}} \in \mathbb{R}^{H \times W \times 3}, \hat{\mathbf{L}} \in \mathbb{R}^{H \times W \times 1} R^RH×W×3,L^RH×W×1 ,分别代表反射率图和光照入射图的误差分量,为了简化上述公式,作者设置了一个点亮系数 L ˉ \bar{\mathbf{L}} Lˉ,令 L ˉ ⊙ L = 1 \bar{\mathbf{L}} \odot \mathbf{L} = \mathbf{1} LˉL=1 ,将 L ˉ \bar{\mathbf{L}} Lˉ和上述公式相乘可以得到以下公式。 I ⊙ L ˉ = R + R ⊙ ( L ^ ⊙ L ˉ ) + ( R ^ ⊙ ( L + L ^ ) ) ⊙ L ˉ \mathbf{I} \odot \bar{\mathbf{L}} = \mathbf{R} + \mathbf{R} \odot (\hat{\mathbf{L}} \odot \bar{\mathbf{L}}) + (\hat{\mathbf{R}} \odot (\mathbf{L} + \hat{\mathbf{L}})) \odot \bar{\mathbf{L}} ILˉ=R+R(L^Lˉ)+(R^(L+L^))Lˉ。简化上述公式可得, I l u = I ⊙ L ˉ = R + C \mathbf{I}_{lu} = \mathbf{I} \odot \bar{\mathbf{L}} = \mathbf{R} + \mathbf{C} Ilu=ILˉ=R+C,其中 I l u ∈ H × W × 3 \mathbf{I}_{lu} \in H \times W \times 3 IluH×W×3 为亮度提升后的图像, C C C为亮度提高后的总偏差(包括放大的噪声,伪影,颜色失真)。

3. ORF(one stage Retinex-based Framework)

作者通过所建立的retinex理论,建立了ORF,首先提升图像亮度,之后以亮度 I l u \mathbf{I}_{lu} Ilu以及亮度特征 F l u \mathbf{F}_{lu} Flu为参考,通过修复器 R \mathcal{R} R修复总偏差 C C C,总体描述为下列公式:

( I l u , F l u ) = E ( I , L p ) , I e n = R ( I l u , F l u ) (\mathbf{I}_{lu}, \mathbf{F}_{lu}) = \mathcal{E}(\mathbf{I}, \mathbf{L}_p), \quad \mathbf{I}_{en} = \mathcal{R}(\mathbf{I}_{lu}, \mathbf{F}_{lu}) (Ilu,Flu)=E(I,Lp),Ien=R(Ilu,Flu)
其中 E \mathcal{E} E为亮度预测器,目的是提高图像亮度; L p ∈ H × W × 1 \mathbf{L}_p \in H \times W \times 1 LpH×W×1 I \mathbf{I} I的亮度先验图,通过 L p = m e a n c ( I ) \mathbf{L}_p = \mathrm{mean}_c(\mathbf{I}) Lp=meanc(I)计算, m e a n c \mathrm{mean}_c meanc是在通道维度取平均; R \mathcal{R} R是复原修复器,作者设计了基于transformer的unet网络结构用于修复总偏差 C C C,最终得到增强后的结果 I e n \mathbf{I}_{en} Ien

4. 网络结构

网络结构其实非常简单,作者首先采用了卷积作为 E \mathcal{E} E亮度预测器,并且保留亮度特征作为后续的 R \mathcal{R} R(复原修复器)的引导输入。而 R \mathcal{R} R(复原修复器),采用了Unet类型网络结构,做了三次下采样,提取多尺度特征,并且每一层Unet结构中加入了Transformer网络结构用于提取全局特征,而Transformer结构中又采用了 E \mathcal{E} E亮度预测器输出的亮度特征作为引导(IGAB模块)。同时为了降低计算复杂度,Transformer是在通道维度上做的注意力计算。

总体来看,这篇文章的方案就是基于Retinex理论设计一个网络结构,首先基于卷积网络粗略估计出增强后的图像,然后基于这个粗略增强的图像,用Unet类型的网络结构(结合transformer结构)进行进一步的增强,得到最后结果

三、实验结果

1. 定量实验

在这里插入图片描述
如上表所示,作者在多个数据集上和多种方案做了定量对比实验,红色是最优效果,蓝色是次优效果,可以看出Retinexformer在多个数据集上均取得了最优或者次优效果。

2. 定性实验

在这里插入图片描述

在这里插入图片描述
从定性实验可以看出,之前的方法增强后存在多个问题,比如噪声、色彩损失、模糊、过曝欠曝等,而作者提出的方案则能够很好去除噪声并且能够重建出曝光良好的图像。

四、总结

Retinexformer通过结合Retinex分解和Transformer架构,有效提升了低光照图像的质量,同时保留了图像的细节信息并抑制了噪声和伪影的放大。在多个数据集上的实验结果证明了其有效性,为低光照图像增强领域提供了一种新的高效方法。该研究推动了低光照图像处理技术的发展,为相关应用提供了更优质的视觉数据支持。

五、个人思考

  1. Retinex分解是Retinexformer的基础,但其准确性对最终增强效果至关重要。在复杂场景下,Retinex分解可能会出现误差,例如光照分量和反射分量的分离不彻底或过度分离。如何进一步提高Retinex分解的准确性?或许是未来研究的一个方向。
  2. 本文由于考虑到计算效率问题,使用了通道方向的注意力机制;或许可以采用空间维度或者空间通道结合的注意力机制,进一步提升效果。

感谢阅读,欢迎留言或私信,一起探讨和交流。

局部线性嵌入(Locally Linear Embedding, LLIE)是一种非线性降维方法,主要用于流形学习。LLIE的核心思想是在高维空间中保持局部线性结构,并在低维空间中尽可能地还原这种结构。LLIE特别适用于那些数据在高维空间中形成一个低维流形的情况,通过降维来揭示其内在的低维结构。 ### LLIE的基本步骤 LLIE的实现可以分为以下几个主要步骤: 1. **邻域选择**:对于每一个数据点,找到其最近的邻居。通常使用K近邻算法(K-Nearest Neighbors, KNN)来确定每个点的局部邻域。 2. **权重矩阵计算**:在高维空间中,为每个数据点及其邻域内的点计算权重,使得该点可以通过其邻居的线性组合来重构。这些权重反映了局部线性关系,并且权重矩阵需要满足对称性和稀疏性等条件。 3. **低维嵌入**:在低维空间中寻找一个新的点集,使得这些点之间的线性重构误差最小化。具体来说,就是利用之前计算出的权重矩阵,在低维空间中优化每个点的位置,以保持其与高维空间中的局部线性关系一致[^1]。 ### LLIE的数学原理 LLIE的数学基础是线性代数和优化理论。假设我们有一个高维数据集 $ X \in \mathbb{R}^{n \times d} $,其中 $ n $ 是样本数量,$ d $ 是特征维度。我们的目标是将数据映射到一个低维空间 $ Y \in \mathbb{R}^{n \times k} $,其中 $ k < d $。 1. **邻域选择**:对于每个数据点 $ x_i $,找到其 $ K $ 个最近邻 $ N(i) $。 2. **权重矩阵计算**:构造一个局部权重矩阵 $ W $,使得每个数据点 $ x_i $ 可以通过其邻域点 $ x_j \in N(i) $ 的线性组合来重构: $$ x_i \approx \sum_{j \in N(i)} W_{ij} x_j $$ 为了找到最优的权重 $ W $,我们需要最小化以下目标函数: $$ \min_W \sum_{i=1}^n \left\| x_i - \sum_{j \in N(i)} W_{ij} x_j \right\|^2 $$ 同时,权重矩阵 $ W $ 需要满足归一化条件 $ \sum_{j \in N(i)} W_{ij} = 1 $。 3. **低维嵌入**:在低维空间中,寻找新的点集 $ y_i $,使得它们的线性重构误差最小: $$ \min_Y \sum_{i=1}^n \left\| y_i - \sum_{j \in N(i)} W_{ij} y_j \right\|^2 $$ ### LLIE的特点与优缺点 #### 特点 - **非线性降维**:LLIE能够处理非线性结构的数据,适用于复杂的流形学习任务。 - **局部保持**:LLIE强调局部线性关系的保持,而不是全局的欧几里得距离。 - **无参数优化**:LLIE不需要显式地定义一个全局的非线性映射函数,而是通过局部线性关系的保持来实现降维。 #### 优点 - **适用于流形结构**:LLIE特别适合处理那些在高维空间中形成低维流形的数据。 - **计算效率较高**:相比其他非线性降维方法(如t-SNE),LLIE的计算复杂度较低。 - **保留局部结构**:LLIE在降维过程中保留了数据的局部线性结构,这对于某些应用(如图像识别和自然语言处理)非常重要。 #### 缺点 - **对噪声敏感**:LLIE对数据中的噪声较为敏感,尤其是在邻域选择和权重计算过程中。 - **依赖参数选择**:LLIE的效果依赖于邻域大小 $ K $ 和低维空间维度 $ k $ 的选择,这些参数的选择通常需要经验和实验验证。 - **可能陷入局部最优**:在低维嵌入阶段,LLIE可能会陷入局部最优解,导致降维结果不够理想。 ### LLIE的应用场景 LLIE广泛应用于各种领域,包括但不限于以下方面: - **图像处理**:LLIE可以用于图像去噪、图像压缩和图像识别等任务。 - **自然语言处理**:在文本数据的降维和特征提取中,LLIE可以帮助发现文本数据的潜在结构。 - **生物信息学**:LLIE可以用于基因表达数据的降维和聚类分析。 - **信号处理**:LLIE可以用于信号的特征提取和降维,帮助提高信号处理的效率。 ### 示例代码 以下是一个使用Python实现LLIE的简单示例,使用了Scikit-learn库中的`LocallyLinearEmbedding`类: ```python from sklearn.datasets import make_swiss_roll from sklearn.manifold import LocallyLinearEmbedding import matplotlib.pyplot as plt # 生成瑞士卷数据集 X, color = make_swiss_roll(n_samples=1500, noise=0.1) # 创建LLIE模型 lle = LocallyLinearEmbedding(n_components=2, n_neighbors=10) Y = lle.fit_transform(X) # 可视化结果 plt.scatter(Y[:, 0], Y[:, 1], c=color, cmap=plt.cm.Spectral) plt.title("LLIE Result") plt.xlabel("Component 1") plt.ylabel("Component 2") plt.show() ``` 在这个示例中,我们生成了一个瑞士卷数据集,并使用LLIE将其从三维空间降维到二维空间。最后,我们通过散点图可视化了降维后的结果。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值