A Model-driven Deep Neural Network for Single Image Rain Removal
paper link:https://openaccess.thecvf.com/content_CVPR_2020/papers/Wang_A_Model-Driven_Deep_Neural_Network_for_Single_Image_Rain_Removal_CVPR_2020_paper.pdf
github link:https://github.com/hongwang01/RCDNet
1 Background
- 深度学习技术在单图去雨任务上取得了很好的性能,但是并没有足够的可解释性,且并没有很好的结合雨条纹的特征(连续、形状相似),针对这些问题,作者提出了一种模型驱动的网络。
- 一张雨图中重复出现的雨条纹在局部上有着相似的特征:例如 形状、粗细、位置。因此可以利用这一先验来恢复图像,即问题转变成从这些局部的类似退化中估计出rainy kernel。虽然特定的场景中(说白了就是合成数据集),这种依赖于客观先验的假设相当work,但是在真实场景中,这种方法并不适应复杂、多样的雨条纹。因此作者提出将rain layer做一个分解,核心思路就是rain layer分解为雨核和雨图,rain layer可以由二者卷积而成。
2 Method
对于一张雨图,其形成可描述为:
分解示意图,图片来自原论文
优化问题可以被表示为:
其中,是来自的张量,和是用于保留先验结构信息的正则项。
估计雨图M与背景B
作者采用一种多个重复的成对子网络组合来构成多阶段的架构设计,整体的架构设计在下一节解释,先解释一下单个阶段的成对子网络设计和网络设计后的解释性原理。
子网络示意图,图片来自原论文
上图中,估计雨图的部分即M-net,估计背景的部分即B-net,箭头指向对应的网络。通过求解优化问题表示式的二次逼近,雨图更新式可以表示为:
雨卷积字典网络
受low-level vision task比如反卷积、压缩感知和去雾等中利用的deep unfolding技术的启发,作者将上述方法的每个迭代步骤都展开作为相应的网络模块,从而构建多阶段迭代的可解释去雨网络。
整体框架图,图片来自于原论文
Loss function
作者采用了每个阶段学习的背景和雨层的均方误差作为训练目标函数:
指标结果
paper中展示了常用的几个数据集上的指标结果,指标非常不错。
指标对比图,图片来自论文原文
效果图展示
- 合成数据集上:
- 真实雨图上:
3 结论
作者提出了一种利用雨条纹的内在先验结构的可解释网络,网络中的每个模块都可以与求解模型中一一对应而实现,网络不再是黑盒子了,变成了每一模块都能观察、分析的白盒子~让人感觉眼前一亮,非常值得细细学习和分析。
文章转载于:GiantPandaCV
作者:Owen718
推荐阅读
更多嵌入式AI技术相关内容请关注嵌入式AI专栏。