Zhang, H., Dai, Y., Li, H., & Koniusz, P. (2019). Deep Stacked Hierarchical Multi-patch Network for Image Deblurring. Retrieved from http://arxiv.org/abs/1904.03468
本文提出一个深度堆叠的多尺度补丁网络,用于运动去模糊
目前的多尺度递归去模糊的模型存在两个问题:
该网络的优点:
网络结构如下,由4个层堆叠起来行程,每层都有编码器和解码器组成,中间是类似残差网络的结构。网络是从细分的patch逐渐网上计算,对应图上B4->B1这个过程。以B4为例,图片首先被分为不同的patch,输入编码器中,然后将每个patch仅限编码,然后将相邻两个进行连接操作(concatenation),这样就变成了4个patch,再通过解码器解码,的到的结果用 S 4 j S_{4j} S4j来表示。B4得出的结果就可以与叠加(加法操作),叠加之后的结果输入编码器,得到编码的结果,该编码结果与B4编码并连接操作后的特征进行叠加,将叠加后得到的结果每相邻两个patch进行连接操作,得到两个patch的特征…就这样一致迭代下去,最终得到网络预测,即整幅图片。最小化网络预测输出和GT的MSE,更新参数
b是编码器结构,a是解码器结构。编码器由15个conv层和6个残差和6个RELU模块组成的,解码器和编码器的结构是相似的,只不过将两个卷积层被反卷积层替换以生成图像。编码器和解码器的参数量只有3.6M,远远小于其他的网络,所以这个网络的运行速度很快。
下面得是一个1-2-4-8结构的网络,1表示 B 1 B_1 B1层的patch数,只有一个;2表示 B 2 B_2 B2层的patch数,为 1 × 2 = 2 1\times2=2 1×2=2个;同理,3,4表示 B 3 B_3 B3和 B 4 B_4 B4patch的数量,分别为 2 × 2 = 4 2\times2=4 2×2=4个, 2 × 8 2\times8 2×8个。当然,也可以增加网络的patch数,但实验证明再细化patch并不能提高效果。
首先将网络分级,分为4个级,用 i , i = { 1 , 2 , 3 , 4 } i, i=\{1,2,3,4\} i,i={1,2,3,4}表示。
将初始模糊图像输入表示为 B 1 B_1 B1, B i j B_{ij} Bij为第 i i i级的第 j j j个patch,如 B 4 B_4 B4中青色的patch可表示为 B 47 B_{47} B47。 其中 F i F_i Fi和 G i G_i Gi为 i i i级的编码器和解码器, C i j C_{ij} Cij为 B i j B_{ij} Bij经过解码器 G i G_i Gi输出, S i j S_{ij} Sij为 G i G_i Gi的输出patch。
从第4层开始,逐层往上运行。首先将模糊图片 B 1 B_1 B1分成8个不相交的patch,用 B 4 j B_{4j} B4j表示, j { 1 , . . . , 8 } j\{1,...,8\} j{1,...,8}
将输入的每个patch输入进编码器,得到输出结果 C 4 j C_{4j} C4j
将每两个相邻的pathc进行连接(concatenate)操作,如patch1与patch2,以此类推。最终得到4个patch,用 C 4 j ∗ C^*_{4j} C4j∗来表示。这么做的目的是为了和第三层进行叠加
第4层的经过解码器输出的结果用 S 4 j S_{4j} S4j表示,如下
第3层
首先将第4层的输入和第3层输入的模糊图片叠加(这里输入的模糊图片和第4层连接过后的尺度是一样的),将叠加后得到的特征输入编码器,得到一个输出 F 3 ( B 3 j + S 4 j ) \mathcal{F}_3(B_{3j}+S_{4j}) F3(B3j+S4j),将编码器得到的输出和第4层concatenate操作的特征图相加,如下式,得到第3层的特征图
如此迭代下去,最终和没有patch的图片( B 1 B_1 B1)叠加,得到网络的输出
最终得到的网络输出用 S 1 S_1 S1表示
L o s s Loss Loss计算的是 S 1 S_1 S1和 G T GT GT的MSE
下图上面的一种称为堆叠-DMPHN,下面的一种称为堆叠-VMPHN。这是将单个DMPHN网络按照两种不同的策略堆叠起来,用于提高网络的性能
堆叠实验的结果
从图中可以看到
这是在VedioDeblurring数据集和GoPro数据集进行实验, 得到的实验结果如下, 可以看到Stack(4)-DMPHN的性能都是最优的
为了使我们的网络兼容显著性检测任务,将输出通道修改为1进行灰度图像生成,并在VMPHN中禁用第1层输入与输出之间的残差连接。这是与其他方法的对比, 可以看出本文的方法的效果较好。显著性这块没有看过, 把论文结果贴在这
这个是在MSRA-B运行的结果
本文提出了多层堆叠的多尺度patch网络用于去除运动模糊, 可以实现实时处理(30fps, 1280*760,GPU)。本文采用了多层级联的方法, 从细粒度的patch到粗粒度patch, 使得网络能够能够提取到图片中更多信息, 通过逐层融合, 提高了网络的性能。通过对网络的叠加, 进一步提高了网络的性能。该网络不仅可以运用到运动去模糊,也可以运用到显著性检测任务上
网络主要有两点贡献: 1. 多层多patch网络模型, 2. 网络模型叠加, 主要贡献点在第一个上, 将下一层输出的特征与上一次输入图片叠加, 将下一层编码后的特征与上一层编码的特征叠加。但是为什么这么做是有效的, 文章中并没有指出。总得来说, 文章是用一个SPM思路来解决运动去模糊问题, 并取得了很好地效果