万字长文低光图像处理方案

技术讨论 Admin ⋅ 于 1个月前 ⋅ 219 阅读

来源:AIWalker@微信公众号

背景

低光图像是夜晚拍照时极为常见的一种现象。不充分的光照会极大的降低图像的视觉质量,细节损失、低对比度不仅导致令人讨厌的主观感受,同时会影响诸多计算机视觉系统的性能(这些系统往往为正常光照图像而设计)。

导致低光图像的原因有很多,如低光环境、低端拍摄设备以及不合理的拍照设备的配置等。为尽可能的恢复图像的细节信息,改善图像质量,我们急需一种有效的低光图像增强方案。

在过去的十年里,许多研究人员对低光图像增强展开了研究并提出了多种技术。如Histogram Equalization(HE)及其改进;Retinex理论及其改进等等。

本文主要关注深度学习方法在该领域的一些进展,将简单汇总与介绍近几年相关的深度学习方法以及相应的数据集、相关技术的评价标准等等。

数据

这里汇总了一些公开论文中用到的低光图像数据,供模型训练与测试参考。 在低光图像增强领域中,目前最常用的数据集为SID与LOL这两种数据集。这两个数据集分别代表了低光图像增强领域的两个场景。

SID是极暗场景下的数据集,它的输入为未经任何处理的RAW格式数据,未经ISP处理;而LOL则是类似夜景这种有一定光照条件下的低光数据集,它的输入与输出均为PNG格式的数据,即经过了ISP处理。

Table.1 与低光图像增强相关的数据集

方法

上表中汇总了最近几年深度学习在低光图像增强领域中的几种方法。下面将分别针对这些方法进行简单的总结与介绍。

0. Retinex理论

经典的Retinex理论模拟了人眼颜色感知,它假设观测图像可以被分解为两种成分:ReflectanceIllumination。假设$S$表示观测图像,它可以被分解为:

$$
S = R \circ I \
$$

其中,$R$表示反射图,$I$表示亮度图, $\circ$表示点乘操作。反射图描述了观测目标的固有属性,它可以被视作常量且与光照无关;亮度图表示了目标的不同光照。低光图像存在暗光与不平衡的亮度分布。

在传统方法中,Single Scale Retinex, SSR通过高斯滤波为亮度图添加平滑性作为最早期的尝试;MSR, MSRCR通过添加多尺度高斯滤波与颜色还原对SSR进行了拓展。关于更多相关技术可以参考:Retinex Image Processing,https://dragon.larc.nasa.gov/retinex/.

在深度学习方法中,已有诸多方法尝试将Retinex理论与深度网络相结合,在降低学习难度的同时提升算法性能,如RetinexNet

1. GLADNet

project,https://daooshee.github.io/fgworkshop18Gladnet/,
code,https://github.com/weichen582/GLADNet)

GLADNet的核心:(1)为低光输入计算全局亮度估计;(2)基于前述所得与原始输入调整亮度。它将输入图像缩放到特定尺寸并送入到编解码网络中生成关于亮度的全局先验信息,基于全局先验信息与原始输入图像,采用卷积神经网络进行细节还原。在训练过程中,作者采用RAW图像合成的数据进行训练。通过大量实验验证了所提方法的有效性。

上图给出GLADNet的框架图,从中可以看出,该网络由两部分构成:

  • 全局亮度先验估计
    在该部分中,作者采用了一个编解码网络架构用于估计全局亮度信息。注:为估计亮度信息,它需要将输入图像下采样到固定尺寸,这样可以保证该架构的底层感受野可以包含整个图像。
    该子网络包含三个步骤:(1) 缩放输入特征到特定分辨率$96 \times 96$;(2) 采用编解码架构估计全局亮度信息;(3)缩放到原始分辨率。
  • 细节还原
    全局亮度估计过程中由于尺度缩放问题会导致细节损失,为弥补该问题,作者设计了该细节还原子网络。
    相比编解码网络输出,原始输入图像应当包含更多的细节信息,因而可以为细节还原提供更多信息。该子网络以全局亮度信息+原始输入图像作为输入(这样可以保证了原始信息与亮度估计互补并传递到后续网络),该子网络另外包含三个卷积操作。
  • 作者在训练过程中采用RAW图像进行训练数据的合成,采用加权$L_1$损失函数进行训练。加权$L1$损失函数定义如下:
    $Loss(X, Y) = \frac{1}{N} \sum
    {i=1}^{N} \sum_{c={r,g,b}} \lambda_c | F(X_i, \theta)^c - Y_i^c |_1 \$ 其中,$\lambda_r = 0.29891, \lambda_g = 0.58661, \lambda_b = 0.11448$,这种参数设置可以保证颜色平衡问题,提升网络的鲁棒性。

2. RetinexNet

RetinexNet,https://daooshee.github.io/BMVC2018website/
paper,https://arxiv.org/abs/1808.04560
BMVC2018,https://github.com/daooshee/BMVC2018website/blob/master/chen_bmvc18.pdf
poster,https://github.com/daooshee/BMVC2018website/blob/master/Chen_BMVC18Poster.pdf
ppt,https://www.icst.pku.edu.cn/struct/Seminar/Talk_BMVC18_Chenwei/index.html
code,https://github.com/weichen582/RetinexNet**

Retinex是一种有效的低光图像增强方法。它假设观测图像可以被分解为ReflectanceIllumination。现有的基于Retinex的模型需要精心设计人工约束条件与参数用于求解该病态分解问题(这限制了模型在不同场景应用中的泛化性能)。
作者收集了一批低亮度图像对(含低光与正常光图像)并提出一种RetinexNet架构在该数据集上进行训练学习。RetinexNet包含一个DecomNet用于图像分解分解以及一个EnhanceNet用于亮度调整。在训练过程中,DeconmNet并没有关于ReflectanceIllumination的真值。因而,该网络学习了这样的关键约束:图像对的反射一致性与亮度的平滑一致性。基于该分解方案,EnhanceNet用来进行亮度增强,同时需要对Reflectance进行降噪处理。该RetinexNet可以通过端到端的方式进行训练。
大量实验表明:RetinexNet不仅取得极好的视觉效果,同时可以提供一种良好的图像分解表达。

RetinexNet是一种数据驱动的Retinex分解方法,它集成图像分解与增强操作于一体。

  • 首先,子网络DecomNet用于将观测图像划分为亮度独立的反射图与结构平滑的亮度图;
    DecomNet网络存在两个约束条件:(1) 低光与正常光具有相同的反射图;(2) 亮度图应该是平滑的且保留有主要结构(可通过结构相关的全变差损失约束学习)。
    在训练过程中,它以成对图像作为输入(用于约束反射一致性);在测试阶段仅需要输入低光图像。
  • 然后,子网络EnhanceNet通过多尺度Concat操作调整亮度图以保证(1)在大范围内保持一致;(2)小范围内进行裁剪局部分布。
    它主要作用是提升亮度图的亮度,它是一种类似UNet的编解码架构。
    由于噪声往往存在于暗区,且易被增强过程放大,因而采用在反射图上进行降噪。
  • 最后,在重建阶段通过组合调整后的亮度图与反射图计算输出图像。
  • 注:为训练这样一个网络,作者利用RAW数据集构建了一个包含真实与合成图像的低光数据集。

损失函数相关

RetinexNet用到的损失函数包含三项:重建损失$L{recon}$、不变反射损失$L{ir}$以及亮度平滑损失$L_{is}$。总体损失函数定义如下:

$$
L = L{recon} + \lambda{ir} L{ir} + \lambda{is} L_{is} \
$$

其中,$\lambda{ir}, \lambda{is}$分别表示用于均衡不变反射损失与亮度平滑损失的系数,作者的参数设置为$\lambda{ir}=0.001, \lambda{is}=0.1$。

DecomNet部分用到的重建损失函数$L_{recon}$定义如下:

$$
L{recon} = \sum{i=low, normal} \sum{j=low, normal} \lambda{ij} | R_i \circ I_j - S_j |1 \ \lambda{ij} = 0.001, \text{if } i \ne j, \text{else }1 \
$$

EnhanceNet部分用到的重建损失函数$L_{recon}$定义如下:

$$
L{recon} = | R{low} \circ \hat{I} - S_{normal} |_1 \
$$

注:上述两种重建损失区别在于:采用$R_{low}$的梯度图对$\hat{I}$进行了加权

用于约束反射一致性的不变反射损失$L_{ir}$定义如下:

$$
L{ir} = | R{low} - R_{normal} |_1 \
$$

用于约束亮度平滑的亮度平滑损失$L_{is}$在Total Variation Loss基础上进行改进得到,定义如下:

$$
L{is} = \sum{i=low, normal} | \nabla I_i \circ exp(-\lambda_g \nabla R_i) | \
$$

其中,$\nabla$表示梯度操作(包含$\nabla_h, \nabla_v$),$\lambda_g$表示结构强度平衡系数,$exp(-\lambda_g \nabla Ri)$降低了图像梯度剧烈区域的平滑约束性,作者的参数设置:$\lambda{g} = 10$。

更多关于损失函数的介绍,建议查看论文介绍。

3. Kindling the Darkness: A Practical Low Light Image Enhancer

arxiv paper,https://arxiv.org/abs/1905.04161

低光条件下所拍摄的图像存在严重的质量问题。除了低光外,噪声、颜色失真等同样限制了图像的质量。换句话说,简单的调节的暗区的亮度不可避免的放大暗区的噪声和伪影等。受Retinex理论启发,作者构建了一种简单有效的网络Kindling the Darkness, KinD网络,它将图像分解为两部分:亮度部分用于调整图像亮度;反射部分用于移除降质。经过上述处理,原始空间被分解为两个更小的子空间,以期具有更好的泛化性能。需要注意的是:该网络通过不同曝光图像对进行训练,而非真实的反射与亮度信息。通过通过实验验证了所提kinD架构的优异性能,同时在2080TiGPU下,可以以不超过50ms的速度处理VGA分辨率的图像。

从方法流程图来看:KinDRetinexNet如出一辙,两者整体思想基本一致,尽在损失函数设计方面存在差异。故而,这里仅对损失函数进行描述介绍。

损失函数

从上图可以看出,KinD的损失函数主要由三部分损失构成,它们分别是层分解部分损失、反射重建部分损失以及亮度调整部分损失。

层分解部分损失定义如下:

$$
L^{LD} = L{rec}^{LD} + 0.01L{rs}^{LD} + 0.08L{is}^{LD} + 0.1L{mc}^{LD} \
$$

其中,$L_{rs}^{LD}=| R_l - R_h |2^2$表示反射相似性损失(Reflectance Similarity),即短曝光与长曝光图形的反射图应该是相同的;$L{is}^{LD} = | \frac{\nabla L_l}{max(|\nabla I_l|, \epsilon)} |_1 + | \frac{\nabla L_h}{max(|\nabla I_h|, \epsilon)} |1$表示亮度平滑损失约束(Illumination Smoothness),它度量了亮度图与输入图像之间的相对结构,边缘区域惩罚较小,平滑区域惩罚较大;$L{mc}^{LD} = | M \circ exp(-c \cdot M) |_1, M=|\nabla L_l| + |\nabla Lh|$表示相互一致性约束(Mutual Consistency),它意味着强边缘得以保留,弱边缘被抑制;$L{rec}^{LD}=| I_l - R_l \circ L_l |_1 + |I_h - R_h \circ L_h |_1$表示重建损失(Reconstruction Error)。

反射部分损失定义如下:

$$
L^{RR} = |\hat{R} - R_h |_2^2 - SSIM(\hat{R} - R_h) + |\nabla \hat{R} - \nabla R_h |_2^2 \
$$

亮度调整部分损失定义如下:

$$
L^{IA} = |\hat{L} - L_t |_2^2 + | |\nabla \hat{L}| - |\nabla L_t||_2^2 \
$$

以上简单描述了网络训练过程中的相关损失函数,更多详细信息建议参考原文。

4. MSRNet Low Light Image Enhancement using Deep Convolutional Networks

**arxiv paper,https://arxiv.org/abs/1711.02488

低光图像存在低对比度问题,导致后续视觉任务的难度提升。基于Retinex理论与CNN,作者提出一种低光增强方法。作者表示多尺度Retinex等价于带有不同高斯卷积核的CNN;首次启发,作者考虑采用端到端的方式学习多尺度CNN(MSRNet)。不同于已有方法,作者将低光增强视作机器学习问题,该模型的所有参数通过反向传播方式学习得到,而传统方法则需要人工设置相关参数。最后,作者通过大量图像已验证了所提方法的有效性。

上图给出了作者所提MSRNet,它采用低光图像作为输入,通过监督学习方式训练网络参数。它包含三个部分:多尺度对数变换、差分卷积以及颜色还原。总体过程可以描述为:$f(x) = f_3(f_2(f_1(X)))$。

  • 多尺度对数变换$f_1(X)$以低光图像作为输入,得到相同尺寸的输出$X_1$。低光图像$X$通过几个不同的对数变化进行增强,公式描述为:
    $Mj = log{v_j + 1}(1 + v_j \cdot X), j = 1, 2, \cdots, n \$ 其中,$M_j$表示对数基$v_j + 1$下的不同尺度的输出,n表示对数变换数。下一步则将多尺度输出结果通过Concat方式拼接得到$M$,并将其送入卷积与ReLU,描述如下:
    $M = [M_1, M_2, \cdots, M_n] \ X1 = max(0, M * W{-1} + b_{-1}) * W_0 + b0 \$ 这里,$W{-1}, b_{-1}$表示将$3n$输入Shrinks到3通道的卷积变换参数;$W_0, b_0$表示更进一步提升非线性表达能力的卷积核参数。该模块的功能主要是通过加权组合多尺度对数变换得到更好的初始图像以加速网络收敛。
  • 差分卷积$f_2 $以$X_1$作为输入,计算同尺寸的输出$X_2$。公式描述如下:
    $H_0 = X_1 \ Hm = max(0, H{m-1} W_m + b_m), m = 1, 2, \cdots, K \$ $H_1, H_2, \cdots, H_K$表示不同尺度平滑结果,将他们通过Concat方式拼接得到$H$,并执行后续操作:
    $H = [H_1, H_2, \cdots, HK] \ H{K+1} = H
    W{K+1} + b{K+1} \$ 类似MSR,$f_2$的输出计算为$X_2 = f_2(X_1) = X1 - H{K+1}$。
  • 颜色还原$f_3$以$X_2$作为输入,通过卷积执行色彩还原:$\hat{Y} = f_3(X_2) = X2 * W{K+2} + b_{K+2}$.

网络训练过程中的损失函数定义如下:

$$
L = \frac{1}{N} \sum_{i=1}^{N} |f(X_i) - Y_i |F^2 + \lambda \sum{i=-1}^{K+2} |W_i |_F^2 \
$$

5. A Pipeline Neural Network for Low Light Image Enhancement

paper,https://www.researchgate.net/publication/330299349_A_Pipeline_Neural_Network_For_Low-Light_Image_Enhancement

受多尺度Retinex(MSR)原理启发,基于全卷积网络与离散小波变换(DWT),作者提出一种端到端的低光图像增强框架。首先,作者说明MSR可以视为一种CNN架构,集成DWT可以改进MSR所生成图像的质量;然后,作者提出具有去噪和增强的框架;最后,醉着在合成数据与公开数据上对所提框架进行了评估。

上图给出作者所提框架在训练与测试阶段的流程图,该网络采用$l_1$损失进行参数训练学习,同时去噪与增强模块交替训练学习。鉴于该论文参考意义不大,故略,更多细节见原文。

6. LLCNN A Convolutional Neural Network for Low Light Image Enhancement

paper,https://ieeexplore.ieee.org/document/8305143

作者提出采用CNN进行低光图像增强。作者设计了一种特殊的模块处理多尺度特征同时避免了梯度小时问题。为尽可能保留图像的纹理信息,作者采用SSIM损失进行模型训练。基于该方法,低光图像的对比度可以自适应增强。作者通过实验验证了所提方法的有效性。

上图给出了作者所设计的网络架构图。为避免梯度消失问题,作者参考Inception, Residual模块设计了一种新颖的卷积模块,如下图所示。

总而言之,作者所设计的网络架构可以描述为:采用一个卷积预处理图像得到均匀输入,一个卷积用于生成增强图像,其他特殊模块插入到前面两个卷积中间。

7. DSLR Quality Photos on Mobile Devices with Deep Convolutional Networks

arxiv paper,https://arxiv.org/pdf/1704.02470.pdf
project,https://people.ee.ethz.ch/~ihnatova/%23title
code,https://github.com/aiff22/DPED

尽管智能手机内置相机具有越来越好的拍照效果,但是物理约束(如传感器大小、镜头以及特定硬件的缺失)仍阻碍更高质量图像的获取。作者提出一种端到端的方式将普通光照图像变换为高质量视觉效果图像。作者采用残差卷积网络,它可以提升图像的颜色与细节锐利度。由于标准的MSE损失并不适合度量图像的感知质量,作者引入一种混合损失函数(组合纹理、颜色以及上下文)。作者同时构建了一个DPED数据集,通过该数据集进行网络训练并验证了所提方法的有效性。

给定低质图像$I_s$,该增强人物的目标是通过DSLR相机生成$I_t$。假设残差卷积网络为$F_W$,给定训练数据${I_s^j, It^j}{j=1}^N$,该优化问题可以描述为:

$$
W^{*} = argmin{W} \frac{1}{N} \sum{j=1}^{N} L(F_W(I_s^k), I_t^j) \
$$

其中,$L(\cdot, \cdot)$为本文的关键所在,它是多种损失函数的组合,定义如下:

$$
L{total} = L{content} + 0.4 \cdot L{texture} + 0.1 \cdot L{color} + 400 \cdot L_{tv} \
$$

  • 颜色损失$L{color}$用于度量增强图像与目标图像之间的颜色差异性(注,为避免高频细节影响,在计算之前进行高斯模糊),定义如下:
    $L
    {color}(X,Y) = | X_b - Y_b |_2^2 \ Xb(i,j)=\sum{k,l} X(i+k, j+l) \cdot G(k,l) \ G(k,l) = A exp(-\frac{(k-u_x)^2}{2\sigma_x} -\frac{(l-u_y)^2}{2\sigmay} \$ 其中,$A=0.053, u{x}=uy=0, \sigma{x}=\sigma_y=3$。该损失函数主要用于评估图像的亮度、对比度以及颜色的差异性而忽略掉纹理与内容的差异。
  • 纹理损失$L{texture}$用于度量图像之间的视觉相似性,通过GAN方式训练调整生成图像的纹理质量,定义如下:
    $L
    {texture}=-\sum_i log D(F_w(I_s), I_t) \$ 其中,$F_w, D$分别表示生成网络与对抗网络。注:该损失具有平移不变性。
  • 内容损失$L_{content}$基于预训练VGG19网络的激活特征图进行统计分析,它可以确保图像的语义特征不变,令$\phij()$表示VGG19的第j层激活输出,该损失定义如下:
    $L
    {content} = \frac{1}{C_j H_J W_j} |\phi_j (F_w(Is)) - \phi_j(I_t) | \$
  • 全变差损失$L{tv}$用于确保生成图像的空域平滑性,定义如下:
    $L
    {tv} = \frac{1}{CHW} | \nabla F_w(I_s) + \nabla F_w(I_s)| \$

8. Learning to see in the dark

arxiv paper,https://arxiv.org/abs/1805.01934
CVPR2018,https://cchen156.web.engr.illinois.edu/paper/18CVPR_SID.pdf
code,https://github.com/cchen156/Learning-to-See-in-the-Dark
demo,https://www.youtube.com/watch%3Fv%3DqWKUFK7MWvg%26feature%3Dyoutu.be

由于低光子、低SNR等原因导致低光成像极具挑战。短曝光图像存在高噪声,长曝光会引入模糊不切实际。为解决低光成像存在的问题,作者构建了一个低曝光+长曝光RAW数据集并开发一个端到端的全卷积低光图像处理框架。该框架直接以RAW数据作为输入,经全卷积操作后输出RGB图像。

数据集

作者收集一个新的低光RAW数据集,它包含5094对短曝光-长曝光图像对,同时包含室内与室外两种不同的场景。室外场景的亮度变化范围$(0.25 lux, 5lux)$,室内场景的亮度变化范围$(0.03lux, 0.3lux)$,短曝光时长为$(1/30s, 1/10s)$,对应的长曝光时长为$(10s, 30s)$。

作者采用了索尼$\alpha7S II$与富士胶片$\text{X-T2}$分别采集数据,它们具有不同的传感器类型。索引传感器类型为Bayer模式,图像分辨率$4240 \times 2832$;富士胶片传感器类型为APS-C X-Trans传感器,图像分辨率$6000 \times 4000$。更多关注的描述可以参考原文。

方法

作者提出采用全卷积网络直接采用RAW数据作为输入,经卷积计算后直接输出RGB结果。对于Bayer形式数据,需要事先将其打包为多通道数据并进行预处理(可参考上图流程)。在全卷积网络架构方面,作者主要参考了CANUNet,默认架构为UNet。除了RAW数据外,另一个输入为参数为放大比例系数,它用于控制输出图像的零度。下图给出了不同放大比例系数的输出结果对比。

在训练过程中,作者采用$L_1$损失从头开始训练整个网络,放大系数设置为输入与真值之间的曝光差异比例。下面列出了所提方法在所构建数据集上的部分效果。

9. Learning Digital Camera Pipeline for Extreme Low Light Imaging

arxiv paper,https://arxiv.org/abs/1904.05939

在低光条件下 ,传统的ISP处理会导致生成的图像极暗(过少的光子)且高噪(低信噪比)。作者提出一种数据驱动的方法用于学习低曝光与正常曝光之间的一种映射关系,从而极大的提高低光图像的视觉效果。作者提出一种新的损失函数以促进深度网络可以学习短曝光图像到正常曝光图像之间的ISP流程,即lowRAW->sRGB这样的一个过程。实验结果表明:相比已有网络中采用的像素级损失,该方法可以取得更优的视觉效果。

损失函数

该文的主要创新点在于损失函数的设计,故而这里对文中所提到的损失函数进行简单汇总分析。文中所设计的多准则损失函数定义如下:

$$
\theta^{*} = arg min{\theta} E{x, y}[\sum_k \alpha_k L_k(g^k(x;\phi), h^k(y; \Phi))] \
$$

其中,$Lk \in {L{pix}, L{feat}}$表示每个独立的损失函数,$g^k(\cdot), h^k(\cdot)$分别表示作用于输入与输出的函数,随损失函数的类型变化而变化。$L{pix}$表示像素级的损失函数,如$l1$损失与$SSIM$损失;$L{feat}$表示更高层的感知损失。

$L_{pix}$直接在网络输出与真值之间计算误差信息,此时有$g^{pix} = f(x;\theta)=\hat{y}, h^{pix} = 1(y)$,损失函数定义为:

$$
L_{pix} = \beta l1(\hat{y}, y) + (1 - \beta) L{MS-SSIM}(\hat{y}, y) \ l1(\hat{y}, y) = \frac{1}{N} \sum{p=1}^{N} |\hat{y}_p - yp| \ L{MS-SSIM}(\hat{y}, y) = 1 - \frac{1}{N} \sum_{p}^{N} \text{MS-SSIM}(\hat{y}_p, y_p) \ \text{MS-SSIM} = [l_M(\hat{y}, y)]^{\gammam} \cdot \prod{i=1}^{M}[cs_i(\hat{y}, y)]^{\etai} \ \text{SSIM}(\hat{y}, y) = \frac{2 \mu{\hat{y}} \mu_y + C1}{\mu{\hat{y}}^2 + \mu_y^2 + C1} \cdot \frac{2 \sigma{\hat{y}y} + C2}{\sigma{\hat{y}}^2 + \sigma_y^2 + C_2}=l(\hat{y}, y) \cdot cs(\hat{y}, y) \
$$

其中,$\beta \in [0, 1]$用于均衡两种损失,可通过Grid Search方式在验证集上进行估计得到; $M$表示尺度数,$\gamma_M, \eta_i$用于调整每项损失的相对重要性,在实验过程中所有参数设置为:$\gamma_m=\eta_i=1$。

$L_{feat}$用于在特征层面衡量两个图像之间的相似性,有助于保持颜色与色彩一致性,此时$g^{feat} = h^{feat} = v^l(\cdot)$,其中$v^l(\cdot)$表示神经网络第$l$层的激活特征,损失函数定义如下:

$$
L_{feat}(\hat{y}, y) = \frac{1}{N} | v^l(\hat{y}, \phi) - v^l(y; \phi) |_2^2 \
$$

作者实验过程中采用在ImageNet上预训练的VGG16(注:其他AlexNet, ResNet, GoogLeNet亦可)提取特征并进行相似性比较。

网络架构

从上图可以看出,作者设计的网络架构包含两个子网络:图像还原子网络与感知损失子网络。

图像还原子网络采用了***带跳过连接的UNet架构***(更多细节参考原文),它具有以下几个优点:

  • 在图像还原与分割任务中,它具有极优的性能;
  • 它可以处理任意分辨率图像
  • 跳过连接确保了上下文信息的自适应传递,保留了高分辨率细节信息

感知损失子网络采用VGG16的前两个卷积提取特征,这两个特征可以精确的编码图像的风格与内容感知信息。

10. End to End Denoising of Dark Burst Images using Recurrent Fully Convolutionaly Networks

arxiv paper,https://arxiv.org/abs/1904.07483

作者提出一种递归全卷积网络(Recurrent Fully Convolutional Network, RFCN)用于处理极暗场景下的降噪并提升亮度的问题。该方法以RAW数据作为输入,直接生成RGB数据,它可以同时进行降噪、色彩校正以及增强等任务。该方法取得SOTA性能且具有极好的泛化性能(一种类型相加训练模型不经finetune仍可很好的处理不同相机得到的图片)。

上图给出了作者提出低光图像降噪增强流程图,它的核心在RFCN模块,针对单帧降噪与多帧降噪,其处理流程存在些微差异,见下图。

损失函数定义如下:

$$
E = \sum_t^F |I_t - f_s(N^t, \theta_s)| + |I^t - f_m^t([N^t], \theta_m)| \
$$

11. Deep Burst Noising

arxiv paper,https://arxiv.org/abs/1712.05790
code,https://github.com/Ourshanabi/Burst-denoising

噪声在低光图像采集过程中不可避免的(由于手机设备有限的孔径、较小的传感器,这类问题会进一步恶化)。一种减缓低光场景噪声的方法是提升曝光时间,但是这会导致两个问题:(1) 亮区会超出传感器范围;(2)会相机或场景运动导致模糊。另一种方法是一次获取多帧短曝光图像协同降噪。本文基于后一种方案,采用RFCN架构处理低光降噪问题。该架构可以处理任意长度序列降噪并取得了SOTA性能。

本文目标有以下几点:

  • 可以处理单帧降噪问题
  • 可以拓展到任意帧
  • 可以对整个序列进行降噪
  • 对运动鲁棒
  • 具有时序相关性
  • 可以推广到其他图像还原任务中

本文所涉及方案流程如下:

  • 构建单应性矩阵解决对齐问题
  • 采用FCN独立的为每帧图像降噪
  • 拓展FCN为并行递归网络,即集成多帧信息降噪

网络架构

  • 单帧降噪问题可以视为这样的优化问题:$E_{SFD} = |I - f_s(N, \theta_s)|$。这里采用FCN构建映射函数,它包含$L=8$个含$C=64$通道输出,卷积核为$3 \times 3$的卷积层。
  • 多帧降噪问题可以视为这样的优化问题:$E=\sumt^F E{SFD}^t + E_{MFD}^t = \sum_t^F |I^t - f_s(N^t, \theta_s)| + |I^t - f_m^t({N^t}, \theta_m)|$.
    对于多帧问题,作者采用RNN+FCN架构进行处理。下图给出了作者所提出的多帧降噪架构。

Note: 10 与11两种方法基本相同,区别仅在于处理数据的类型, 10用于处理RAW数据降噪,11用于处理RGB数据降噪,其他无甚区别。

12. DeepISP Toward Learning an End to End Image Processing Pipeline

project,https://link.zhihu.com/?target=https%3A//elischwartz.github.io/DeepISP/
paper,https://arxiv.org/pdf/1801.06724.pdf

作者提出一种端到端的用于模拟ISP流程的深度神经网络DeepISP。它学习了从低光RAW到最终视觉效果良好RGB的映射,集成去马赛克、降噪以及颜色校正、图像调整等功能。在专用数据集(由三星S7只能手机采集的低光RAW与正常光RGB数据对)上对所提框架进行了训练与测试。所提方法在联合去马赛克降噪方面取得了SOTA性能。相比传统ISP方案,该方案具有更优的视觉效果。

上图给出了DeepISP架构图,它包含两个部分:底层特征处理(局部修正)与高层特征处理(全局校正)。

  • Low Level Stage.
    该部分包含$N_{ll}$个模块,每个模块执行$3 \times 3$的卷积操作,它的输入与输出均为$M \times N \times 64$。注:输入到网络中的为去马赛克后并进行双线性插值的RGB图像。
    在这64个通道中,其中61个通道为标准的前向卷积+ReLU,另外三个通道则采用残差架构+tanh
  • High Level Stage
    该部分包含$N_{hl}$个卷积层($3\times 3, stride=2$),它可以获得更大的感受野降低计算损失。这些卷积后接全局均值池化得到一个特征向量并通过全连接层得到变换参数W
  • Output
    在得到变换矩阵W后,将其作用于底层特征记得得到最终的输出。这里的变换公式定义如下:
    $O = W \cdot triu([r, g, b, 1]^T \cdot [r, g, b, 1]) \$ 其中, $W \in R^{3\times 10}$,$triu(\cdot)$表示上三角矩阵向量化操作。经此操作即可得到每个像素的输出$O \in R^{3\times 1}$。
    采用这种处理的原因:(1)线性回归不适用于两者之间的变换;(2)具有更好的视觉效果。

在训练过程中,损失函数在Lab域进行计算,在Lab域三个通道分别计算$l_1$损失,尽在亮度通道计算MS-SSIM损失。整体损失定义如下:

$$
Loss(\hat{I}, I) = (1 - \alpha)|Lab(\hat{I}) - Lab(I) |_1 + \alpha \text{MS-SSIM}(L(\hat{I}), L(I)) \
$$

13. Underexposed Photo Enhancement using Deep Illumination Estimation

paper,https://jiaya.me/papers/photoenhance_cvpr19.pdf

这是腾讯优图贾佳亚团队发表于CVPR2019用于低光图像增强的一种基于Retinex的深度网络方法。
本文提出一种欠曝光图像增强方法。不用于已有直接学习Image2Image映射的方法,我们在网络中引入了中间亮度对输入与期望增强结果构建相关性,这种处理方式提升了网络处理复杂图相对的能力。基于该模型,我们构建了一种集成亮度约束与先验的损失函数,同时准备了3000对欠曝光图像用于网络训练。该方法可以为图像重建清晰的细节、明显的对比度以及更为自然地颜色。基于所构建数据集与MIT-Adobe FiveK数据集的实验证实:该网络可以有效处理不同挑战难度的图像。

该方法基于Retinex而进行设计,假设反射分量$\hat{I}$是正常曝光图像,I为欠曝光图像,S为亮度图像,即$I = S * \hat{I}$。此时需要采用深度网络估计亮度图像S。作者将亮度图像S视为三通道数据而非单通道数据以提升其在色彩增强方面的能力,尤其对于跨颜色通道的非线性能力。

网络架构

上图给出了作者所涉及的网络架构图,它具有两个优点:亮度图的有效学习与整体网络的高效计算。

  • 有效学习
    欠曝光图像增强需要调整局部(对比度、锐化细节、阴影、高光等)与全局(颜色分布、平均亮度与场景类别等)特征。因而,作者考虑从编码网络中提取局部与全局特征,同时设计了一种集成亮度平滑先验、重建损失、颜色损失的损失函数。这些策略有确保网络可以有效的学习到亮度图像S。
  • 高效计算
    为计算计算,作者采用低分辨率局部与全局特征学习亮度图像,然后采用Bilateral Grid Upsampling方式进行上采样。因此该网络的大部分计算量均位于低分辨率区域,进而确保高分辨率图像处理的实时性。

损失函数

作者所设计的损失函数定义如下:

$$
L = \sum_{i=1}^{N} \omega_r L_r^i + \omega_s L_s^i + \omega_c L_c^i \
$$

其中,$\omega_r=1, \omega_s=2, \omega_c=1$。

  • 重建损失$L_r^i = | I_i - S * \hat{I}_i|^2, s.t. (I_i)_c \le (S)_c \le 1, \forall c \in {r,g,b}$。
  • 平滑损失$L_s^i = \sum_p \sumc \omega{x,c}^p (\nabla_x S_p)c^2 + \omega{y,c}^p(\nabla_y S_p)c^2, \omega{x,c}^p = (|\nabla_x L_i^p|c^{\theta} + \epsilon)^{-1}, \omega{y,c}^p = (|\nabla_y L_i^p|_c^{\theta} + \epsilon)^{-1}$.
    注:$\nabla_x, \nabla_y$表示水平与垂直方向的偏导,$L_i$表示输入图像的对数图像,$\theta=1.2$用于控制图像梯度的敏感度,$\epsilon=0.0001$。该损失函数可以避免过拟合同时提升图像的对比度。
  • 颜色损失$L_c^i = \sum_p \angle((F(I_i))_p, (\hat{I}_i)_p)$。$\angle(,)$用于计算两个颜色向量(RGB三维)的角度。
    使用该损失而非$L_2$的原因:(1) 重建损失已明确度量$L_2$颜色差异;(2)$L_2$只能度量颜色差异而无法颜色向量具有相同方向,进而容易导致明显的颜色偏差。

14. Deep Bilateral Learning for Real Time Image Enhancement

project,https://groups.csail.mit.edu/graphics/hdrnet/
paper,https://arxiv.org/abs/1707.02880
code,https://github.com/google/hdrnet

这是一篇``Google Research发表于SIGGRAPH2017` 用于图像增强的方法。
基于双边网络处理与局部颜色仿射变换,作者提出一种新的深度网路架构用于图像增强。采用图像对训练深度网路学习双边空间下的局部仿射系数,该架构可以学习局部、全局以及内容相关的决策参数以生成期望的图像变换。
在运行时,该网络在低分辨空间学习双边空间内相关仿射参数,然后将这些参数采用保边形式上采样,最后将这些参数作用于全分辨率输入图像得到最终期望的输出。最终该算法可以在手机端以毫秒级处理高分辨率图像,对于1080p分辨率图像可以做到实时处理。

网络架构

该网络的大部分推理均在低分辨率$\hat{I}$上执行,该部分用于预测类似Bilateral Grid的局部仿射变换。图像增强不仅依赖于局部特征,同时还依赖于全局特征。因而低分辨率流进一步划分为两个分支,最后融合两个分支的结果得到最终的仿射变换系数。

在高分辨率分支在全分辨率图像上执行,它占据较少的计算,但对于获取高频信息、保边有很重要作用。为此,作者一如了Slicing节点以参考图为例采用查找表方式构建最终的放射系数图。

最后,将所得到的高分辨率仿射系数作用于原始输入图像即可得到期望的增强图像。

  • 低分辨率分支
    低分辨率输入$\hat{I}$具有固定的尺寸$256 \times 256$,后接一些列卷积操作$(S^i)_{i=1, \cdots, n_S}$以提取底层特征并降低分辨率,然后将所得特征送入非对称分支中:局部特征提取分支与全局特征提取分支。

    • 局部特征提取分支由全卷积$(L^i)_{i=1, \cdots,n_L}$构成,在学习局部特征的同时保持空间分辨率;
    • 全局特征提取分支由卷积与全连接层($(G^i)_{i=1, \cdots, n_G}$)构成以学习一个固定尺寸的全局特征。

全局特征与局部特征融合为特征$F$,最终通过Pointwise Linear Layer生成最终的Bilateral Grid仿射系数$A$。

  • 高分辨率分支
    为尽可能的降低整体的计算复杂度,高分辨率分会应当简单且易于并行。对于全分辨率输入$I$,提取特征$\phi$。它有两个作用:(1) 生成参考图$g$;(2)局部仿射模型的回归变量。
    定义$g$为全分辨率图像的线性仿射变换,$g[x,y] = b + \sum_{c=0}^2 \rho_c(M_c^T * \phi_c[x,y] + b_c^{'})$。其中,$M_c^T$表示$3\times3$的颜色放射矩阵,更多参数见原文。
  • 重建分支
    最终的模型输入可以通过全分辨率特征与仿射参数计算得到:$Oc[x,y] = \hat{A}{n{\phi}+(n{\phi}+1)c} + \sum{c^{'}=0}^{n{\phi}-1} \hat{A}{c^{'}+(n{\phi}+1)c}[x,y] \phi_{c^{'}}[x,y]$.

评价指标

关于图像质量评价的指标可以参考:参考链接:https://github.com/Netflix/vmaf。这里仅仅列举了几种较为常见的评价指标。

方法公式说明MSE$MSE = \frac{\sum \sum (f{i,j} - f{i,j}^{'})^2}{H \times W}$-PSNR$PSNR = 10 log_{10} \frac{(b^{bits} - 1)^2}{MSE}$-SSIM$SSIM(X, Y) = \frac{(2 \mu_X \mu_Y + C1)(2 \sigma{XY}+C_2)}{(\mu_X^2 + \mu_Y^2 + C_1)(\sigma_X^2 + \sigmaY^2 + C2)}$-MS-SSIM$MSSSIM = \sum{scale} SSIM_{scale}$-JND--NIQE-

  1. VMAF 1:https:////mp.weixin.qq.com/s/nLM4_skm8XhakRwdVAtOHg
  2. VMAF 2:https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/79145145

小结

  • 从数据层面可以划分为:低光图像与暗光图像。
    低光图像增强则更多是在RGB层面进行处理;而暗光图像增强则是在RAW层面进行处理。
  • 从网络架构方面可以划分为:基于UNet的架构与基于Retinex的架构。
    UNet架构是一种更具通用性的架构,但其存在不可控性因素,最终生成图像无法进行人工调控;
    Retinex架构则是参考了传统图像增强中的Retinex理论与深度网络技术而提出的方案,其架构可以赋予人工交互因子,可控性稍高。
  • 从损失函数方面可以划分为:单一损失函数($L_1, SSIM$等损失)与组合损失函数($L_1, SSIM$ + 感知损失等)。
    单一损失函数(如$L_1$)往往会导致生成图像的模糊、颜色失真等现象;
    组合损失函数可以在一定程度避免上述现象,但有可能出现纹理失真现象。

微信公众号: 极市平台(ID: extrememart )
每天推送最新CV干货

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!