【读论文】LapSRN

这篇论文只强调一个事儿,我这个超分辨率又快又好!

论文全文名称为《Fast and Accurate Image Super-Resolution with Deep Laplacian Pyramid Networks》,翻译过来就是基于深度拉普拉斯金字塔网络又快又好的图像超分辨率,emmmmmm…,这论文名字还是挺勇敢。我们后文中简称它为LapSRN

贴出来它的网站(对,它有一个主页):http://vllab.ucmerced.edu/wlai24/LapSRN/

竟然还拿我赫敏做例子(不要翻,这是一个GIF),这篇论文不看是不行了。(但是不应该是倍数越大越清晰么。。)

冷静,冷静一下。这篇论文怎么个不一样呢?我们来看一下摘要部分,现有的卷积神经网络需要大量的参数以及巨大的计算量来生成产分辨率结果,根本做不到实时。在这篇论文中,我们提出了一种深度拉式金字塔模型的超分辨神经网络,从而达到了一个又快又好的结果。从多层金字塔结构中对超分辨进行重建,取代了以前的神经网络首先将低分辨率图像插值放大然后再进行生成的方法。我们用了一个叫做 robust Charbonnier 的损失函数(百度、Bing对于这个损失函数只甩出了它的论文,一点介绍都木有)。然后我们在金字塔层之间的递归层中共享了一部分参数,因此减少了参数量。在测试数据集中与state-of-art的不相上下的结果,但是!我们快。

主要贡献

首先还是不用读之目前的论文都是垃圾系列,为了解决这些垃圾论文的问题,我们提出了一系列的方法:

  1. 精准:与之前论文直接插值放大图像然后进行重建不一向,我们是用卷积层和上采样滤波器逐层放大,这个结构可以感知更多的信息。
  2. 快速:我们相比于以cnn为基础的网络都要快,就像FSRCN一样的效果(还有这种引用论文的操作?)
  3. 改进的结构:首先,我们在金字塔各级之间共享参数,减少了73%的参数并且保证了更好的效果;其次,我们运用了类似残差的网络结构,使得我们能够搭建84层的神经网络;最后,我们在一个模型中实现了不同尺度的放大,我们称之为MS-LapSRN

详细来说

接下来我们将从网络结构、参数共享、损失函数、多尺度模型和网络训练这几部分进行介绍。

神经网络模型结构

我们的模型建立在拉普拉斯金字塔结构的基础上,输入为低分辨率图像,而不是插值填充后的图像。模型由两个部分组成,特征提取和图像重建。

上图中(a)是首先进行上采样,然后进行卷积等操作,(b)首先进行一系列操作提取特征,然后再进行上采样,(c)是我们论文提出的方案,红线是卷积层,蓝线是上采样层,绿色是Element-wise层,所以我们的模型由两个分支组成,同步进行。

  1. 特征提取分支:通过卷积等建立非线性映射,然后上采样得到图。
  2. 图像重建分支:首先进行上采样,然后把特征提取得到的图直接Element-wise add到这个图中,也就相当于两个图进行融合。

和LAPGAN不同的点是:我们的图是上采样后直接传下来,LAPGAN是上采样再经过卷积以后再传下来。至于为什么这样做,原文的话是这样的:Our network design effectively alleviates the computational cost and increases the size of receptive fields,大概意思是减少了计算量并增加了感受野,我是没能理解这其中的道理。

参数共享

由于逐级放大过程中每一个放大块的网络结构都是一样的,所以我们共享了feature embedding、上采样、卷积的参数,节省了大量的参数和计算过程。

上图中是详细的网络结构,每一个放大块都是由feature embedding、上采样(反卷积层)、卷积层组成的,每块的结构相同,参数值很接近,所以我们共享了这部分的参数,也就是每个块的参数都一样。

为了得到更深的卷积神经网络、避免梯度爆炸的问题,我们还是采用了残差网络,不细说了,大家都一样。

损失函数

我们舍弃了L2和L1这两种损失函数,因为他们都会造成图像过于平滑的问题,我们采用的损失函数是一个很稳定的损失函数 Charbonnier loss function,总体的函数我直接截图了,论文中也并没有提及这个损失函数为什么好用,感兴趣的可以去翻这个损失函数的论文。

英文部分是公式中参数的解释,很好懂,不翻译了(主要是因为不会在markdown中写公式[捂脸])。

多尺度训练

这里的多尺度在我的理解看来就是用逐级放大,每个都扩大2倍,而不是采用先用插值放大到单尺度的图像再更改图像信息。多尺度是什么意思呢?在我看来就像金字塔一样,逐级放大,放大2倍,4倍,8倍等等,每一个放大倍数就是一个尺度。

最后谈谈

接下来就是模型训练参数设置细节什么什么的,不提了。放出结果看看

看起来还是不错,这只是生成图像的质量,在速度方面还要快很多,由于参数共享的原因,模型参数量大幅下降。其实这篇文章在我看来干货很多,因为逐级放大这个事儿跟我的思路很像,我是苦于没有找到合适的方法进行描述,这下知道方法了。还有一个很重要的是参数共享,可以看到参数共享节省了大量的参数,模型就会很小。我对参数共享这个保留意见,不知道不共享参数的话会不会好很多。

总而言之,这是我最近读到的最复杂的一篇论文,复杂的结构让我很安心,太简单了总觉得不靠谱,可能这是病吧。

最后还是

LOVE AND PEACE