Daily Notes 7.17 - 18

感觉周末好像不在状态啊,一直在浪,昨天换了设备之后迁移一晚上,然后又开始浪= =

  • Improved Techniques for Learning to Dehaze and Beyond: A Collective Study

Improved Techniques for Learning to Dehaze and Beyond: A Collective Study

仔细研究研究(

本文介绍了在新提出的 RESIDE 数据集上面进行的两方面的工作,一个是尝试在单张图片上去雾(low-level),另一个是尝试在有雾的图片上进行 high-level 的视觉理解(比如 object detection)。对于第一个工作,文中尝试了多种 loss function,并得到结论是 perception-driven loss 可以显著地提升去雾性能。对于第二个工作,作者得到很多解决方案,包括在检测及去雾过程中使用更先进的模型,以及 Domain Adaptive 的 object detection 方法。

Introduction

由于多种因素(air pollution, dust, mist, fume 等等),室外拍摄的照片往往是有复杂的、非线性的、和数据相关的噪声(统称为 haze),这对很多 high-level 的视觉任务(比如 object detection 和 recognition)产生一定的挑战。因此 dehazing 是一个研究很广泛的领域,早期的工作经常需要额外的关于场景 depth 的信息,或者是通过比对多张照片获得的信息。后来,很多方法提出对自然图片学习先验并做一些统计上的分析。近来,dehazing 算法应用了神经网络计数,效果很好。文中举了 AOD-Net 做例子,那篇工作中训练了一个 end-to-end 的去雾 + 检测(用的是 Faster R-CNN)的模型。

文中主要是两个任务,一是想要提升单张图片的去雾效果(作为 image-restoration 的问题),另一个是希望提升有雾情况下的 object detection 性能。(第一次看到有内容是加粗的……) 作者提倡对于提升物体检测性能给予更多的关注,因为是 final goal。和 low-resolution,noise,blur 不同的是,haze 对人的视觉影响不大(甚至有时还会获得额外的美学效果),但是 haze 在室外环境中不受约束,可以对影响视觉系统的功能。拿自动tian驾驶举例,hazy 和 foggy 的天气会对车载摄像头产生影响,比如造成 reflection 和 glare。

去雾方法

其中 $I(x)$ 是观察到的有雾的图, $J(x)$ 是需要恢复出来的干净背景。参数 $A$ 代表全局环境光,$t(x) = e^{-\beta d(x)}$ 是 transmission 矩阵。$\beta$ 是散射系数, $d(x)$ 代表物体和镜头的距离。传统的单张图去雾方法一般是学习自然图片的先验,比如 dark channel prior, color-attenuation prior,和 non-local color cluster prior,再对、做一些统计学上的分析来复原 transmission matrix t(x)。进来,CNN 被应用到去雾模型,比如 multiscale CNN (MSCNN),DehazeNet,AODNet。

把去雾看做图像修复

在这篇工作中,我们尝试找到和人类感知更 match 的 loss function 来训练去雾神经网络。我们用 AOD-Net (原网络用 MSE loss)来做骨架并用如下 loss function 替换:

  • $l_1$ Loss:

这里 N 是图像块 P 中的像素个数,p 是用来表示一个像素位置,x(p) 和 y(p) 用来分别表示生成的图像和 ground truth 图像的像素值

  • SSIM Loss:

    其中平均值和标准差是通过一个标准差是 $\sigma_G$ 的高斯滤波器,这样就可以得到对于 SSIM 的 loss function 了。

  • MS-SSIM Loss:
    上面的式子中 $\sigma_G$ 的选择会影响到 SSIM 的训练效果。在这篇工作中,我们选用了 multi-scale SSIM ,即提前选好 M 个不同的 $\sigma_G$ 并进行融合:

  • MS-SSIM + $l_2$ Loss:
    使用一个把 MS-SSIM loss 和 $l_2$ loss 加权合并起来的结果:

    这里给 $l2$ loss 逐点地乘上一个 $G{\sigma_G^M}$,作为 loss function 里面的 $l_2$ loss 部分。因为 MS-SSIM 反向传播在 q 这个像素点的错误的时候是基于它对于中心点 $\tilde{q}$ 的 MS-SSIM 的贡献的,而这个贡献是由高斯权重来确定的。

  • MS-SSIM + $l_1$ Loss:
    使用一个把 MS-SSIM loss 和 $l_1$ loss 加权合并起来的结果:

    $l_1$ loss 也用相似的方法加权。

我们使用了 1000 张图片(室内室外都有)作为验证集,剩下的用于训练。最开始的学习率是 0.01,mini-batch 大小是 8,所有的权重用高斯随机变量初始化(除非特殊指定)。我们设定动量是 0.9,weight decay 是 0.0001。我们也进行 gradient clipping,阈值是 $\pm 0.1$。所有的模型在 GTX 1070 上训练 14 个 epoch,经验上来看会收敛。对于 SSIM loss,$\sigma_G$ 设置为 5,$C_1$ 和 $C_2$ 是 0.01 和 0.03。

实验表明单单是替换 loss function 就会得到显著的性能上变化。其中 $MS-SSIM-l_2$的效果最好。然后我们进一步对这个模型 fine-tune,(使用一个预先训练好的 AOD-Net 作为 warm initialization,并使用更小的学习率和更大的 mini-batch 大小)。

辅助目标检测的去雾

使用 detection module 串联来增强去雾效果

作者表示,看到之前 AOD-Net + Faster-RCNN 的效果不错,决定尝试使用不同模型串联:去雾模型选择 DCP,DehazeNet,AOD-Net,DCPDN;目标检测模型选择 Faster R-CNN,SSD,RetinaNet,Mast-RCNN。然后由于有雾的图像常常对比度较低,我们还使用了增强对比度的模型(CLAHE)。

实验结果表明,直接简单地把目标检测模型换成更复杂的模块并不能显著提升去雾检测的心梗,因为有雾/去雾后图片和干净的图片(典型检测模块在这上面训练的)是有 domain gap 的。更加复杂的检测模型可能会在干净图片这个 domain 上面 overfit 了,有一次证明了在解决真实世界检测问题时处理 domain shift 的重要性。此外,一个更好地去雾模型(从复原效果上来看)并没有在它预先处理过的图片上更好的检测效果(比如 DPDCN)。而且,添加去雾的与处理过程后并不总能保证得到更好的检测效果。我们发现实验中 AOD-Net 倾向于生成平滑但是对比度较低的结果,有可能对 detection 造成影响。这样考虑的话,我们设计两个三阶段的串联模型,发现用 DCP 处理 AOD-Net 的去雾结果之后可以得到更好地结果(而且对比度增强)。

Domain-Adaptive Mask-RCNN

我们受 domain adaptive Faster-RCNN 的启发,设计了 Domain-Adaptive Mask-RCNN。

DMask-RCNN 的首要目标是对 feature extraction 网络生成的特征进行 mask 操作,使得它具有 domain invariant 的性质(干净的图片和有雾的图片两个 domain)。具体来说,它在 Mask-RCNN 的基础的特征提取卷积神经网络后放了一个 domain adaptive 结构,引入一个 domain classfier 的 cross entropy loss。

文中实验结论:

  1. Domain-Adaptive 的检测方法非常 promising,效果远好于之前的方法
  2. 使用合适的 domain adaptation 可以充分发挥 detection model 的能力。另外,在没有 joint tuning 的时候,MSNN 效果比 AOD-Net 好。
  3. target domain 的选取对结果影响较大,应当选取 domain discrepancy 较小的。
  4. 实验结果表明 MSCNN + DMask-RCNN 的串联模型效果最好

Comment

typo 很多,竟然这样就可以发 arxiv = =

upd: 竟然是 course project….