Dense Scene Information Estimation Network for Dehazing

737 阅读6分钟

CVPR Workshop 2019

Tiantong Guo, Xuelu Li, Venkateswararao Cherukuri, Vishal Monga

作者

章理登 2020-03-23

简介

该文章是NTIRE 2019去雾竞赛中的冠军,其核心之处在于给出了两个新网络At-DH和AtJ-DH并且在 NTIRE2019和NTIRE2018的数据集中得到了较好的指标。该文章是实验性质的论文,没有太多的理论和观点的分析,只以高指标为目标。

Motivation

近些年的使用深度学习方法去雾的文章中的很大部分使用了大气散射模型来去雾

I=Jt+A(1-t) \tag{1}

即估计At,结合有雾图I,得到去雾结果J

由于很难获得真实成对的有雾图I和无雾图J,在训练中经常使用合成数据集。而在真实场景中,雾的浓度可能要比大多数合成的有雾图像中的雾浓度要浓。因此认为NTIRE2019提供的数据集代表了真实场景的去雾。

Model

下图中虚线框内的即为At-DH,整体为AtJ-DH。可以看出,AtJ-DH比At-DH多了一条J解码器的分支。

Table1是编码器的网络结构。其中从Base.0到Dense.4的部分是加载了DenseNet预训练网络的权重。此外,除了从DenseNet加载预训练网络的权重以外,另外设计了两层Trans.4和Res.4。但是我们在Table 1中并未找到Res.4,可能是在画图中遗漏。

Table2是解码器的网络结构。容易看出,解码器的前两行由4个Dense-Trans-Res的循环组成。其中Trans表示转换块,对特征图起重新排序和放大的作用。重新排序是通过1×1完成的,放大是通过上采样完成的。Res表示残差块,它能够合并更多的高频信息。

可以看到Table2的最后一行,表示Refine模块。Refine模块是对Refine.9层的结果进行了不同大小的池化(32×32,16×16,8×8,4×4),在上采样到相同尺寸后再进行了卷积。文章表示这个操作将图像信息以不同比例进行合并并且能够消除去雾中的光晕和伪影。

At-DH

At-DH由一个共享权重的编码器和两个解码器组成,它们都是基于DenseNet的。

可以观察Table2中存在一个X,它代表解码器输出的图像的通道数。在这里Decoder.A输出三通道的大气光A,Decoder.t输出单通道的透射图t。除此之外,Decoder.A和Decoder.t遵循一样的网络结构。在估计A和t后可以通过以下公式获得去雾结果:

\hat{J}=\frac{I-\hat{A}(1-\hat{t})}{\hat{t}} \tag{2}

其中\hat{A}\hat{t}表示Decoder.A和Decoder.t的输出结果。 At-DH的损失函数如下:

\mathcal{L}=\mathcal{L}_{l_2}+\alpha \mathcal{L}_{vgg} \tag{3}

其中\alpha为平衡系数;\mathcal{L}_{l_2}表示为:

\mathcal{L}_{l_2}=||\hat{J}-J||_2^2+||\hat{I}-I||_2^2 \tag{4}

其中\hat{J}由公式(2)计算得到,而\hat{I}由以下公式计算获得:

\hat{I}=J\hat{t}-\hat{A}(1-\hat{t}) \tag{5}

其中J为Gth无雾图。 另外\mathcal{L}_{vgg}可以表达为:

\mathcal{L}_{vgg}=\sum^3_{i=1}||g_i(\hat{J})-g_i(J)||_2^2+\sum^3_{i=1}||g_i(\hat{I})-g_i(I)||^2_2 \tag{6}

其中g_i(\cdot)表示vgg16中的ReLU1_1,ReLU2_2,ReLU3_3层的输出结果。

loss解读:一个已知的有成对的有雾图-无雾图的数据集是有两个确定的图像,一个是有雾图I,另一个是无雾图J。在At-DH网络估计了At的情况下,使用IAt可以计算\hat{J},使用JAt可以计算\hat{I}。得到的\hat{J}\hat{I}可以和IJ计算l_2l_{vgg}损失。

AtJ-DH

为了克服在浓雾中估计A和t的困难,在At-DH的基础上开发了AtJ-DH。J这个分支是用于协助估计A和t的,其并不作为最后的预测结果。其中Decoder.J结构和Decoder.A的一致。

把Decoder.A、Decoder.t和Decoder.J的输出分别表示为:

\hat{A}=f_A(I) \tag{7}
\hat{t}=f_t(I) \tag{8}
J_{direct}=f_J(I) \tag{9}

其中J_{direct}\hat{J}是不同的,J_{direct}是由Decoder.J直接得到的,而\hat{J}是由\hat{A}\hat{t}计算得到的。

在训练的过程中,AtJ-DH通过三种不同的损失函数组合在不同的阶段来训练网络。

  • 第一步,通过最小化以下损失函数训练Decoder.J:
\mathcal{L}_J=||J_{direct}-J||^2_2+\beta\sum^3_{i=1}||g_j(J_{direct})-g_i(J)||_2^2  \tag{10}

第一项为普通的l_2损失,第二项为类似于公式(6)的VGG损失。

  • 第二步,通过最小化以下损失函数训练Decoder.A和Decoder.t:
\mathcal{L}_{At}=||\hat{J}-J||_2^2+\gamma||\hat{I}-I||^2_2+\kappa\sum_{i=1}^3||g_i(\hat{J})-g_i(J)||^2_2+\kappa\sum_{i=1}^3||g_i(\hat{I})-g_i(I)||^2_2 \tag{11}

即和At-DH的损失函数一样。

  • 第三步,通过最小化以下损失函数联合训练Decoder.A、Decoder.t和Decoder.J:
\mathcal{L}_{AtJ}=||J_{direct}\cdot\hat{t}+(1-\hat{t})\cdot\hat{A}-I||_2^2 \tag{12}

通过结合Decoder.J,Decoder.A和Decoder.t可以学习基于训练Decoder.J引入的Gth信息的指导,以重构模糊图像。 无论是At-DH网络还是AtJ-DH网络,结果均使用公式(2)得到去雾结果。

数据和训练

数据集

  • 训练集1:NTIRE2019
  • 训练集2:NTIRE2018

均由造雾机生成雾气,然后由相机拍摄。它们均有室内外图像。其中NTIRE2019有非常浓的雾,而NTIRE2018有常见浓度的雾气。

由于文章参加了NTIRE2019的竞赛,而NTIRE2019有非常浓的雾,NTIRE2018只有一般浓度的雾气,所以文章对NTIRE2018进行了加雾处理。

加雾公式:

I_{syn}=I\cdot t+(1-t)\cdot A

I_{syn}表示加雾后的图像;I表示NTIRE2018的有雾图像;A对于室内图像,A=[0.6,0.6,0.6],对于室外图像,A=[0.80,0.81,0.86](偏蓝);t均匀的分布在[0.01,0.3]之间,但文章并未说明具体是如何分布的。

在训练中,将数据集切为512*512大小的块。

并添加了以下两种数据增强的策略:

  • 水平翻转,旋转90度、180度、270度

  • 缩放到原始图像的70%、80%、90%;

  • 测试集和训练集同分布

训练设置

文章在这个部分重点介绍了训练过程:

  • Stage 1-编码器的预训练:先将编码器和单个解码器组合来进行训练,解码器的输出是无雾图J_{direct}。损失函数为公式(10)。在这个阶段,使用NTIRE2019和加雾后的NTIRE2018训练80个epoch。

  • Stage 2-At/AtJ-DH训练:对于At-DH,使用公式(3)/(11)作为损失函数,并拿Stage 1中训练好的编码器和两个新解码器合并为At-DH网络;AtJ-DH训练也同理,损失函数如公式(12)。在这个阶段,使用NTIRE2019和加雾后的NTIRE2018训练50个epoch后,再使用NTIRE2019训练70个epoch。

其他训练参数:

  • 优化器:Adam;
  • 初始学习率:1\times10^{-4}
  • 每35轮学习率衰减到原来的70%,并再Stage 2中重置;

在训练输出的结果上,应用了\sigma=15的IRCNN去噪器来提高表现。在测试阶段,At/AtJ-DH+表示在At/AtJ-DH的基础上添加了IRCNN去噪器。

对比和测试

测试指标

  • PSNR
  • SSIM

指标对比

这里的指标均为验证集指标,由于NTIRE2018和NTIRE2019均为竞赛数据集,测试集的Gth未放出,故无法对量化评估测试集。

上图是从《NTIRE 2019 Image Dehazing Challenge Report》中截取的参加NTIRE 2019去雾竞赛算法的在测试集上的PSNR和SSIM的指标。该图比上面三张图更加有说服力。

结果展示

同测试指标对比,为验证集的去雾结果。

上图是从《NTIRE 2019 Image Dehazing Challenge Report》中截取的参加NTIRE 2019去雾竞赛算法在测试集中第一张图的TOP3的方法展示。