论文阅读笔记《Depth-attentional Features for Single-image Rain Removal》
摘要
降雨现象,物体近处雨条纹遮挡,远处雾遮挡 ( 现有方法和数据集忽略了此种物理属性 ) 。在这项工作中。1. 分析雨景受景深度的视觉效果,制定了雨带和雾的雨成像模型。2. 准备了一个名为RainCityscape的新数据集,在真实的户外照片上带有雨条纹和雾。3. 端到端网络,通过深度引导的注意机制训练来学习深度注意特征,并回归残贴图生成无雨图进行输出。
介绍

t_r 表示为雨带的视觉强度,t_{r0} 表示为模型中的最大t_r,
- 当场景离摄像机近( d \le d_1 ), 图像由大量雨条纹和小雾组成。此时 t_r=t_{r0}, d_1=2fa, f 为焦距,a 为雨滴半径。
- 当场景远离摄像机时( d \ge d_2 \gg d_1),图像由大量雾和小量雨条纹组成。随着深度得增加,t_r趋于0。
- 当深度位于d_1,d_2 之间,雨条纹减少,雾增加。

O(x)=I(x)(1-R(x)-A(x))+R(x)+A_0A(x)
O(x): 有雨图; I(x): 无雨图; R(x)∈ [0, 1] : 雨层; A(x)∈ [0, 1]: 雾层; A0: 大气光,常量
R(x), A(x)越大,雨或雾的强度越大。场景的可见性随着R(x)+A(x)增大而减小。
R(x)=R_{pattern}(x)*t_r(x)
R_{pattern}(x)\in[0,1] 是图像空间雨条纹均匀分布的强度图。t_r(x)是雨条纹强度图,取决于深度 d(x), *表示按元素乘。
t_r(x)=e^{-\alpha \ max(d_1,d(x))}
\alpha 为控制雨条纹强度的衰减系数,最大雨条纹强度t_{r0} = e^{-\alpha d_1}, t_r(x) 从 t_{r0} 开始逐渐减小,当深度超过 d_1 时减小为 0 。
A(x)=1-e^{-\beta d(x)}
\beta为控制雾浓度的衰减系数,越大雾越浓。
方法

(i)卷积网络从输入图片中提取多分辨率特征 (蓝色)(ii) 用于预测深度图的解码器分支 (绿色);(iii) 学习注意力权重的深度引导注意力机制 (橙色);(iv) 另一个解码器分支和注意权重一起产生深度注意特征 (黄色) ;(iv)在深度注意特征(粉红色)上使用一组组卷积来预测残差图,与输入作用生成输出无雨图像。在图中,我们将特征图描述为块,其中较厚的块具有更多特征通道。
回归深度图
上采样特征图的分辨率为输入1/4时,添加信号并回归输入图的深度图。因为场景深度范围较大,不直接回归,而是通过转换监控信号(输入训练数据的深度图)中的深度值来回归深度值的对数。
D(x)=e^{-0.1 d(x)}
d(x)为像素x出的深度值,D(x)时网络中的监督信号。
深度注意力特征
首先在网络中回归深度图,并将其作为学习一组关注权重的指导。然后,我们可以使用这些权重来集成网络中底部解码器分支中的特征图,以形成雨条纹和雾的残差图。此外,将残差图添加到雨量图像中,生成输出无雨图像。
the depth-guided attention mechanism设计图下

3个卷积块处理D(x),每个卷积快后面都有ReLU,最后输出以个非规范的注意力权重\{A_1,A_2,...A_n\} 每个权重代表某种类型的雨条纹和雾。然后应用softmax规范化权重
下面解码器产生256通道的高分辨特征值F^b,分成n个子图,每个子图和原输入图有相同的分辨率,此时F_{i}^b(i=1...n))有256/n个通道。这里将n设置为64.最后将W_c和每个子图 F_{i}^b 的特征通道相乘形成深度注意特征。在 n 组中分别对深度注意功能的每个部分执行组卷积,以提高功能的表现力。通过采用组卷积,每个组中的特征仅负责去除具有较小类内差异的某类雨条纹和雾。最后,使用 1 × 1 卷积合并不同组中的所有要素,以生成残差贴图 Res(x),并将输入图添加到该图中形成无雨图。
训练和测试策略
Loss fuction 最小化输出无雨图I(x)和深度图D(x)
\begin{aligned} L &=\omega_{i} \sum_{x \in \mathcal{X}} \sum_{l \in\{\mathcal{R}, \mathcal{B}, \mathcal{B}\}}\left|I(x)_{l}-\bar{I}(x)_{l}\right|^{2} +\omega_{d} \sum_{x \in \mathcal{X}_{4}}|D(x)-\bar{D}(x)|^{2} \end{aligned}w_i , w_d是权重。 \mathcal{X} 和 \mathcal{X}_4 为输出图和深度图的图像域,
网络权重初始化和VGG在ImageNet上初始化权重一样。使用Adam优化网络,第一次动量值设定为0.9,第二次动量值设定为0.99。权重衰减为 5\times10^{-4},学习率设定为10^{-5} 迭代次数100000,
