又是一篇基于残差学习的论文,出自厦大丁兴浩老师团队。也是较早之前看的,回过头再看一遍。
2018 ACMMM: ResGuideNet
本文主要提出了一种残差指导特征融合网络ResGuideNet,利用较浅模块生成的残差来指导更深的模块,最终对不同模块的输出进行特征融合,完成单幅图像的去雨。
具体地讲,ResGuideNet主要是提出了一种级联网络,使用较浅模块生成的残差来指导较深模块,据此可以随着模块深度的增加能够得到负残差的由粗到细的一个估计。同时不同模块的输出融合到最终的重建模块。采用了递归卷积来构建每个模块,并对所有中间结果进行监督。这样在减少了参数的同时也实现了良好的性能。
主要思想阐述:
现有方法存在问题:
1、现有方法的雨纹去除模型大多数在单一模型中学习负残差,这些模型需要使用大量的参数进行精心设计来捕捉雨纹的不同模式。
2、大多数使用欧氏距离进行优化的方法会产生模糊的预测,因为每像素的损失不像人类视觉感知那样接近输出图像和GT图像之间的感知差异。
3、资源匮乏的模型无法满足去雨任务的各种需求,复杂雨图无法通过简单的模型完成处理。
本文主要思想:
1、每个模块都包含了一个全局捷径(global shortcut)来预测残差。
2、将预测的残差从较浅的块连接到较深的块,较浅的残差可以指导更深的预测,以生成更细化估计。
3、对所有中间输出都进行了监督,使得随着模块的加深,能够得到一个由粗到细的残差。
4、基本的去雨模块基于带有完备捷径策略的递归计算,减少网络参数的同时保持了良好的性能。
主要创新之处:
1、建立了一个单一的、可分离网络,来处理不同的情况。通过保存浅层模块的负残差特征到深层模块,可以得到雨纹负残差的由粗到细的估计。并且在变化应用程序场景时,可以分离出一部分模型,满足不同的需求。
2、使用了一个混合的损失函数对所有的中间和最终重建进行监督,模型集合所有的中间结果得到最终的结果。
3、讨论了如何将ResGuideNet运用于其他low-level视觉任务,以及重建图像如何应用于诸如目标检测等下游应用。
主要网络结构:
有一说一,图画的不好,用线段表示模块有点不明确
据图分析,整体网络结构由N个block组成,模块间以及模块内卷积间进行密集连接,
同时在每个模块处理时都加入最初的雨图,每个block之后都将学习到的负残差进行去除,
对每个中间模块都进行L2+SSIM的监督,并将每个中间模块的输出进行最终的特征融合,得到最终的去雨结果。
具体实现:
1、残差特征复用
为了解决反向传播中的梯度消失问题,人们提出了一种shortcut方法来稳定深度残差网络中的梯度。
通过假设残差映射比原始的未引用映射更容易学习,残差网络明确地学习了几个堆叠层的残差映射。
有了这样的策略,深层神经网络可以很容易地训练,因此ResNet在许多任务上取得了令人印象深刻的表现。
同时,还提出了一种将特征图从上到下进行密集连接的方法,可以缓解梯度消失问题,减少模型参数的数量。
它可能被解释为不需要重新学习冗余的特性。
将密集连接引入到回归任务,发现有利于长期记忆和中高频信息的恢复。
在本文中,我们采用全局残差学习,在每个块上有一个很长的shortcut,以简化学习过程。
每个块由多个卷积层组成,使用Leaky Rectified Linear Units ,以此作为基准模块。
但是简单的级联无法获取良好的结果,可能是因为较深的block无法提取新的雨纹,且较低层block的中间重建包含的价值信息已经丢失。
于是将之前block的信息整合到更深的block,进行信息补偿,进一步增强高频信号。
这里是网络框架图中的从原始雨图到每个模块的shortcut连接,进行信息补偿。
2、递归计算
在每个递归单元,采用两个卷积操作。
为了解决梯度消失的问题,将首次特征提取Conv+LReLU 结构得到的输出特征图传递给所有递归单元的输出。
这里主要在网络结构中体现在模块内的递归计算中。
3、Inter-block Ensemble
模块内集成:
前人研究了集成了学习的思想,集成学习结合预测器而不是选择单一的预测器,集成学习也被引入到神经网络中以提高性能。
在一个简单的投票方案中华集成了一组神经网络,根据其平均结果对最终输出进行预测。
本文中则是将每个块的中间输出进行整合,形成最佳的重构,并通过连接进行聚合。
在网络结构中主要体现在最终merge模块那里。
4、整体网络架构
5、损失函数
由于雨纹与物体边缘和背景场景混合,通过简单地优化 L2 损失函数很难区分雨纹和物体结构,往往会导致模糊的重建。
本文采用了L2 + SSIM损失:
如果ResGuideNet包含M个block,则包含M+ 1个损失函数:
其中L Merge是之前的所有中间输出的最终重建融合损失,与L Bk形式相同。