Tips:非常早的文章,不确认链接是否仍有效。
背景
低光图像是夜晚拍照时极为常见的一种现象。不充分的光照会极大的降低图像的视觉质量,细节损失、低对比度不仅导致令人讨厌的主观感受,同时会影诸多计算机视觉系统的性能(这些系统往往为正常光照图像而设计)。
导致低光图像的原因有很多,如低光环境、低端拍摄设备以及不合理的拍照设备的配置等。为尽可能的恢复图像的细节信息,改善图像质量,我们急需一种有效的低光图像增强方案。
在过去的十年里,许多研究人员对低光图像增强展开了研究并提出了多种技术。如Histogram Equalization(HE)
及其改进;Retinex
理论及其改进等等。
本文主要关注深度学习方法在该领域的一些进展,将简单汇总与介绍近几年相关的深度学习方法以及相应的数据集、相关技术的评价标准等等。
数据
这里汇总了一些公开论文中用到的低光图像数据,供模型训练与测试参考。 在低光图像增强领域中,目前最常用的数据集为SID与LOL这两种数据集。这两个数据集分别代表了低光图像增强领域的两个场景。
SID是极暗场景下的数据集,它的输入为未经任何处理的RAW格式数据,未经ISP处理;而LOL则是类似夜景这种有一定光照条件下的低光数据集,它的输入与输出均为PNG格式的数据,即经过了ISP处理。
Table.1 与低光图像增强相关的数据集
方法
上表中汇总了最近几年深度学习在低光图像增强领域中的几种方法。下面将分别针对这些方法进行简单的总结与介绍。
0. Retinex理论
经典的Retinex
理论模拟了人眼颜色感知,它假设观测图像可以被分解为两种成分:Reflectance
与Illumination
。假设表示观测图像,它可以被分解为:
在传统方法中,Single Scale Retinex, SSR
通过高斯滤波为亮度图添加平滑性作为最早期的尝试;MSR, MSRCR
通过添加多尺度高斯滤波与颜色还原对SSR
进行了拓展。关于更多相关技术可以参考:Retinex Image Processing.
在深度学习方法中,已有诸多方法尝试将Retinex
理论与深度网络相结合,在降低学习难度的同时提升算法性能,如RetinexNet
。
1. GLADNet
project, code
GLADNet
的核心:(1)为低光输入计算全局亮度估计;(2)基于前述所得与原始输入调整亮度。它将输入图像缩放到特定尺寸并送入到编解码网络中生成关于亮度的全局先验信息,基于全局先验信息与原始输入图像,采用卷积神经网络进行细节还原。在训练过程中,作者采用RAW图像合成的数据进行训练。通过大量实验验证了所提方法的有效性。
img
上图给出GLADNet
的框架图,从中可以看出,该网络由两部分构成:
全局亮度先验估计
在该部分中,作者采用了一个编解码网络架构用于估计全局亮度信息。注:为估计亮度信息,它需要将输入图像下采样到固定尺寸,这样可以保证该架构的底层感受野可以包含整个图像。
该子网络包含三个步骤:(1) 缩放输入特征到特定分辨率;(2) 采用编解码架构估计全局亮度信息;(3)缩放到原始分辨率。
细节还原
全局亮度估计过程中由于尺度缩放问题会导致细节损失,为弥补该问题,作者设计了该细节还原子网络。
相比编解码网络输出,原始输入图像应当包含更多的细节信息,因而可以为细节还原提供更多信息。该子网络以全局亮度信息+原始输入图像作为输入(这样可以保证了原始信息与亮度估计互补并传递到后续网络),该子网络另外包含三个卷积操作。
1558145522602
2. RetinexNet
RetinexNet, paper, BMVC2018,poster,ppt, code
Retinex
是一种有效的低光图像增强方法。它假设观测图像可以被分解为Reflectance
与Illumination
。现有的基于Retinex
的模型需要精心设计人工约束条件与参数用于求解该病态分解问题(这限制了模型在不同场景应用中的泛化性能)。作者收集了一批低亮度图像对(含低光与正常光图像)并提出一种
RetinexNet
架构在该数据集上进行训练学习。RetinexNet
包含一个DecomNet
用于图像分解分解以及一个EnhanceNet
用于亮度调整。在训练过程中,DeconmNet
并没有关于Reflectance
与Illumination
的真值。因而,该网络学习了这样的关键约束:图像对的反射一致性与亮度的平滑一致性。基于该分解方案,EnhanceNet
用来进行亮度增强,同时需要对Reflectance
进行降噪处理。该RetinexNet
可以通过端到端的方式进行训练。大量实验表明:
RetinexNet
不仅取得极好的视觉效果,同时可以提供一种良好的图像分解表达。
1558071668969
RetinexNet
是一种数据驱动的Retinex
分解方法,它集成图像分解与增强操作于一体。
首先,子网络
DecomNet
用于将观测图像划分为亮度独立的反射图与结构平滑的亮度图;DecomNet
网络存在两个约束条件:(1) 低光与正常光具有相同的反射图;(2) 亮度图应该是平滑的且保留有主要结构(可通过结构相关的全变差损失约束学习)。在训练过程中,它以成对图像作为输入(用于约束反射一致性);在测试阶段仅需要输入低光图像。
然后,子网络
EnhanceNet
通过多尺度Concat
操作调整亮度图以保证(1)在大范围内保持一致;(2)小范围内进行裁剪局部分布。它主要作用是提升亮度图的亮度,它是一种类似
UNet
的编解码架构。由于噪声往往存在于暗区,且易被增强过程放大,因而采用在反射图上进行降噪。
- 最后,在重建阶段通过组合调整后的亮度图与反射图计算输出图像。
- 注:为训练这样一个网络,作者利用RAW数据集构建了一个包含真实与合成图像的低光数据集。
损失函数相关
更多关于损失函数的介绍,建议查看论文介绍。
1558083479455
1558083683020
3. Kindling the Darkness: A Practical Low Light Image Enhancer
arxiv paper
低光条件下所拍摄的图像存在严重的质量问题。除了低光外,噪声、颜色失真等同样限制了图像的质量。换句话说,简单的调节的暗区的亮度不可避免的放大暗区的噪声和伪影等。受Retinex
理论启发,作者构建了一种简单有效的网络Kindling the Darkness, KinD网络
,它将图像分解为两部分:亮度部分用于调整图像亮度;反射部分用于移除降质。经过上述处理,原始空间被分解为两个更小的子空间,以期具有更好的泛化性能。需要注意的是:该网络通过不同曝光图像对进行训练,而非真实的反射与亮度信息。通过通过实验验证了所提kinD
架构的优异性能,同时在2080TiGPU
下,可以以不超过50ms
的速度处理VGA分辨率的图像。
1558333260322
从方法流程图来看:KinD
与RetinexNet
如出一辙,两者整体思想基本一致,尽在损失函数设计方面存在差异。故而,这里仅对损失函数进行描述介绍。
损失函数
从上图可以看出,KinD
的损失函数主要由三部分损失构成,它们分别是层分解部分损失、反射重建部分损失以及亮度调整部分损失。
层分解部分损失定义如下:
1558335835940
4. MSRNet Low Light Image Enhancement using Deep Convolutional Networks
arxiv paper
低光图像存在低对比度问题,导致后续视觉任务的难度提升。基于Retinex
理论与CNN,作者提出一种低光增强方法。作者表示多尺度Retinex
等价于带有不同高斯卷积核的CNN;首次启发,作者考虑采用端到端的方式学习多尺度CNN(MSRNet
)。不同于已有方法,作者将低光增强视作机器学习问题,该模型的所有参数通过反向传播方式学习得到,而传统方法则需要人工设置相关参数。最后,作者通过大量图像已验证了所提方法的有效性。
1558337147748
上图给出了作者所提MSRNet
,它采用低光图像作为输入,通过监督学习方式训练网络参数。它包含三个部分:多尺度对数变换、差分卷积以及颜色还原。总体过程可以描述为:
5. A Pipeline Neural Network for Low Light Image Enhancement
paper
受多尺度Retinex
(MSR
)原理启发,基于全卷积网络与离散小波变换(DWT
),作者提出一种端到端的低光图像增强框架。首先,作者说明MSR
可以视为一种CNN架构,集成DWT
可以改进MSR
所生成图像的质量;然后,作者提出具有去噪和增强的框架;最后,醉着在合成数据与公开数据上对所提框架进行了评估。
1558344572086
上图给出作者所提框架在训练与测试阶段的流程图,该网络采用损失进行参数训练学习,同时去噪与增强模块交替训练学习。鉴于该论文参考意义不大,故略,更多细节见原文。
6. LLCNN A Convolutional Neural Network for Low Light Image Enhancement
paper
作者提出采用CNN进行低光图像增强。作者设计了一种特殊的模块处理多尺度特征同时避免了梯度小时问题。为尽可能保留图像的纹理信息,作者采用SSIM
损失进行模型训练。基于该方法,低光图像的对比度可以自适应增强。作者通过实验验证了所提方法的有效性。
上图给出了作者所设计的网络架构图。为避免梯度消失问题,作者参考Inception, Residual
模块设计了一种新颖的卷积模块,如下图所示。
总而言之,作者所设计的网络架构可以描述为:采用一个卷积预处理图像得到均匀输入,一个卷积用于生成增强图像,其他特殊模块插入到前面两个卷积中间。
7. DSLR Quality Photos on Mobile Devices with Deep Convolutional Networks
arxiv paper, project, code,
尽管智能手机内置相机具有越来越好的拍照效果,但是物理约束(如传感器大小、镜头以及特定硬件的缺失)仍阻碍更高质量图像的获取。作者提出一种端到端的方式将普通光照图像变换为高质量视觉效果图像。作者采用残差卷积网络,它可以提升图像的颜色与细节锐利度。由于标准的MSE
损失并不适合度量图像的感知质量,作者引入一种混合损失函数(组合纹理、颜色以及上下文)。作者同时构建了一个DPED
数据集,通过该数据集进行网络训练并验证了所提方法的有效性。
8. Learning to see in the dark
arxiv paper,CVPR2018, code, demo
由于低光子、低SNR
等原因导致低光成像极具挑战。短曝光图像存在高噪声,长曝光会引入模糊不切实际。为解决低光成像存在的问题,作者构建了一个低曝光+长曝光RAW
数据集并开发一个端到端的全卷积低光图像处理框架。该框架直接以RAW
数据作为输入,经全卷积操作后输出RGB
图像。
1558321555119
数据集
方法
作者提出采用全卷积网络直接采用RAW
数据作为输入,经卷积计算后直接输出RGB
结果。对于Bayer
形式数据,需要事先将其打包为多通道数据并进行预处理(可参考上图流程)。在全卷积网络架构方面,作者主要参考了CAN
与UNet
,默认架构为UNet
。除了RAW
数据外,另一个输入为参数为放大比例系数,它用于控制输出图像的零度。下图给出了不同放大比例系数的输出结果对比。
在训练过程中,作者采用损失从头开始训练整个网络,放大系数设置为输入与真值之间的曝光差异比例。下面列出了所提方法在所构建数据集上的部分效果。
9. Learning Digital Camera Pipeline for Extreme Low Light Imaging
arxiv paper
在低光条件下 ,传统的ISP
处理会导致生成的图像极暗(过少的光子)且高噪(低信噪比)。作者提出一种数据驱动的方法用于学习低曝光与正常曝光之间的一种映射关系,从而极大的提高低光图像的视觉效果。作者提出一种新的损失函数以促进深度网络可以学习短曝光图像到正常曝光图像之间的ISP
流程,即lowRAW->sRGB
这样的一个过程。实验结果表明:相比已有网络中采用的像素级损失,该方法可以取得更优的视觉效果。
损失函数
该文的主要创新点在于损失函数的设计,故而这里对文中所提到的损失函数进行简单汇总分析。文中所设计的多准则损失函数定义如下:
网络架构
从上图可以看出,作者设计的网络架构包含两个子网络:图像还原子网络与感知损失子网络。
图像还原子网络采用了带跳过连接的UNet
架构(更多细节参考原文),它具有以下几个优点:
- 在图像还原与分割任务中,它具有极优的性能;
- 它可以处理任意分辨率图像
- 跳过连接确保了上下文信息的自适应传递,保留了高分辨率细节信息
感知损失子网络采用VGG16
的前两个卷积提取特征,这两个特征可以精确的编码图像的风格与内容感知信息。
1558320526072
10. End to End Denoising of Dark Burst Images using Recurrent Fully Convolutionaly Networks
arxiv paper
作者提出一种递归全卷积网络(Recurrent Fully Convolutional Network, RFCN
)用于处理极暗场景下的降噪并提升亮度的问题。该方法以RAW
数据作为输入,直接生成RGB
数据,它可以同时进行降噪、色彩校正以及增强等任务。该方法取得SOTA
性能且具有极好的泛化性能(一种类型相加训练模型不经finetune
仍可很好的处理不同相机得到的图片)。
损失函数定义如下:
11. Deep Burst Noising
arxiv paper, code
噪声在低光图像采集过程中不可避免的(由于手机设备有限的孔径、较小的传感器,这类问题会进一步恶化)。一种减缓低光场景噪声的方法是提升曝光时间,但是这会导致两个问题:(1) 亮区会超出传感器范围;(2)会相机或场景运动导致模糊。另一种方法是一次获取多帧短曝光图像协同降噪。本文基于后一种方案,采用RFCN
架构处理低光降噪问题。该架构可以处理任意长度序列降噪并取得了SOTA
性能。
本文目标有以下几点:
- 可以处理单帧降噪问题
- 可以拓展到任意帧
- 可以对整个序列进行降噪
- 对运动鲁棒
- 具有时序相关性
- 可以推广到其他图像还原任务中
本文所涉及方案流程如下:
- 构建单应性矩阵解决对齐问题
- 采用
FCN
独立的为每帧图像降噪 - 拓展
FCN
为并行递归网络,即集成多帧信息降噪
网络架构
** Note: 10 与11两种方法基本相同,区别仅在于处理数据的类型, 10用于处理RAW数据降噪,11用于处理RGB数据降噪,其他无甚区别。 **
12. DeepISP Toward Learning an End to End Image Processing Pipeline
project, paper
作者提出一种端到端的用于模拟ISP
流程的深度神经网络DeepISP
。它学习了从低光RAW
到最终视觉效果良好RGB
的映射,集成去马赛克、降噪以及颜色校正、图像调整等功能。在专用数据集(由三星S7只能手机采集的低光RAW
与正常光RGB
数据对)上对所提框架进行了训练与测试。所提方法在联合去马赛克降噪方面取得了SOTA
性能。相比传统ISP
方案,该方案具有更优的视觉效果。
1558420054895
上图给出了DeepISP
架构图,它包含两个部分:底层特征处理(局部修正)与高层特征处理(全局校正)。
1558422716983
13. Underexposed Photo Enhancement using Deep Illumination Estimation
paper
这是腾讯优图贾佳亚团队发表于
CVPR2019
用于低光图像增强的一种基于Retinex
的深度网络方法。本文提出一种欠曝光图像增强方法。不用于已有直接学习
Image2Image
映射的方法,我们在网络中引入了中间亮度对输入与期望增强结果构建相关性,这种处理方式提升了网络处理复杂图相对的能力。基于该模型,我们构建了一种集成亮度约束与先验的损失函数,同时准备了3000对欠曝光图像用于网络训练。该方法可以为图像重建清晰的细节、明显的对比度以及更为自然地颜色。基于所构建数据集与MIT-Adobe FiveK
数据集的实验证实:该网络可以有效处理不同挑战难度的图像。
网络架构
上图给出了作者所涉及的网络架构图,它具有两个优点:亮度图的有效学习与整体网络的高效计算。
有效学习
欠曝光图像增强需要调整局部(对比度、锐化细节、阴影、高光等)与全局(颜色分布、平均亮度与场景类别等)特征。因而,作者考虑从编码网络中提取局部与全局特征,同时设计了一种集成亮度平滑先验、重建损失、颜色损失的损失函数。这些策略有确保网络可以有效的学习到亮度图像S。
高效计算
为计算计算,作者采用低分辨率局部与全局特征学习亮度图像,然后采用
Bilateral Grid Upsampling
方式进行上采样。因此该网络的大部分计算量均位于低分辨率区域,进而确保高分辨率图像处理的实时性。
损失函数
14. Deep Bilateral Learning for Real Time Image Enhancement
project, paper, code
这是一篇Google Research
发表于SIGGRAPH2017
用于图像增强的方法。
基于双边网络处理与局部颜色仿射变换,作者提出一种新的深度网路架构用于图像增强。采用图像对训练深度网路学习双边空间下的局部仿射系数,该架构可以学习局部、全局以及内容相关的决策参数以生成期望的图像变换。
在运行时,该网络在低分辨空间学习双边空间内相关仿射参数,然后将这些参数采用保边形式上采样,最后将这些参数作用于全分辨率输入图像得到最终期望的输出。最终该算法可以在手机端以毫秒级处理高分辨率图像,对于1080p
分辨率图像可以做到实时处理。
1558495390250
网络架构
该网络的大部分推理均在低分辨率上执行,该部分用于预测类似Bilateral Grid
的局部仿射变换。图像增强不仅依赖于局部特征,同时还依赖于全局特征。因而低分辨率流进一步划分为两个分支,最后融合两个分支的结果得到最终的仿射变换系数。
在高分辨率分支在全分辨率图像上执行,它占据较少的计算,但对于获取高频信息、保边有很重要作用。为此,作者一如了Slicing
节点以参考图为例采用查找表方式构建最终的放射系数图。
最后,将所得到的高分辨率仿射系数作用于原始输入图像即可得到期望的增强图像。
- 低分辨率分支
- 高分辨率分支
- 重建分支
评价指标
关于图像质量评价的指标可以参考:参考链接。这里仅仅列举了几种较为常见的评价指标。
- VMAF 1
- VMAF 2
小结
从数据层面可以划分为:低光图像与暗光图像。
低光图像增强则更多是在
RGB
层面进行处理;而暗光图像增强则是在RAW
层面进行处理。从网络架构方面可以划分为:基于
UNet
的架构与基于Retinex
的架构。UNet
架构是一种更具通用性的架构,但其存在不可控性因素,最终生成图像无法进行人工调控;Retinex
架构则是参考了传统图像增强中的Retinex
理论与深度网络技术而提出的方案,其架构可以赋予人工交互因子,可控性稍高。从损失函数方面可以划分为:单一损失函数(等损失)与组合损失函数(+ 感知损失等)。
单一损失函数(如)往往会导致生成图像的模糊、颜色失真等现象;
组合损失函数可以在一定程度避免上述现象,但有可能出现纹理失真现象。
来源:AIWalker
作者:HappyAIWalker
推荐阅读
- VapSR | 手把手教你改进PAN,董超团队提出超大感受野注意力超分方案,已开源!
- SwinFIR | 超分领域的"ConvNeXt",值得一看
- 全新范式 | 沈春华老师团队提出无需解码器的目标检测器DFFT
- MobileOne: 移动端仅需1ms的高性能骨干,你值得拥有!
本文章著作权归作者所有,任何形式的转载都请注明出处。更多动态滤波,图像质量,超分辨相关请关注我的专栏AIWalker。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。