深度学习——UMRL

CVPR2019原论文:Uncertainty Guided Multi-Scale Residual Learning-using a Cycle Spinning CNN for Single Image De-Raining
开源代码(pytorch框架):https://github.com/rajeevyasarla/UMRL–using-Cycle-Spinning
1.主要工作:
提出了不确定性引导的多尺度残差学习(UMRL)网络。
该网络利用uncertainty map指导后续的层检测和学习雨纹信息。根据输入生成雨纹图像。
在训练和测试阶段,利用Cycle Spinnig机制提高图像去雨质量。

2.网络主体结构:
雨纹是图像中的高频部分(具有明显的边界和轮廓),然而,现有的去雨方法不能够去除近似高频的雨纹,或者过度去除图像高频部分导致图像边缘细节丢失。为了解决这个问题,文章提出了利用uncertainty map给雨纹残差的每个像素点标记一个置信度。这个置信度反映了网络估计雨纹残差的正确程度(如该像素点置信度高,则说明网络在该点估计得比较准确)。根据雨纹残差图和其相关的uncertainty map,网络能够判断出何处的雨纹残差估计的正确,何处的雨纹残差估计得不正确。因此,uncertainty map提供的置信度信息能够帮助网络完成高质量去雨。

同时,文章提出在三个不同尺度下估计雨纹残差图及其相关uncertainty map(原始尺寸,0.5倍尺寸,0.25倍尺寸)
深度学习——UMRL_第1张图片
(a)是输入含雨退化图像;(b),(c),(d)分别是三个尺度的雨残差图像。可以看出三个不同尺度图像的雨纹具有相同的方向和密度。

文章采用跳跃连接的U-Net作为基础网络去估计雨残差图像。以下为主体结构图:
深度学习——UMRL_第2张图片
基础网络U-Net的主要构成为:
深度学习——UMRL_第3张图片
ConvBlock的结构如下:
深度学习——UMRL_第4张图片
网络末端有一个优化结构,对去雨图像作最终优化。结构如下:
在这里插入图片描述

在U-Net的上采样阶段,文章插入了Residual Network (RN)用以估计雨残差图像。 Confidence map Network (CN)用以估计uncertainty map。

Residual Network (RN)的主要结构如下:
深度学习——UMRL_第5张图片
即三个ConvBlock,在这里插入图片描述
Confidence map Network (CN)的主要结构如下:
深度学习——UMRL_第6张图片
即三个ConvBlock,
在这里插入图片描述

如何在上采样阶段插入这两个网络呢?看下图:
深度学习——UMRL_第7张图片上面网络总共计算三个尺度(原尺度,0.5尺度,0.25尺度)的雨残差图和Confidence map(也叫uncertainty map)。首先进行的是0.25尺度的计算(因为U-Net的上采样是依次从小尺寸增到原尺寸的)。RN(上图写错了,SN应该是RN)网络根据feature map输出残差图像。CN网络根据feature map和残差图像输出Confidence map。然后,Confidence map和残差图像相乘得到一个新的feature map。将这个新的feature map向后传递,以指导后面的层计算雨残差。

其次,0.5尺度的计算同0.25尺度。

最后,计算得到原尺度的雨残差图和Confidence map。用原始的含雨图像减去原始尺度的雨残差图像就得到了去雨图像。去雨图像最后经过一个优化网络即得到最终输出。由于不用往后传递了,所以雨残差图和Confidence map不用再相乘了。既然用不到它,为什么还要计算它呢? 答案是:用他们来计算损失函数,参与网络的优化过程。

因此,用置信度去指导整个网络的训练优化过程,损失函数定义如下:
深度学习——UMRL_第8张图片
其中Ci表示第i个尺度的Confidence map; Xi表示第i个尺度的雨残差图; ⊙表示乘积。

文章还加入了感知损失函数L2损失:
在这里插入图片描述
其中NHW分别表示通道,高,宽;F(.)表示VGG16的非线性映射。

总损失为两部分之和:
在这里插入图片描述

3.Cycle Spinning机制优化图像去雨质量:

什么是Cycle Spinning机制?如下图:深度学习——UMRL_第9张图片
Cycle Spinning机制就是将图像作位移变换(参数p表示位移行数,参数q表示位移列数)。例如图像(a)作p=100;q=200的位移变换,就是将原图像的前100行像素点与剩下的行交换位置,然后将图像的前200列像素点与剩下的列交换位置。例如图像(b)作p=0;q=200的位移变换,就是将图像的前200列与剩下的列交换位置(相当于将图像划分为两块,然后将这两块交换位置)。

Cycle Spinning机制将输入图像作多次位移变换,得到N张变换后的图,将这N张变换后的图像输入网络中去雨,然后,将网络输出图像作位移逆变换恢复成正常图像,最后将N张图取平均。如下图:深度学习——UMRL_第10张图片
其实,Cycle Spinning机制相当于作了图像数据增强以优化网络去雨质量。

你可能感兴趣的:(深度学习--降噪,深度学习,pytorch,神经网络,计算机视觉,网络)