low-light系列:Lightening Network for Low-light Image Enhancement

前言

文章下载链接在后面
这是一篇顶刊TIP2020的文章,重点在于:

  • 文章将暗光增强任务视为一个求residual(残差)的任务
  • LBP模块的提出,借用了SR(超分辨率)任务中的back-projection思想
  • 可调亮度的参数γ
  • 没有采用常用的L1、L2作为loss,而是采用SSIM loss 与TV smooth loss
  • 暗光增强任务需要融合global和local不同层级的特征才能很好地完成任务

residual的假设

Y = X + γ P ( X ) − n Y = X + \gamma P(X)-n Y=X+γP(X)n
其中将 P ( ) P() P()是提亮操作,X是原图,γ是参数,减去n是噪声,Y是期望的图像。
简单的,即原图X加上提亮操作后的残差再减去噪声,即成为期望的提亮图像。在论文中,认为低光图像和正常光照图像差距体现在像素value上的不同,即低光数值低,正常光数值高。论文中有更加详细的解释。

DLN网络结构

low-light系列:Lightening Network for Low-light Image Enhancement_第1张图片
网络结构如图,输入低光图像,经过一系列模块后计算出残差,再加上最开始的原图X,得到期望的图像Y。

LBP

BP是back-projection,是来自于超分领域的思想,作者将其成功应用在暗光增强领域,成为lighten BP,即LBP

low-light系列:Lightening Network for Low-light Image Enhancement_第2张图片
这里需要结合公式,以及这张图进行理解:

Y ^ = λ 2 L 1 ( X ) + L 2 ( D ( L 1 ( X ) ) − λ 1 X ) \hat Y = \lambda_{2}L_1(X) + L_2(D(L_1(X))-\lambda_{1}X) Y^=λ2L1(X)+L2(D(L1(X))λ1X)
参数在图中都有展示,

  • 首先是L1,提亮操作,第一次将原图X提亮,得到 Y ~ \tilde Y Y~
  • 再经过D,将其变暗得到 X ~ \tilde X X~
  • 作者认为,提亮又变暗的 X ~ \tilde X X~应该是和原图X一模一样才对(类似cycle gan),但是实际上肯定是有差距的,而这个差距就是低光残差 R ~ L L \tilde R_{LL} R~LL
  • 再进行一次提亮操作L2,这时候的结果与之前 Y ~ \tilde Y Y~相减为正常光残差 R ~ N L \tilde R_{NL} R~NL
  • 用公式来展示的话即上面的公式,λ为参数,得到最终的期望图像。

Feature Aggregation(FA)

low-light系列:Lightening Network for Low-light Image Enhancement_第3张图片
图中的FA是上面网络结构中右侧FA作为展示,有三个输入。

  • 首先将三个不同输入cat(相同scale),经过卷积和全局池化得到squeezed vector,这时候的向量代表了各个不同通道的显著特征,
  • 经过两个全连接(1个是16/C,一个是C)得到重新分配过后的weight vector,然后expand变回原始大小,
  • 进行element-wise 相乘,再使用conv kernel size为1的卷积降维为WHC
  • 整个过程类似SENet

如此,将图像中的不同层级的最显著特征提取出来并融合

Loss

本文中并没有如其他暗光增强任务,使用L1 loss和L2 loss,而是直接使用了SSIM loss和TV smooth loss:
在这里插入图片描述
在这里插入图片描述
loss详细介绍请参考论文。

消融实验

作者做了使用不同loss、使用残差和不适用残差、使用不同数量LBP模块、是否使用FA模块的实验,来证明本文方法的优势。
具体参见论文。

视觉效果对比

low-light系列:Lightening Network for Low-light Image Enhancement_第4张图片

文章下载链接:www.sci-hub.ren/10.1109/TIP.2020.3008396

你可能感兴趣的:(PyTorch,low-light,images,enhancement,python,深度学习,计算机视觉,人工智能,pytorch,tensorflow)