2018 CVPR : DID-MDN
本篇文章是2018年CVPR的一篇文章,也比较出名,很多文章都会进行对比,主要提出了一种基于密度感知的多流密集网络完成单幅图像去雨。
DID-MDN:a density-aware multi-stream densely connected convolutional neural network . 用于联合雨的密度估计和去雨。
该方法使网络本身能够自动确定雨密度信息,并根据估计的雨密度标签有效地去除相应的雨条纹。
利用不同尺度特征的多流密集连接的去雨网络用于更好地描述不同尺度和形状的雨纹。
同时创建了一个新的带有雨密度标签的图像数据集。
残差感知分类器------>估计出雨密度级别------>输入到多流密集连接网络
两个主要阶段:雨密度分类和雨条纹去除。
残差感知分类器利用雨图中的残差分量进行密度分类来准确估计雨密度水平(大,中,小)。
将估计得到的雨密度信息融合到最终的多流密集连接网络,该网络考虑雨纹的尺度和形状信息,然后完成雨纹去除。
创新之处:
1、提出了一种新的DID-MDN方法,该方法能够自动确定雨密度信息,并根据估计的雨密度标签有效地去除相应的雨条纹。
2、观察到残差可以作为一种更好地表征雨密度信息的特征表示,提出了一种基于残差感知的分类器,用于有效地确定给定雨图像的密度级别。
3、同时合成了一个新的包含雨密度标签信息合成数据集,该数据集由12,000张带有雨密度标签的训练图像和1,200张测试图像组成。
前人工作:
1、现有的去雨方法通常被设计来完成特定的雨图,却没有考虑到雨滴的不同形状、尺度和密度。导致去雨通常会出现过度或者不足。即可能会出现去除图像的一些重要信息,或者仍然存在一些清晰的雨纹。
2、解决方案之一,就是建立足够大的数据集,涵盖了雨纹的不同密度强度、不同方向、不同尺度。
3、另一种方法便是学习一种密度特定的模型。然而,这种解决方案在实际的去雨过程中缺乏灵活性,因为对于给定的雨图,需要密度标签信息来决定选择哪个网络进行去雨。
4、对于视频去雨,可以利用空间信息去除雨成分。其中,层先验方法主要包括基于稀疏编码的方法、基于低秩表示的方法、基于高斯混合模型GMM的方法。但是,层先验方法的局限是会过度平滑图像细节。
5、基于卷积神经网络的方法,则是通过一个CNN结构来学习一个从输入的雨图到对应的ground truth之间的映射。
6、结合不同级别(尺度)的卷积特征可以更好地表示图像及其周围环境中的对象。
7、FCN:全卷积网络。使用跳跃连接并在中间层添加高级预测层,有效利用不同尺度获得的特征,来生成多分辨率像素级预测结果。
8、U-Net:整体结构由一个捕获上下文的收缩路径和一个对称的精确定位的扩展路径组成。
9、HED模型:采用深度监督结构,并自动学习丰富的层次表示,用于融合解决边缘和对象边界检测中具有挑战性的模糊问题。
10、多尺度特征。类似JORDER,利用一个多流网络来捕获具有不同尺度和形状的雨纹成分。不同的是,JORDER使用了两个具有不同扩张因子的卷积层来组合来自不同尺度的特征,这篇文章则是使用密集连接的块作为构建模块,然后将每个块的特征连接在一起,最终去除雨纹。
网络结构:
主要由一个残差感知的雨密度分类器和一个多流密集连接的去雨网络组成。
残差感知雨的密度分类器用于确定给定雨图的雨的密度级别,得到一个密度标签。
多流密集连接的去雨网络在估计得到的雨密度信息的指导下有效去除雨纹。
具体工作:
1、残差感知的雨密度分类器
《Video desnowing and deraining based on matrix decomposition 》分别使用两种不同的先验来描述小雨和大雨。
不同的是,使用CNN分类器估计得到的雨密度标签被用于指导去雨过程。
使用12000张带有雨密度标签的雨图训练分类器,雨密度分为小、中、大三类。
通常,训练一个新的分类器的策略是在一个先前定义好的模型上进行微调,可以加速训练,同时可以更好地泛化模型。
但是,直接微调一个深的模型不太有效。因为CNN高级特征更倾向于在输入图像中定位识别图像,导致相对较小的雨纹信息不能很好的在高级特征中被定位到,即在高级特征中可能会丢失雨纹信息。
分类器网络由特征提取和分类两部分组成。
为了从观测y中估计残差分量(^r),使用新数据集训练了一个多流密集网络,没有标签融合部分。
然后将估计出的残差作为训练最终分类器的输入。这样,残差估计部分就可以看作是特征提取过程,等同去雨网络里面的特征提取过程。
分类部分主要由三个3x3的卷积层、一个9x9的平均池化层和两个全连接层组成。
即Conv(3,24)-Conv(24,64)-Conv(64,24)-AP-FC(127896,512)-FC(512,3)
前后数字分别代表输入输出的通道数,且最后一层由3个神经元组成,表示输入图像的雨密度等级(即低、中、高)。
**损失函数:**分为特征提取部分和分类部分两部分的损失。
前者表示估计残差分量的每像素欧氏损失,后者表示雨密度分类的交叉熵损失。
2、多流密集网络
雨纹包含不同的尺度和形状,小感受野捕获小的尺度特征小的雨纹,大感受野捕获大的尺度特征长的雨纹,因此组合多个尺度可以更好地捕获雨纹成分。
每个stream都构建在引入的密集块上,它们具有不同内核大小(不同的感受野)。Dense1 (7 × 7),Dense2 (5 × 5), Dense3 (3 × 3)
为了进一步改善不同block之间的信息流,并利用每个dense-block的特征来估计雨纹成分,提出了一种改进的连通性,将每个block的所有特征连接起来进行雨纹估计。
并且不是像JORDER在每个stream中只利用两个卷积层,而是在不同尺度的特征之间创建短路径,以增强特征聚合并获得更好的收敛性。
并且利用雨密度信息来指导去雨过程,向上采样的标签图与来自所有三个流的雨条纹特征连接起来。就是将标签上采样到与每个stream的输出特征相同的维度。
然后使用连接的特征来估计出残差雨纹信息,从输入的雨图像中减去残差,得到粗糙的去雨图像。再使用两个Conv+ReLU层细化粗糙的去雨图,进而得到最终的去雨图像。
每个stream有6个dense-block:
其中,cat代表连接,DBi代表第 i 个密集块,Sj代表第 j 个stream。
在每个流中采用不同的过渡层组合和内核大小。
Dense1:三个下采样过渡层、三个上采样过渡层,内核大小为7x7
Dense2:两个下采样过渡层、两个无采样过渡层、两个上采样过渡层,内核大小为5x5
Dense3:一个下采样过渡层、四个无采样过渡层、一个上采样过渡层,内核大小为3x3
损失函数:
基于CNN特征的损失可以更好地改善语义边缘信息,并进一步提高去雨图像的视觉质量。
所以使用加权组合的三部分损失函数来训练去雨网络:
前两部分是构建残差图像和生成去雨图像像素级别的欧几里得损失,LF去雨图像的特征损失定义为:
其中,F为非线性CNN变换,x^为恢复后的去雨图像。
这里我们假设特征尺寸为w×h,通道为c。计算了来自VGG-16模型的层relu1_2的特征损失.
实验:
对比方法:
DSC、GMM、Derain-Net、JORDER、DDN、JBO
合成数据集:
使用PhotoShop进行雨纹的添加,5%~35%、35% ~65%、 65% ~ 95%分别对应小、中、大三种标签。
添加进雨密度标签信息,生成一个新的数据集Train1:共4000x3张图片对应小、中、大三种不同的雨密度标签。
同样合成了一个验证数据集,Test1:共有1200张图片
为了验证泛化能力,从DDN数据集中随机挑选1000张图片作为验证数据集Test2
训练细节:
从输入的586x586图像中随机裁剪得到512x512的图像。
Adam优化算法
mini-batch size = 1
learning rate 从0.001开始,20个epoch之后除以10
训练80x12000个迭代次数
使用权重衰减为0.0001,momentum为0.9
使用Pytorch框架
权重入F = 1
交叉验证优化参数
分页符