这是2018 ECCV一篇做去雨工作的论文,论文的主要解决目前去雨算法里的两个问题,一个是目前的方法只关注一个小的区域,而没有关注全局的语义信息;一个是它们将去雨的步骤分散在不同阶段进行,彼此之间没有联系。所以这篇论文的核心思想如下:
1.由于背景信息对于图像去雨非常重要,这里首先使用了空洞卷积神经网络,扩大感受野,为了适应任务对其进行一定的modify。
2.在Heavy rain中,雨水的条纹有各种方向和形状,这里可以看做是多个雨水层的叠加,通过squeeze excitation结构,为不同的layer分配不同的alpha权重,对应于不同强度和透明度的雨水。
3.由于雨水是叠加而成的,所以一个阶段不足以完全消除雨水。因此将雨水分解到不同的阶段,通过递归神经网络保留上一个阶段有用的信息,从而有利于下一阶段的去雨工作。
去雨的模型一般表示为:
其中B是背景,A是大气光散射,Ri是不同层级的雨水,$\alpha$是这些雨水叠加时的系数,反映它们的亮度。
SE Context Aggregation Net
这部分的网络结构图表示如下:
这里的网络使用的是空洞卷积,rate是在不断增大的。同时这里使用SE block,为每个层的layer分配一个权重,这个权重是根据图像的不同而不同的。而且对于每个网络的每个层,这个权重都是各自学习得到的。因此通过重新学到的权重,不同的特征可以reweighted。最后,网络还去除了BN层,这是因为BN将特征进行了标准化,而这里不同特征之间分布不同,不宜使用BN。最后网络输出雨水的残差图,将输入图减去残差图就可以得到去雨的图像。
Recurrent SE Context Aggregation Net
这里需要将不同阶段的去雨图像结合起来,这里使用基于RNN的结构。过去基于类似的方法只是将上一阶段的输出作为下一阶段的输入,但是没有考虑不同阶段之间特征的联系。这里将不同阶段的特征结合起来很显然更有意义,因此这里的RNN加入了记忆单元,使得每个阶段更好的利用上一个阶段的信息,引导本阶段的特征学习。示意图如下所示:
这里循环单元使用的是GRU模块。最后获得输出的方式有两种,Additive Prediction在每个阶段,获得上一阶段和输入和GT的残差,然后利用输入减去这个残差得到该阶段的去雨图。这里损失为每个阶段前的过去各个阶段所有残差图的累和与目标残差图的MSE loss,然后对各个阶段的这个MSE loss求和。对于Full prediction,这里每个阶段预测所有的残差,然后将这些残差之和和目标残差的MSE做loss。