代码
MindSpore论文13 [IEEE TPAMI] Zero-DCE++,MindSpore实时无参考低光图像增强算法

MindSpore论文13 [IEEE TPAMI] Zero-DCE++,MindSpore实时无参考低光图像增强算法

MindSpore论文13 IEEE TPAMI Zero-DCE++,MindSpore实时无参考低光图像增强算法

作者:李锐锋

文章来源:https://zhuanlan.zhihu.com/p/527358875

MindSpore作为一个开源的AI框架,为产学研和开发人员带来端边云全场景协同、极简开发、极致性能,超大规模AI预训练、极简开发、安全可信的体验,2020.3.28开源来已超过上百万的下载量,MindSpore已支持数百+AI顶会论文,走入Top100+高校教学,通过HMS在5000+App上商用,拥有数量众多的开发者,在AI计算中心,智能制造、金融、云、无线、数通、能源、消费者1+8+N、智能汽车等端边云车全场景逐步广泛应用,是Gitee指数最高的开源软件。欢迎大家参与开源贡献、套件、模型众智、行业创新与应用、算法创新、学术合作、AI书籍合作等,贡献您在云侧、端侧、边侧以及安全领域的应用案例。

在科技界、学术界和工业界对MindSpore的广泛支持下,基于MindSpore的AI论文2022年Q2月份在所有AI框架中占比6%,首次进入全球第二,2021年4季度进入全球前三,感谢CAAI和各位高校老师支持,我们一起继续努力做好AI科研创新。MindSpore社区支持顶级会议论文研究,持续构建原创AI成果。我会不定期挑选一些优秀的论文来推送和解读,希望更多的产学研专家跟MindSpore合作,一起推动原创AI研究,MindSpore社区会持续支撑好AI创新和AI应用,本文是MindSpore AI顶会论文系列第13篇,我选择了来自南开大学的一篇论文解读,感谢南开大学各位专家教授同学的投稿

1.研究背景

受到环境和设备的影响,人们经常获取到一些低光图像,不仅影响人们的视觉感受,更会大幅降低计算机视觉系统的可靠性。因此,低光图像增强对提高图像视觉质量和计算机视觉系统在极端光照条件下的性能至关重要。

本文将介绍低光增强(Low-Light Image Enhancement, LLIE)领域的工作《Learning to Enhance Low-Light Image via Zero-Reference Deep Curve Estimation》,该工作发表在IEEE TPAMI期刊。该工作是在IEEE CVPR2020年发表的《Zero-DCE Zero-Reference Deep Curve Estimation for Low-Light Image Enhancement》工作基础上进行改进。

2.基于MindSpore框架的算法实现成员介绍

郭春乐,南开大学计算机学院媒体计算研究室,师资博士后,合作导师为程明明教授。他的主要研究方向为基于深度学习的图像/视频复原及增强技术,如低光增强,图像去雾,视频补全等,并以第一作者/通信作者在IEEE CVPR,IEEE TPAMI,IEEE TIP等CCF-A类会议和期刊发表论文多篇。

靳鑫,南开大学软件学院本科生,南开大学计算机学院媒体计算研究室,科研助理。主要研究方向为基于RAW数据的低光图像增强算法,曾获NTIRE 2022 Night Photography Rendering赛道季军。实现多个SOTA算法迁移适配到MindSpore框架,获 MindSpore 社区开发者证书。

3.论文主要内容简介

1). 研究动机

由于一些环境因素和硬件的限制,许多照片通常是在低光照条件下拍摄的。主要因素包括环境中的照明条件不足和不平衡,物体在极端背光下的放置不正确,以及图像捕获期间曝光不足。这种低光照片的质量受损,会影响到观众的体验。还会导致信息传输不理想,传达错误的信息,例如不准确的对象/人脸检测和识别。此外,尽管深度神经网络在图像增强和恢复方面表现出令人印象深刻的性能,但由于参数量过大,它们不可避免地会导致高内存占用和长推理时间。在实际应用中需要深度模型的低计算成本和快速推理速度,特别是对于资源有限的实时设备,例如移动平台。

2).Zero-DCE

因此,本文提出一种全新的低光图像增强策略,没有直接执行图像到图像的映射,而是将任务重新定义为图像特定的曲线估计问题。通过估计的曲线对图片进行调整,最终可以达到极快的推理速度。算法框架如图1所示,我们首先介绍Zero-DCE中三个重要的组成部分,包括亮度增强曲线(LE-Curve),参数估计网络(DCE-Net)以及无参考损失函数(Non-reference loss)。

图1: Zero-DCE流程图

(1)亮度增强曲线(LE-Curve)

受照片编辑软件中使用的曲线调整的启发,我们设计了一种可以将弱光图像自动映射到正常光照的曲线,其中自适应曲线参数完全取决于输入图像。设计这种曲线需要满足三个标准:1). 增强图像的每个像素值应落在[0,1]的范围内,以避免溢出截断引起的信息丢失;2). 这条曲线应该是单调的,以保持相邻像素的差异(对比度);3). 在梯度反向传播的过程中,这条曲线的形式应该尽可能简单和可微。

为了实现这三个目标,我们设计了一条二次曲线,可以表示为:

其中表示像素坐标,是给定输入的增强版本,可训练曲线参数调整曲线的大小并控制 暴露水平。输入的每个像素都被归一化为 的范围,并且所有操作都是逐像素的(每个颜色通道具有单独的曲线)。

在式的基础上,我们发现通过使用迭代的思路来进行高序曲线(High Order Curve)增强与逐像素曲线(Pixel-wise Curve)增强可以使得性能进一步增强。因此最终光照增强曲线公式如下:

其中表示迭代次数。表示每个像素位置的曲线参数。

3)参数估计网络(DCE-Net)

我们利用一个简单的卷积网络估计特定于图像的参数图,进而结合亮度增强曲线迭代的对输入图像进行增强。DCE-Net网络主要由堆叠的卷积、激活函数组成,跳连接层用于将浅层特征复用,最后通过Tanh激活函数输出值域在间的参数图。DCE-Net的网络结构如图2所示。

图2: Zero-DCE网络结构

(3)无参考损失函数(Non-reference loss)

对于无参考学习来讲,选择合适的损失函数是十分重要的。本方法通过空间一致性损失曝光控制损失颜色一致性损失以及光照平滑损失

空间一致性损失:

其中是局部区域的数量(局部区域如图3表示), 是以区域 i 为中心的四个相邻区域(上、下、左、右)。 我们将和分别表示为增强版本和输入图像中局部区域的平均强度值。

图3:空间一致性损失

曝光控制损失

其中表示大小为的非重叠局部区域的数量,增强图像中局部区域的平均强度值表示为。

颜色一致性损失

其中表示增强图像中通道的平均强度值,一对通道表示为。

光照平滑损失:

其中是迭代次数,水平和垂直梯度操作分别表示为和。

综上所述,总损失为:

其中权重和用于平衡不同损失的作用。

3. Zero-DCE++

在充分实验和观察的基础上,我们对Zero-DCE从三个方面进行优化,最终获得了参数更少,计算量更低,推理速度更快的Zero-DCE++。

(1)采用轻量级的网络结构

在保持基本网络结构的基础上,我们采用深度可分离卷积替代传统的卷积层从而大幅降低网络的参数量和计算量。

(2)简化亮度增强曲线

在经过大量试验后,我们发现在每次迭代过程中变化微小(如图4所示),可以采取一个统一的曲线参数近似代替,因此我们将亮度增强曲线简化为:

表示相同的增强曲线参数。这样不仅可以减少参数数量,还可以进一步提升模型的推理速度。

图4: 不同迭代次数时,增强曲线的参数可视化

(3)对输入图像进行下采样用于估计曲线参数

图像的像素之间存在大量的冗余信息,且网络估计的曲线参数图具有平滑的特性。基于以上原因,我们对输入图像进行下采样用于估计曲线参数,再将曲线参数上采样至原始尺寸后用于图像的迭代增强。根据主观和客观测评结果,均衡算法性能和计算效率,在算法实施中我们选择12倍下采样。图5展示了一个场景在不同下采样倍率下的增强结果。

图5 一个场景在不同下采样倍率下的增强结果

最终 Zero-DCE++ 具有10K 可训练参数,对于大小为 的图像具有0.115G FLOPs 、实时推理速度(单个 GPU/CPU 上 1000/11 FPS),以及快速训练(20 分钟)。

4.MindSpore代码链接

【论文链接】:https://ieeexplore.ieee.org/document/9369102TPAMI2021

【基于MindSpore实现代码开源链接】:

https://gitee.com/mindspore/contrib/tree/master/papers/Zero-DCE++

https://github.com/mindspore-ai/contrib/tree/master/papers/Zero-DCE%2B%2B

5.算法框架技术要点

Zero-DCE++通过使用Depth-wise卷积与Point-wise卷积的堆叠来进一步减少参数量,具体模块代码如下:

图6 基本卷积模块

上文中提到,由于Zero-DCE++支持对图像进行下采样之后以提高推理速度,因此模型实现过程中需要支持在输入后对Tensor进行下采样的操作。在本实现中,下采样操作为双线性插值下采样,具体实现由Mindspore内置接口mindspore.ops.ResizeBilinear实现。Zero-DCE++具有将浅层特征复用的跳层连接由通道维度上的连接操作实现,具体实现方式为Mindspore的内置接口mindspore.ops.Concat实现,通道维度则是由axis=1参数限制。

图7 Zero-DCE++基本网络结构与resize和增强操作。

图8 Zero-DCE++的forward过程。

需要注意的是,Zero-DCE++的增强操作是在对曲线参数进行双线性插值上采样之后进行的,也就是说在增强过程中的图片是没有下采样过的,这使Zero-DCE++得以均衡算法性能和计算效率。

Zero-DCE++的空间一致性损失由于需要计算图像每个patch间的差值,首先需要先算出输出Tensor的R、G、B三通道进行均值操作得到表示平均强度的灰度图。之后通过Mindspore内置的mindspore.nn.AvgPool2d来对图片进行Kernel大小和步长均为Patch size的平均池化操作。由于每个patch 都需要与上下左右四个patch进行差值计算,可以通过自定义的卷积操作来实现。

图9 自定义卷积操作与权重。

图10 使用自定义卷积和权重进行运算。

曝光控制损失具体实现方式与空间一致性损失类似,首先需要先算出输出Tensor的灰度图。之后通过AvgPool2d来对图片进行Kernel大小和步长均为Patch size的平均池化操作得到表示每个patch平均亮度的Tensor。之后与预先设置好的、想要达到的平均亮度做差即可。

颜色一致性损失基于“灰色世界”(Gray World)假设,具体实现方式为先使用Mindspore内置的mindspore.ops.Split接口将输出Tensor的R、G、B三通道分离,之后使用mindspore.ops.ReduceMean对三个通道逐一计算平均值。最后进一步计算,得到最终损失。

图11 颜色一致性损失。

最后是光照平滑损失,梯度的计算通过Mindspore的Slice特性可以轻松实现,之后按照公式计算均值即可。

图12 光照平滑损失。

训练与测试代码均可在开源的仓库中找到,因不具有难以理解的难点,在此就不再过多赘述。

6.实验结果

我们给出一些经典低光场景下本文算法和其他SOTA算法之间结果的主观和客观对比。图6展示了主观结果的对比,可以看出Zero-DCE和Zero-DCE++获得最优的视觉效果。表1中展示了各算法在测试集合上的客观评价指标的性能对比,可以看出尽管Zero-DCE和Zero-DCE++是无参考算法但依然获得了较好的量化结果。

图6 主观结果的对比

表1 客观量化结果的对比

7.总结与展望

我们提出了一种全新的、基于无参考学习的低光增强学习策略。这是通过将低光图像增强任务公式化为图像特定曲线估计问题,并设计一组可微的非参考损失来实现的。在Zero-DCE的基础上通过重新设计网络结构、重新设计曲线估计和控制输入图像的大小,可以进一步改进得到 Zero-DCE++,以使得我们的方法具有能够在计算资源有限的设备应用的潜力。

本文作者在MindSpore社区从事相关AI工作,欢迎您扫码加入QQ群,与数千MindSpore开发者一起交流,用MindSpore赋能千行百业,点亮您的智慧生活。

有任何问题可通过官方QQ群: 871543426获得第一时间解答

MindSpore官网:https://www.mindspore.cn/

MindSpore论坛:https://bbs.huaweicloud.com/forum/forum-1076-1.html

代码仓地址:

Gitee-https://gitee.com/mindspore/

GitHub-https://github.com/mindspore-ai