ICCV 2023 | 清华、ETH提出Retinexformer,刷新十三大暗光增强榜
©作者 | Yuanhao Cai
单位 | 清华大学
本文介绍我们在 ICCV 2023 上的新工作。
论文链接:
代码链接:
目前所有的代码、模型、训练日志、十三个数据集(LOL-v1, LOL-v2-real, LOL-v2-synthetic, SID, SMID, SDSD-in, SDSD-out, MIT Adobe FiveK, LIME, NPE, MEF, DICM, VV)的测试结果均已开源。我们基于 BasicSR 开发了一个集成了八大数据集的训练框架。欢迎大家来使用。
暗光增强简介
如图 1 所示,暗光增强的主要任务是增强低光图像的能见度和对比度,同时修复隐藏在黑暗中或由于提升亮度而引入的噪声、伪影、颜色畸变等复杂的退化模式。
当前的暗光增强算法大体上可以分为三类:朴素方法、传统感知方法、深度学习方法
朴素方法一般会直接在全局范围内增强整张图像的亮度和对比度。经典的算法有直方图均衡化(histogram equalization )和伽马矫正(Gama Correction)。然而这类算法没有考虑到光照因素,使得增强后的图像与真实光照图像严重不符。
传统感知算法大都基于视网膜理论(Retinex Theory),将一张自然图像解耦为照度图(Illumination)和反射图(Reflectance),并将反射图作为暗光增强后的图像。然而这类算法有两个缺陷。一是假定暗光图像都是干净的,不存在噪声伪影等。然而由于成像设备的缺陷,暗光图像常常带有噪声。二是这类算法依赖于手工设计的图像先验,常常需要调参且表征能力很弱。
现有的深度学习方法大多基于卷积神经网络,不擅长于捕获长程依赖关系,不利于图像的修复。有部分深度学习算法与视网膜分解理论相结合。然而这类算法大都需要一个冗长的流程,采取一个多阶段的训练方案,分别训练多个不同的 CNN 来做不同的任务,如解耦彩色图像、给反射图去噪、调整照度图等。然后将这些训好的 CNN 连接起来进行微调。整个训练过程繁琐复杂,费时费力。
为了解决上述难题,本文:
1. 我们提出了首个与视网膜理论相结合的 Transformer 算法,名为 Retinexformer,以用于暗光增强。
2. 我们推导了一个单阶段视网膜理论框架,名为 ORF(One-stage Retinex-based Framework),不需要繁复的训练和微调流程,只需要一个阶段端到端的训练即可。
3. 我们设计了一种由光照引导的新型多头自注意机制,名为 IG-MSA(Illumination-Guided Multi-head Self-Attention,IG-MSA),将光照信息作为关键线索来引导长程依赖关系的捕获。
4. 我们的算法在十三个暗光增强榜单上达到了更好的定量和定性效果,同时在用户研究和黑夜目标检测任务上验证了我们算法的实用价值。
本文方法
本文方法的整体框架如图 3 所示。在图 3(a)中,Retinexformer 采用我们设计的 ORF。而 ORF 又由两部分构成:(i)光照估计器(illumination estimator)和(ii)退化修复器(corruption restorer)。
在图 3(b)中,我们设计一个光照引导的 Transformer IGT(Illumination-Guided Transformer)来作为退化修复器。IGT 的基本单元是光照引导的注意力块 IGAB (Illumination-Guided Attention Block)。IGAB 由两个层归一化 LN(Layer Normalization),一个 IG-MSA 和一个前馈网络 FFN(Feed-Forward Network)组成,其细节如图 3(c)所示。
2.1 单阶段视网膜理论框架
根据视网膜理论,一个低光图像 I 可以分解为一个反射图 R 和一个照度图 L 的点乘:
然而这个视网膜模型并没有考虑噪声伪影等退化因素。因此,我们将这条公式重写为:
分别在反射图和照度图上加入了扰动项。那么在提升低光图像亮度时,上边等式两边会同时点乘一个亮度图:
等式右边第三项便表示隐藏在黑暗中的噪声伪影,并在提升亮度过程中被进一步放大。第二项表示点亮过程造成的失曝,过曝和颜色畸变。可将(3)式进一步简化为:
其中的 C 表示整体的退化项。基于(4)式,可将 ORF 推导为如下:
低光图像和照度先验图先经过光照估计器后的输出作为退化修复器的输入。
2.2 光照引导的 Transformer
如图 3(a)(ii)所示,IGT 采用一个 encoder-bottleneck-decoder 的 U-型结构。其中最重要的组成部件便是 IG-MSA,光照估计器输出的增亮特征图输入到每一个 IG-MSA 当中。在 IG-MSA 当中,输入的特征图首先被变形为 token,然后被分成 k 个 heads:
对每个 heads,分别将其线性投影为 Q,K,V:
同时也将增亮特征图形变成 token:
然后在每一个 head 计算自相似时,用光照信息作为引导:
我们的 IG-MSA 的计算复杂度为:
同比全局的 MSA 的计算复杂度:
我们 IG-MSA 计算复杂度与输入尺寸成线性而全局 MSA 的计算复杂度与输入成二次相关。我们的计算复杂度明显更低。
实验结果
我们在 LOL-v1, LOL-v2-real, LOL-v2-synthetic, SID, SMID, SDSD-in, SDSD-out, MIT Adobe FiveK 八个数据集上开展定量实验,实验结果如表 1、2 所示:
此处需要补充说明一下,MIT Adobe FiveK 官方只提供了 RAW 数据。需要大家自己导出才能得到 RGB 数据。导出有两种格式,一种是 pro RGB,这种格式不适于人的眼睛来看,但是计算得到的 PSNR 和 SSIM 指标都偏高,便于大家报指标。而另一种是 s RGB 格式,这种就是最常见的 RGB 图像格式,但是这种格式指标会比较低。本文采用的就是这种格式。我们在 repo 里贴心地为大家准备好了已经导出的 sRGB 图像下载链接,可以直接下载使用~
我们在 LOL-v1, LOL-v2-real, LOL-v2-synthetic, SID, SMID, SDSD-in, SDSD-out, MIT Adobe FiveK, LIME, NPE, MEF, DICM, VV 上测试了定性效果。视觉对比如图 4、5、6、7 所示
另外我们还做了用户调查,结果如表 3 所示:
最后,将我们的 Retinexformer 作为预处理器对暗光图像进行增强以辅助夜间目标检测的效果,在 ExDark 数据集上的定量结果如表 4 所示:
一些暗光增强辅助夜间目标检测的例子如图 8、9、10 所示:
微信扫码关注该文公众号作者