近年来,微光视频增强技术受到了广泛的关注。LLVE的关键要求之一是帧间亮度一致性,这对于保持增强视频的时间相干性至关重要。然而,现有的大多数基于单图像的方法无法解决这一问题,导致增强后的闪烁效果降低了整体质量。此外,基于3D卷积神经网络(CNN)的方法是为视频保持帧间一致性而设计的,计算成本很高,使其不适合实时应用。为了解决这些问题,我们提出了一个名为FastLLVE的高效管道,它利用查找表(LUT)技术有效地保持帧间亮度一致性。具体来说,我们设计了一个可学习的强度感知LUT (IA-LUT)模块,用于自适应增强,解决了低光场景下的低动态问题。这使得FastLLVE能够执行低延迟和低复杂性的增强操作,同时保持高质量的结果。在基准数据集上的实验结果表明,我们的方法在图像质量和帧间亮度一致性方面都达到了最先进的SOTA性能。更重要的是,我们的FastLLVE可以以每秒50帧(FPS)的速度处理1080p的视频,在推理时间上比基于SOTA cnn的方法快2倍,使其成为实时应用的有前途的解决方案。代码可在https://github.com/Wenhao-Li777/FastLLVE上获得。
低光视频增强(LLVE)是一项长期存在的任务,旨在将低光视频转换为具有更好可视性的常光视频,近年来受到了相当大的关注。在弱光条件下,视频往往会出现纹理恶化和对比度低的问题,从而导致可见度差和高水平视觉任务的严重退化。与传统的基于高ISO和曝光的方法不同,这种方法会导致噪声和运动模糊[4],LLVE提供了一种有效的解决方案,可以提高在极低光照条件下拍摄的视频的视觉质量。此外,它还可以作为广泛应用的基础增强模块,如视觉监控[46]、自动驾驶[18]、无人机[31]等。
像其他典型的视频任务,如视频帧插值[33,34,42]和视频超分辨率[8,19 - 21,32,48]一样,LLVE也需要时间稳定性。此外,LLVE固有的病态特性使其更具挑战性。因此,尽管低光图像增强(LLIE)表现出了显著的性能,但将这些基于图像的方法递归地应用于视频帧是不可行的。因为它是耗时的,并可能导致在增强的视频闪烁效果。如[10]所示,闪烁问题是由相邻帧之间的亮度不一致引起的。为了解决这个问题,最近的LLVE方法利用时间对齐[38]和3D卷积(3D- conv)[10,23]来建立视频中的时空关系。他们还采用自一致性[2,51]作为辅助损失来指导网络保持亮度一致性。然而,基于对齐的方法,其目的是估计相邻帧之间对应的像素,容易出现错误,并可能导致对象失真在增强视频中。相比之下,3D-Conv能够捕获全面的时空信息,但代价是计算复杂度更高。因此,以前的方法很难在效率和性能之间取得平衡。综上所述,一个周全的LLVE方法应该解决以下挑战性问题:
不适定问题。在弱光视频中,色彩空间的低动态范围可能导致相似的色彩输入出现不同的目标颜色。这种现象导致了一对多映射问题,在复杂的场景中很难解决。为了解决这个问题,以前的方法[10,23,38]利用全局上下文信息和局部一致性来增强不同的颜色。尽管这些方法都有各自的功效,但由于它们严重依赖于上下文提取的精度和可靠性,因此在颜色处理方面存在不稳定性。
亮度一致性。在输出视频中保持亮度一致性对于在LLVE中实现高感知质量至关重要。然而,目前基于对齐的方法[38]往往不能实现相邻帧之间的精确对齐,导致LLVE输出不稳定。否则,用于提高这些方法稳定性的自洽损失函数[2,51]也无法解决根本的不稳定性问题。这种限制阻碍了他们有效提高整体视觉质量的能力。
效率。尽管3D-Conv方法通过利用全面的时空信息在视频增强任务中显示出显著的改进[10,23],但它们的计算复杂度很高。这使得它们对于需要实时增强的实际应用程序来说不切实际。为了解决上述问题,我们提出了一个名为FastLLVE的新框架。我们的方法建立了一个稳定和自适应的查找表(LUT),以实现实时LLVE。特别是,设计一个亮度感知LUT (IA-LUT),将RGB颜色从一个颜色空间转换到另一个颜色空间,可以处理LLVE中常见的一对多映射问题。与存储颜色值的一对一映射关系的传统lut不同,我们的IA-LUT存储关于每个像素的可学习增强强度的一对多映射关系。为了提高我们方法的泛化能力,我们遵循参数化方法[50],将一组基lut与动态权重相结合。重要的是,我们的方法本质上保持了帧间亮度的一致性,因为基于像素的lutt变换与所有具有相同RGB值和增强强度的像素一致。此外,该方法计算效率高,适合实时视频增强。为了解决LUT可能无法处理的噪声问题,特别是在极低光照条件下,我们简化了一种常见的去噪方法[3],加入了一个用于去噪的插件细化模块,称为FastLLVE-dn,以牺牲一些效率为代价进一步提高了性能。值得注意的是,其他去噪方法可以很容易地取代原有的去噪方法。如图1所示,我们的两种模型在峰值信噪比(PSNR)方面都明显优于现有方法,而FastLLVE实现了超过50帧/秒(FPS)的实时处理速度。
本文的贡献可以概括如下:我们提出了一种新的基于lut的框架,名为FastLLVE,用于实时低光视频增强。我们设计了一种新颖的轻量级强度感知LUT,解决了LLVE中的一对多映射问题。大量实验表明,在大多数情况下,FastLLVE在基准测试中达到了SOTA结果,推理速度超过50 FPS。
弱光增强的研究始于传统的LLIE方法,包括直方图均衡化(Histogram Equalization)[9,27,37]和Retinex理论[5,6,16,40]。深度学习方法[15,23,26,28,39,47,53]在有效性、效率和泛化能力方面显示出巨大的优势。Lv等[23]提出了一种多分支网络,该网络从不同层次提取丰富的特征,通过多个子网增强弱光图像。Wang等人[39]引入了中间照明,而不是直接学习图像到图像的映射。Pan等人[28]提出了一种新的模型学习来估计逐像素调整曲线并循环重建输出。Zhou等[53]专门设计了一个联合弱光增强和去模糊的网络。
LLVE是LLIE的扩展,它对亮度一致性提出了额外的要求,如[15]所述。现有的LLVE方法通过三种常见的解决方案来解决这一挑战,即3D卷积、特征对齐和自一致性。Lv等[23]将其提出的LLIE网络的所有2D-Conv层交换为3D-Conv层,实现对弱光视频的处理。Jiang等[10]基于3D U-Net训练一个LLVE网络。Wang等人[38]将相邻的帧对齐到3D-Conv中,基于Retinex理论的中间帧增强光照降噪[16]。为了提高效率,一些方法使用具有自一致性的2D-Conv作为辅助损失。Chen等人[2]从相同的低光照视频中随机选择两帧来训练深度孪生网络,利用自一致性损失使网络对噪声和场景中的微小变化具有鲁棒性。Zhang等[51]没有选择相似的帧,而是根据预测的光流,通过扭曲输入图像及其对应的地真值来模拟相邻帧和地真值,人为合成相似的数据对,造成自一致性损失。然而,自一致性是一种弱且不稳定的约束,不能解决亮度一致性的根本问题。
3D-LUT是一个3维的值网格,它将输入颜色值映射到相应的输出颜色值。通过将这种转换应用于图像或视频,可以实现广泛的颜色和色调效果,从微妙的色彩分级到戏剧性的色彩转换。LUT因其对色彩变换建模效率高,已经成为ISP系统[11]和图像编辑软件中经典且常用的像素调整工具。近年来,在图像增强任务中提出了基于LUT的深度学习方法。Zeng等人[50]首先利用轻量级CNN来预测积分多个基LUT的权重,并利用构造的图像自适应LUT来实现图像增强。Wang等人[41]进一步提出了一种考虑全局场景和局部空间信息的可学习的空间感知LUT。
Yang等人[44]意识到采样策略的重要性,设计了一种基于可学习自适应采样间隔的非均匀采样策略来取代次优均匀采样策略。同时,Yang等[45]也尝试将1D LUT与3D LUT相结合,相互促进,实现更轻量化、性能更好的3D LUT。据我们所知,LUT还没有在lve任务中被采用。在本文中,我们将介绍LUT如何自然地适用于LLVE并支持实时应用程序
3 METHOD
本节概述了FastLLVE结构的复杂性,如图2所示。输入视频帧首先通过轻量级编码器网络编码为潜在特征。然后将潜在特征并行馈送到LUT生成模块和视频变换模块两个模块中。其中,通过LUT生成模块生成视频自适应LUT,同时生成用于视频变换的强度图。然后,以每个像素的RGB值和增强强度为指标,通过IA-LUT变换对像素进行增强。最后,将变换后的视频送入去噪模块进行进一步增强。第3.1节和第3.2节将分别关注LUT生成模块和视频转换模块。关于特征编码器网络和去噪模块的更多结构细节可以在附录中找到。
3.1 LUT Generation Module
虽然来自不同区域的低光像素在RGB中可能看起来相似,但它们在低光增强过程中对应的增强强度不同。在图3中,我们可视化了几个强度图,其中甚至来自极低光照视频的像素也具有不同的增强强度。传统的三维lut只保留了一对一的映射关系进行颜色变换,无法解决相似颜色的弱光像素的病态问题。为了解决这个问题,我们增加了一个表示增强强度的新维度,并将相应的LUT表示为强度感知LUT。它可以存储一对多映射关系的多个颜色空间,并为LLVE提供更精细的颜色转换。值得注意的是,IA-LUT中只保留了一个采样的稀疏离散输入空间,避免了引入大量参数,导致内存负担大,训练难度大。由于IA-LUT的输入空间是稀疏离散的四维输入空间,因此对IA-LUT的LUT变换需要使用四线性插值来实现。
......
3.2 Video Transformation
如图2所示,我们首先估计强度图,然后根据RGB视频和相应的强度图进行查找。为了构建该地图,我们采用了一个3 × 3 × 3的5个反卷积层的轻量级解码器[49],利用编码器的潜在特征,得到强度图𝐼∈R𝑁×𝐻×𝑊×1。通过连接强度图和输入视频,我们可以执行3.1节中介绍的查找和插值。我们递归地对视频序列的每一帧进行变换,得到亮度稳定一致的视频输出。此外,由于LUT变换是独立应用于每个像素,并且可以并行处理四线性插值,因此我们通过CUDA实现IA-LUT变换,以加速变换并实现方便的端到端训练。具体来说,我们将查找和插值操作合并到单个CUDA内核中,以最大限度地提高并行性。继Adaint[44]之后,我们在查找操作中也采用二分搜索算法,因为对数的时间复杂度可以使计算成本可以忽略不计,除非将𝐿设置为一个意外的大值。需要强调的是,逐像素变换是IA-LUT自然保持帧间亮度一致性的关键,逐像素变换仅以每个输入像素的红、绿、蓝颜色和增强强度为索引。虽然FastLLVE框架可以自然地保持帧间亮度的一致性,同时取得了很好的性能,但需要指出的是,LUT容易受到噪声的影响。在现实世界中,在弱光下拍摄的图像和视频环境不可避免地包含噪音。因此,我们牺牲了一些效率,增加了一个简单的去噪模块作为后处理,对增强的正光视频进行细化,以获得更好的性能。具体来说,在本文中,我们选择遵循文献[3]的做法来设计附加去噪模块。然而,值得注意的是,几乎所有现有的去噪方法,如[24,30,35,52],都可以作为后处理的替代方法。
4 EXPERIMENTS
我们基于PyTorch[29]实现了我们的方法,并在NVIDIA GeForce RTX 3090 GPU上训练了框架。采用标准的Adam优化器[12]对整个网络进行训练,batch size设为8。初始学习率设为4×10−4,根据余弦退火方案[7]逐渐衰减,重启设为10−7
对于损失函数,由于之前基于lut的方法[44,45,50]已经证明了平滑正则化和单调正则化的有效性,我们在损失函数中加入了适应IA-LUT的4D平滑正则化和4D单调正则化。如果我们添加额外的去噪模块,去噪结果和真值之间的成对损失将包含在损失函数中。因此,总损失函数定义为:
其中𝑙𝑟0为变换后的正光视频与地真值之间的重构损失,𝑙𝑟1为最终去噪结果与地真值之间的去噪损失。两者都使用了Charbonnier Loss[13,14]。4D平滑正则化损失𝑙𝑠由两部分组成,分别对应视频自适应IA-LUT和视频相关权值。它防止了LUT中极端颜色变化带来的伪影,同时4D单调正则化损失𝑙𝑚保留了增强过程中的鲁棒性。𝑙𝑠和𝑙𝑚的详细公式可在附录中找到。其中𝑙𝑟0为变换后的正光视频与地真值之间的重构损失,𝑙𝑟1为最终去噪结果与地真值之间的去噪损失。两者都使用了Charbonnier Loss[13,14]。4D平滑正则化损失𝑙𝑠由两部分组成,分别对应视频自适应IA-LUT和视频相关权值。它防止了LUT中极端颜色变化带来的伪影,同时4D单调正则化损失𝑙𝑚保留了增强过程中的鲁棒性。𝑙𝑠和𝑙𝑚的详细公式可在附录中找到。对于超参数,在损失函数中,我们分别将其设置为0.0001和10。对于𝐿和𝑇,虽然更高的值有助于LUT建模的颜色转换精度,但它们会显著增加整个框架中使用的所有LUT的参数。因此,我们遵循这两个数字中最广泛使用的设置[44,45,50],这是为了平衡精度和参数大小而提出的。因此,每个维度上的采样网格点的个数设置为33,基础ia - lut的个数设置为3。
4.2 Experiment Setup
我们将我们提出的方法与八种SOTA低光增强方法进行了全面的比较,包括基于图像和基于视频的方法。我们评估的基于图像的方法有MBLLEN[23]、Cheby[28]和LEDNet[53],而SMID[2]、SMOID[10]、StableLLVE[51]、SALVE[1]和SDSDNet[38]是完全基于视频的方法。我们使用他们发布的代码并遵循相同的训练策略在两个现实世界的低光视频数据集上训练这些网络,即SDSD[38]数据集和SMID[2]数据集。SDSD数据集分为SDSD训练和测试数据集,分别包含23,542和750视频帧,而SMID训练和测试数据集包含18,278和1470视频帧。然后,我们在SDSD和SMID测试数据集上对FastLLVE和比较方法的性能进行了评估,以证明我们的方法的优越性。值得注意的是,我们实验中使用的SMID数据集已经进行了预处理,通过SMID中自己提出的预处理方法将RAW数据转换为sRGB数据。
我们使用峰值信噪比(PSNR)和结构相似性(SSIM)的常见评估指标来评估增强视频的质量。此外,借鉴前人的研究[10,23,51],我们考虑了平均亮度(AB (Var))和平均绝对亮度差(MABD)的方差来评估帧间亮度一致性的维持能力,值越小表示一致性越好。此外,我们还记录了每种方法在NVIDIA GeForce RTX 3090 GPU上1080p低光帧的平均处理时间。
4.3亮度一致性比较
如表1所示,我们使用AB (Var)和MABD来评估帧间亮度一致性的维持情况。在这两个测试中,FastLLVE优于所有比较的方法,包括SDSDNet,在亮度一致性方面是目前的SOTA。值得注意的是,SDSDNet还包含了一个基于Retinex理论的去噪模块[16]。此外,我们还计算了SDSD测试数据集相邻帧之间的平均亮度均值差异(MD-AB),如图5所示。很明显,FastLLVE在亮度一致性方面达到了最好的性能,并且表现得与地面真值最相似。除了定量比较,我们还在图6中提供了定性比较。SDSDNet会在相邻帧之间产生不正确的光点,这在处理局部亮度不一致时体现了它的局限性。相比之下,FastLLVE dn具有更好的抑制局部帧间亮度不一致的能力,这得益于IA-LUT的精心设计。
4.4增强性能比较
在表1中,我们给出了SDSD和SMID测试数据集上PSNR和SSIM的性能比较。与StableLLVE相比,我们的FastLLVE实现了近3倍的推理速度,并且在PSNR方面优于StableLLVE。同时,FastLLVE在两个数据集的PSNR和SSIM上都达到了SOTA的性能,并且大大优于StableLLVE。值得注意的是,SDSD测试数据集中的PSNR值普遍较高,这表明由于SDSD测试数据集中的大多数视频都是在极低光照的情况下拍摄的,因此从极低动态范围的色彩空间中恢复颜色是困难的。我们进一步对图7-8中的两个数据集进行定性比较。在图7中,我们给出了SDSD测试数据集中极弱光照视频的结果。除SMOID和SDSDNet外,以往的颜色还原方法存在明显的不正确。SMOID产生模糊的结果和缺乏纹理细节。由于噪声图估计的偏差,SDSDNet会产生一定程度的噪声。此外,在其他方法的结果中出现了较暗的区域和明亮区域的彩色边界,这表明亮度增强不正确。与这些方法相比,我们的FastLLVE解决了色彩恢复、亮度增强和噪声抑制的困难,在视觉上取得了很好的性能。在图8中,恢复具有严重色彩偏差的低光视频具有挑战性。例如,来自SDSDNet的增强弱光视频呈现出比地面真实暗得多的颜色,StableLLVE的结果遭受颜色失真。这背后的原因可能是对颜色变换的估计不准确。相比之下,FastLLVE和FastLLVE dn都可以很好地增强弱光视频与地面真实相似的颜色空间,即使存在颜色偏差。
4.5 Ablation Study
为了评估IA-LUT的有效性并探索更好地利用去噪模块,我们进行了消融研究,并将结果显示在图9和表5中。
LUT的结构:我们将IA-LUT变为常见的3D LUT并去除了解码器,从而构建基于3D LUT的弱光视频增强网络,并与IA-LUT的FastLLVE进行对比。如表5所示,FastLLVE完全优于基于3D LUT的网络,这说明增强强度的额外维度大大提高了普通3D LUT在弱光条件下建模颜色变换的能力。除了定量比较之外,我们还在图9中可视化了常见的3D LUT和IA-LUT。由于4维IA-LUT难以简洁地说明,我们选择了三个具有代表性的增强强度𝑒并将它们固定在IA-LUT中绘制3D余数。从可视化中可以看出,IA-LUT的剩余部分比3D LUT更平滑、更正确地模拟了颜色变换。更重要的是,随着𝑒的增加,存储颜色映射关系的IA-LUT的3D剩余部分倾向于更亮这个观察验证了增强强度对确定相对最优的颜色变换的影响,这与我们的总体设计是一致的。
去噪:正如我们指出的,LUT容易受到噪声的影响。然而,在低光条件下拍摄的真实视频通常会受到噪声的影响。为此,期望通过增加去噪模块来抑制噪声,从而提高网络性能。在FastLLVE和FastLLVE dn的比较中,一个简单的去噪模块能够在性能上补充LUT,在所有指标上都有明显的改进。注意,去噪模块也有利于亮度一致性的评估。一个可能的原因是AB (Var)和MABD对噪声也很敏感。去噪模块位置:除设置去噪模块作为后处理外,在整个框架的开头构建去噪模块作为预处理也是可行的。忽略噪声增强的可能性,预处理去噪模块似乎更为合理。然而,值得注意的是,在现实世界中没有可行的方法来收集干净的低光视频,这导致作为预处理的去噪模块的监督训练缺乏ground truth。因此,没有监督的去噪模块会影响视频自适应IA-LUT通过整个框架的端到端训练来学习不正确的映射。
......