论文阅读:Recurrent Squeeze-and-Excitation Context Aggregation Net for Single Image Deraining

2018 ECCV:RESCAN

本篇文章是2018年ECCV的一篇文章,也很出名,主要是提出了一种递归的SE上下文扩张网络来完成单幅图像的去雨。

在这里插入图片描述

(单栏排版属实很…)

RESCAN: REcurrent SE Context Aggregation Net
网络主要基于深度卷积和神经网络,同时上下文信息对于去雨来说也很重要
采用扩张卷积神经网络来获得更大的感受野,获取更多的上下文信息。
根据强度和透明度,通过SE模块为不同的雨纹层分配不同的α值。
并且,雨纹层会与其他层相互重叠,所以不能通过一个阶段来去除雨纹。本文将去雨过程分为多个阶段,然后通过一个递归神经网络来保存前一阶段的有用信息,使之有益于下一阶段的雨纹去除。每个阶段使用具有多个卷积层的上下文扩张网络,且每个通道对应一种雨纹。
扩张卷积指数增长-------->得到低深度的大感受野----------->获得更多的上下文信息

创新之处:

1、提出了一种逐阶段去除雨纹的统一的深度网络RESCAN。每个阶段使用上下文扩张网络来去除雨纹。SE块针对不同的雨纹层根据他们的属性设定不同的α值。
2、考虑了不同阶段之间的去雨的相关性。通过结合RNN结构和三种递归单元,得到前一阶段的去雨的有效信息,用于指导后一阶段的去雨。本网络适合用于去除大雨天气下复杂的雨纹。

前人工作:

1、传统方法:判别稀疏编码、低秩表示、高斯混合模型
2、现有方法存在的两个限制约束:
一方面,空间上下文信息对去雨比较有用,现有的大部分方法都是基于图像patch而忽略了大区域的上下文信息
另一方面,现有的方法都是单独地每个阶段去除雨纹,没有考虑不同阶段之间的相关性
3、 视频去雨方法:
Garg and Nayar 提出一种基于光学特性和时间动力学来描述雨纹的外观模型。
zhang 利用了视频中雨的时间和色彩特性
Bossu等人基于雨纹的方向直方图来检测雨
4、单幅图像去雨方法:
传统方法主要包括:字典学习、高斯混合模型、低秩表示等。
Kang 基于字典学习将雨图的高频成分分解为雨成分和无雨成分
Wang 定义了一个三层的层次结构
Luo 提出了一种基于图像块的判别稀疏编码框架
Gu 等人将分析稀疏表示(ASR)和合成稀疏表示(SSR)结合,解决了多种图像分解问题
而GMM是作为一种先验将雨图分解为背景层和雨纹层
Chang等人利用雨纹的低秩特性来完成分层
Zhu等人将三种不同的图像先验进行了组合
基于学习的方法:
DerainNet:首先将深度学习引入到去雨问题中来
DDN:将雨图分解为高频和低频成分,然后利用深度残差网络将高频成分映射到雨纹层。
JORDER:设计一个深层递归扩张网络,联合检测和去除雨纹。
ID-CGAN:使用生成对抗网络防止从雨图中提取背景图像时背景图像的退化,并使用感知损失进一步保证视觉质量。
SMRNet :设计了一种新型的多级卷积神经网络,该网络由多个并行的子网络组成,每个子网络可以感知不同尺度的雨条纹。
5、本篇文章灵感主要来自SMRNet:Single Image Deraining using Scale-Aware Multi-Stage Recurrent Network

具体工作:

1.雨图建模
在这里插入图片描述---->在这里插入图片描述------>在这里插入图片描述
其中,A是全局大气光,α0是场景传输图,αi 表示雨纹层或雾层的亮度。

具体工作:

1、SE上下文聚合网络(SCAN):
一个使用SE模块实现的扩展上下文聚合网络

网络结构在这里插入图片描述

输入一个含雨的图像O,经过网络的训练,得到雨纹图R,然后进行一个作差,得到去雨的背景图B。
如图,绿色块是图像(O是输入的含雨图像、R是雨纹图像、B是无雨的背景图),蓝色块是特征图,红色块是卷积核(通过扩张卷积扩大感受野,Dilation Factor代表卷积核中插入点的间隔数),黄色块代表SE模块获得的通道权值。图中,网络深度depth为6。
可以观察到图中,DF从1变为2变为4,逐步增加感受野。
第一层L0编码将图像转换成特征图,最后两层L4,L5进行解码,所以不进行扩展操作。
L5之前的卷积核都是3x3的,最后一层L5为了恢复RGB图像的RGB通道或者灰度图像的灰度通道,采用1x1的卷积核。除了最后一层外每一层的卷积操作增加一个非线性操作。
同时,感受野随DF增大而增大,每使用一次扩张卷积,就往卷积核点间隔增加对应DF数。

具体参数:
在这里插入图片描述

同时,使用SE学习得到α值,对卷积计算得到的特征图进行重新加权。
特征图中,将每个通道看做一个雨纹层的一部分。
在这里插入图片描述
如上式,给不同的雨纹层Ri分配不同的αi,并不断地更新这个权值。
卷积运算隐式地为每个通道引入了权值,但是这些隐式权值并不是针对每个图像的。
为了显式地为每个图像导入每个网络层上的权值,使用SE块扩展每个基本卷积层,为每个项的每个通道计算标准化的alpha值。

SCAN不使用 BN(batch normalization)。
BN可以减少特征图的内部协变量转变,使用BN对每个标量特征进行归一化,会使其均值和单位方差均为零。使得这些特征相互独立同分布。
但是我们建过程中,不同层的雨纹在方向、颜色和形状上的分布是不同的。
不使用BN可以节省大约40% 的内存使用。

2、递归SE上下文聚合网络(RESCAN):

在这里插入图片描述

因为存在雨纹层的相互重叠问题,不能简单的一个阶段去除雨纹。
递归结构多阶段去雨:(灵感来自JORDER和SMRNet)
在这里插入图片描述
每个阶段雨纹不断叠加。
与其他两种方法不同的是,他们只使用最后阶段的输出图像作为当前阶段的输入,没有考虑这些阶段之间的特征连接。
{O1,O2, · · · , Os}可以看作是雨纹干扰程度降低的雨图像时间序列。
使用RNN结合存储模块更好地利用上一阶段的信息指导后一阶段的学习。

在这里插入图片描述----->在这里插入图片描述
其中R¯is是第s阶段分解的第i个雨纹层,xs−1是第(s−1)个阶段的隐藏状态。
Rs的计算方法是将不同的alpha值的R¯i进行相加。

三种不同的递归单元变量:
ConvRNN 、ConvGRU 、ConvLSTM

ConvGRU:
门控递归单元GRU常用于序列模型,这里采用卷积版本的ConvGRU。

在这里插入图片描述
其中,xjs代表第s阶段第j层的特征图,可以通过同一层前一阶段的xjs-1和同一阶段前一层的xj-1s计算得出。
σ 是sigmoid函数,圈点代表点乘,W是扩张卷积核,U是3x3或者1x1的普通核。

3、递归框架:

对比了加性预测和全预测,都使用Os和之前阶段作为s-th阶段的输入。

加性预测:
在每个阶段,网络只预测前一个预测与真实图像之间的残差。它将以前的特征图和预测作为输入,可以表示为:

在这里插入图片描述
其中,x s-1代表前一阶段的预测。
损失函数为:
在这里插入图片描述
Θ 表示网络参数。

全预测:
在每个阶段,都进行雨纹的预测。
在这里插入图片描述
其中,^Rs表示第s阶段预测的全雨纹, ^Os+1 = B + 剩下的雨纹。

损失函数:
在这里插入图片描述

实验:

合成数据集: Rain800、Rain100H
真实世界数据集:之前的 论文里面JORDER、ID-CGAN

训练参数
Nvidia 1080Ti GPU
Pytorch
batch-size= 64
SCAN的网络深度d = 7 感受野35x35
非线性操作:leaky ReLU α = 0.2
ADAM优化
start learning rate = 0.005
15000和17500次迭代时除以10

对比方法:
ID、DSC、LP、DDN、JORDER

结果:
在这里插入图片描述

三种递归单元和两种递归框架的对比:

在这里插入图片描述

灵感文章:

接着粗略看了一下灵感文章:《Single Image Deraining using Scale-Aware Multi-Stage Recurrent Network》
国立新加坡大学的 RuoTeng Li 在17年预发表的文章,两篇很像。

网络结构 SMRNet:

在这里插入图片描述

输入含雨图像,首先利用DenseNet提取出整体特征,注意这里的DenseNet去掉了转换层(1Conv+ 1Pooling)所以不进行下采样。
然后将提取到的特征输入到并行的子网络中,递归的子网络用于估计不同密度不同尺度的雨纹图Ri,然后进行叠加求和得到这一阶段的雨纹图。再与输入图像进行作差,得到这一阶段的去雨图像。这些并行的子网络是带有ResNet捷径连接的循环卷积层。
再将上一阶段的预处理图像输入到下一阶段,进行剩余雨纹的预测估计,完成多阶段去雨,得到干净的去雨图像。

同时也讨论了去除雾纱雨纹积累,SMR与子网络的集成SMRNet-Veil。

雨的模型:

在这里插入图片描述

页符

发布了26 篇原创文章 · 获赞 4 · 访问量 4456
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章