技术博文——MindSpore框架下实时无参考低光图像增强算法

昇思MindSpore 2022-05-31 11:32:01

一、研究背景

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

本文将介绍低光增强(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》工作基础上进行改进。

二、成员介绍

郭春乐,南开大学计算机学院媒体计算研究室,师资博士后,合作导师为程明明教授。

他的主要研究方向为基于深度学习的图像/视频复原及增强技术,如低光增强,图像去雾,视频补全等,并以第一作者/通信作者在IEEE CVPR,IEEE TPAMI,IEEE TIP等CCF-A类会议和期刊发表论文多篇。

靳鑫,南开大学软件学院本科生,南开大学计算机学院媒体计算研究室,科研助理。

他的主要研究方向为基于RAW数据的低光图像增强算法,曾获NTIRE 2022 Night Photography Rendering赛道季军。实现多个SOTA算法迁移适配到Mindspore框架,获 Mindspore 社区开发者证书。

三、论文主要内容简介

1、研究动机

由于一些环境因素和硬件的限制,许多照片通常是在低光照条件下拍摄的。其主要因素包括环境中的照明条件不足和不平衡,物体在极端背光下的放置不正确,以及图像捕获期间曝光不足。

这种低光照片的质量受损,会影响到观众的体验,还会导致信息传输不理想,传达错误的信息,例如不准确的对象、人脸检测和识别。

此外,尽管深度神经网络在图像增强和恢复方面表现出令人印象深刻的性能,但由于参数量过大,它们不可避免地会导致高内存占用和长推理时间。

在实际应用中需要深度模型的低计算成本和快速推理速度,特别是对于资源有限的实时设备,例如移动平台。

2、Zero-DCE

本文提出一种全新的低光图像增强策略,没有直接执行图像到图像的映射,而是将任务重新定义为图像特定的曲线估计问题。通过估计的曲线对图片进行调整,最终可以达到极快的推理速度。

算法框架如图1所示,我们首先介绍Zero-DCE中三个重要的组成部分,包括亮度增强曲线(LE-Curve)参数估计网络(DCE-Net)以及无参考损失函数(Non-reference loss)

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

受照片编辑软件中使用的曲线调整的启发,我们设计了一种可以将弱光图像自动映射到正常光照的曲线,其中自适应曲线参数完全取决于输入图像。

设计这种曲线需要满足三个标准:

1) 增强图像的每个像素值应落在[0,1]的范围内,以避免溢出截断引起的信息丢失;

2) 这条曲线应该是单调的,以保持相邻像素的差异(对比度);

3) 在梯度反向传播的过程中,这条曲线的形式应该尽可能简单和可微。

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

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

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

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

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

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

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

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

空间一致性损失:

 

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

曝光控制损失:

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

颜色一致性损失:

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

光照平滑损失:

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

综上所述,总损失为:

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

3、Zero-DCE++

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

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

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

(2)简化亮度增强曲线

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

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

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

图像的像素之间存在大量的冗余信息,且网络估计的曲线参数图具有平滑的特性。基于以上原因,我们对输入图像进行下采样用于估计曲线参数,再将曲线参数上采样至原始尺寸后用于图像的迭代增强。

根据主观和客观测评结果,均衡算法性能和计算效率,在算法实施中我们选择12倍下采样。图5展示了一个场景在不同下采样倍率下的增强结果。

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

四、代码链接

【论文链接】

https://ieeexplore.ieee.org/document/9369102TPAMI2021

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

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

五、算法框架技术要点

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

上文中提到,由于Zero-DCE++支持对图像进行下采样之后以提高推理速度,因此模型实现过程中需要支持在输入后对Tensor进行下采样的操作。

在本实现中,下采样操作为双线性插值下采样,具体实现由Mindspore内置接口mindspore.ops.ResizeBilinear实现。

Zero-DCE++具有将浅层特征复用的跳层连接由通道维度上的连接操作实现,具体实现方式为Mindspore的内置接口mindspore.ops.Concat实现,通道维度则是由axis=1参数限制。

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

Zero-DCE++的空间一致性损失由于需要计算图像每个patch间的差值,首先需要先算出输出Tensor的R、G、B三通道进行均值操作得到表示平均强度的灰度图。

之后通过Mindspore内置的mindspore.nn.AvgPool2d来对图片进行Kernel大小和步长均为Patch size的平均池化操作。由于每个patch 都需要与上下左右四个patch进行差值计算,可以通过自定义的卷积操作来实现。

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

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

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

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

六、实验结果

我们给出一些经典低光场景下本文算法和其他SOTA算法之间结果的主观和客观对比。图6展示了主观结果的对比,可以看出Zero-DCE和Zero-DCE++获得最优的视觉效果。

表1中展示了各算法在测试集合上的客观评价指标的性能对比,可以看出尽管Zero-DCE和Zero-DCE++是无参考算法但依然获得了较好的量化结果。

 ✦

七、总结与展望

我们提出了一种全新的、基于无参考学习的低光增强学习策略。这是通过将低光图像增强任务公式化为图像特定曲线估计问题,并设计一组可微的非参考损失来实现的。

在Zero-DCE的基础上通过重新设计网络结构、重新设计曲线估计和控制输入图像的大小,可以进一步改进得到 Zero-DCE++,以使得我们的方法具有能够在计算资源有限的设备应用的潜力。

MindSpore官方资料

官方QQ群 : 486831414

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

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

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

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

...全文
1917 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

13,096

社区成员

发帖
与我相关
我的任务
社区描述
昇思MindSpore是一款开源的AI框架,旨在实现易开发、高效执行、全场景覆盖三大目标,这里是昇思MindSpore官方CSDN社区,可了解最新进展,也欢迎大家体验并分享经验!
深度学习人工智能机器学习 企业社区 广东省·深圳市
社区管理员
  • 昇思MindSpore
  • skytier
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎来到昇思MindSpore社区!

在这里您可以获取昇思MindSpore的技术分享和最新消息,也非常欢迎各位分享个人使用经验

无论是AI小白还是领域专家,我们都欢迎加入社区!一起成长!


【更多渠道】

试试用AI创作助手写篇文章吧