《SRN-DeblurNet:Scale-recurrent Network for Deep Image Deblurring》论文笔记

代码地址:SRN-DeblurNet

1. 概述

导读:图像去模糊是从粗糙到精细(coarse-to-fine)的过程,在传统方法与基于深度学习的方法中,一般使用金字塔结构中不同分辨率逐渐去重建得到清晰的图像,这篇文章也是使用这样的方式从而提出了一个新的模糊去除方法Scale-recurrent Network(SRN-DeblurNet)。相比一些现有的方法其具有结构简单、参数量少、且容易训练的特点,性能也是比较好的。

下图2中的前3幅图展示了图像处理的不同CNN网络结构,图(a)中是经典的U型结构,这个结构是文章算法采用了的;图(b)是级联形式的网络,文章采用参数共享的网络来减少参数与训练的难度,此外文章在级联出使用LSTM之类的网络进行特征提取,更好重建清晰图;图(c)是使用膨胀卷积的网络,这样回增大网络的感受野。而文章是将这些网络设计中的优点集成,从而得到这篇文章的网络结构SRN,见图(d)所示。
在这里插入图片描述
文章中的方法与其它的一些方法进行对比,其结果见图1所示,可以看出其重建的效果还是不错的。
《SRN-DeblurNet:Scale-recurrent Network for Deep Image Deblurring》论文笔记_第1张图片

2. 网络设计

2.1 网络结构

文章的网络结构见图3所示,它是一个由多个尺度图像输如构建的多层网络,类似于构建一个重构金字塔,逐级优化从而得到最后的重建清晰图。具体的网络结构见具体原文所示。
在这里插入图片描述

2.2 Scale-recurrent Network(SRN)

在网络中的中间数据( h i h^i hi)与输出数据( I i I^i Ii),其重构的数学表达为:
在这里插入图片描述
其中, i = 1 i=1 i=1代表的是最好的尺度,也就是分辨率最大的层级, B i , I i B^i,I^i Bi,Ii是不同层级的模糊图与重建之后的图像, N e t S R Net_{SR} NetSR是重建网络, θ S R \theta_{SR} θSR是网络中的参数。
在公式1中已经描述了网络的大致结构,除此之外网络还有一些可以灵活设计的部分:

  • 1)网络中的循环网络部分,可供选择的有RNN、LSTM、GRU,文章里面从实际的效果上选择的是ConvLSTM;
  • 2)对于上采样操作的选择,可选的有deconvolution layer、sub-pixel convolution与图像resize,文章里面选用的是双线性差值方式;

2.3 使用ResBlocks的编解码器

编解码网络
编解码结构的U型网络在实际中有广泛使用,但这样的结构对于这篇文章所要处理的任务来说就有点并不是适合,主要的原因有:

  • 1)对于去模糊的任务,感受野需要很大才能处理严重模糊的情况,这就导致了需要增加网络的层数,但会带来大量的参数与中间特征,而且中间的特征分辨率过小也无法有效复原清晰图像;
  • 2)在编解码器中添加过多的卷积操作会使得网络转换的效率下降;
  • 3)文章的结构中间采用了循环网络;

编解码器中的ResBlock
对于上面|问题文章设计了两个基础网络block:Encoder ResBlocks(EBlocks)Decoder ResBlocks(DBlocks),他们两个是呈现相互对称的形式,这些模块的stride为2。
对于网络引入循环网络,这里将公式1的描述进行了修改,则添加了循环网络的描述为:

在这里插入图片描述

2.4 网络的损失函数

网络的损失函数采用的是 L 2 L_2 L2损失函数,这个损失函数在一些精度要求不高的场景下可以使用,其固有的性质会使得重建结果模糊化,丢失高频信息,其损失函数定义为( k i = 1.0 k_i=1.0 ki=1.0):
在这里插入图片描述

3. 实验结果

网络的总体性能:
在这里插入图片描述
多尺度重建对于性能的影响:
在这里插入图片描述

你可能感兴趣的:(图像去模糊,SRN-DeblurNet)