3、FSRCNN
本文旨在加速SRCNN,提出了一个compact hourglass-shape 的CNN结构--FSRCNN,主要在三个方面进行了改进:1)在整个模型的最后使用了一个反卷积层放大尺寸,因此可以直接将原始的低分辨率图像直接输入到网络中,而不需要像SRCNN一样先通过bicubic方法放大尺寸。2)改变特征维数,使用更小的卷积核和使用更多的映射层。3)可以共享其中的映射层,如果需要训练不同上采样倍率的模型,只需要fine-tuning最后的反卷积层。
由于FSRCNN不需要在网络外部进行放大图像尺寸的操作,同时通过添加收缩层和扩张层,将一个大层用一些小层来代替,因此FSRCNN与SRCNN相比有较大的速度提升。FSRCNN在训练时也可以只fine-tuning最后的反卷积层,因此训练速度也更快。FSRCNN与SCRNN的结构对比如图4所示。
图4 该图显示了SRCNN和FSRCNN的网络结构。FSRCNN主要在三个方面与SRCNN不同。首先,FSRCNN采用原始的低分辨率图像作为输入,没有进行双三次插值。在网络的末端引入了一个解卷积层来进行上采样。第二,SRCNN中的非线性映射步骤被FSRCNN中的三个步骤所取代,即收缩、映射和扩展步骤。第三,FSRCNN采用了更小的滤波器尺寸和更深的网络结构
FSRCNN的结构如图4下半部分所示。整个网络可以被分解为5个部分:特征提取、压缩、映射、扩展、反卷积。其中前四部分都是卷积层conv(fi,ni,ci),第五部分是反卷积层deconv(fi,ni,ci),其中,fi,ni,ci分别为核尺寸、核数量、核通道。作者将网络中的变量分为敏感变量和不敏感变量(敏感是指微小改变即可对网络结果造成很大影响),其中不敏感变量可以预设,而敏感变量则需根据实验比较得出其值。
特征提取:这部分是和SRCNN相似的,不同点在于FSRCNN不经过对LR图像的插值,而是直接从LR图像提取子图块信息。若输入图像为灰度图像,则核深度为1,而核的数量决定了该层卷积输出的特征图的维度d。后续会将特征图送入真正的SR过程,所以维度d至关重要,d是第一个敏感变量,需要实验对比得出。该层可记为conv(5,d,1)。
压缩:这部分主要考虑到SRCNN中直接在高维特征图上对LR做SR,先对LR图像通道数进行减小,然后在低维LR特征图进行SR操作,这样会减少运算参数,最后再对生成的SR图像进行升维操作。使用s个1 X 1 大小的滤波核,对来自特征提取层的d维图像进行降维处理(从d降到s),s是第二个敏感变量,这可以为后续的SR操作减少参数量。该层可记为conv(1,s,d)。
非线性映射:这部分最重要的两个参数为特征图的通道数(d,即核的数量)和深度(卷积层的层数m,m是第三个敏感变量),深度m决定了SR的精度和复杂度。卷积核的尺寸为3X3,因此该部分可记为mXconv(3,s,s)。
扩展:扩展部分使用d个1X1大小的核,以期恢复到压缩前的图像形状。压缩、非线性映射、扩展这三部分是对称的。扩展部分可记为conv(1,d,s)。
反卷积:可视为卷积的逆操作,可以将小尺寸的图像恢复成大尺寸的图像。参照图5,通过在deconv前移动一个步长,得到deconv后移动的两个步长的区域,这样就可以实现对图像放大2倍的操作了。为了保持对称结构,需要采用9X9大小的滤波器。该层可记为deconv(9,1,d)。反卷积不同于传统的插值方法,传统的方法对所有的重建像素都有一套共同的重建公式,而反卷积的核需要学习得到,它能够针对具体的任务得出更精确的结果。
图5 FSRCNN由卷积层和反卷积层组成
PReLU:直接给出公式f(xi) = max(xi,0) + ai*min(0,xi),在原来relu 的基础上,对负半轴的梯度也能激活(即使很小),消除了部分梯度无法激活的情况。
全局结构:Conv(5, d, 1) - PReLU - Conv(1, s, d)-PReLU - m×Conv(3, s, s) - PReLU-Conv(1, d, s) - PReLU - DeConv(9, 1, d)。从全局来看,有三个参数d、s、m影响着网络的性能和速度,所以将网络记为FSRCNN(d,s,m),计算复杂度可由下式表示:
当前SOTA!平台收录FSRCNN共8个模型实现。
项目 | SOTA!平台项目详情页 |
FSRCNN |
前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/fsrcnn |
4、 ESPCN
在SRCNN和DRCN中,低分辨率图像都是先通过上采样插值得到与高分辨率图像同样的大小,再作为网络输入,意味着卷积操作在较高的分辨率上进行,相比于在低分辨率的图像上计算卷积,会降低效率。本文提出一种在低分辨率图像上直接计算卷积得到高分辨率图像的高效率亚像素卷积神经网络(efficient sub-pixel convolutional neural network,ESPN)。
图6. ESPN有两个卷积层用于提取特征图,还有一个亚像素卷积层将LR空间的特征图聚合起来,并在一个步骤中建立SR图像
ESPN的核心概念是亚像素卷积层(sub-pixel convolutional layer)。如上图所示,网络的输入是原始低分辨率图像,通过两个卷积层以后,得到的特征图像大小与输入图像一样,但是特征通道数量为r^2(r是图像的目标放大倍数)。将每个像素的r^2个通道重新排列成一个r x r的区域,对应于高分辨率图像中的一个r x r大小的子块,从而将大小为r^2 x H x W的特征图像重新排列成1 x rH x rW大小的高分辨率图像。这个变换虽然被称作sub-pixel convolution, 但实际上并没有卷积操作。通过使用sub-pixel convolution, 在将图像从低分辨率到高分辨率放大的过程中,插值函数被隐含地包含在前面的卷积层中,可以自动学习而得到。只在最后一层对图像大小做变换,前面的卷积运算由于在低分辨率图像上进行,因此效率会较高。
首先将一个l层卷积神经网络直接应用于LR图像,然后利用一个子像素卷积层将LR特征图放大,生成SR图像I^。对于一个由L层组成的网络,前L-1层可以描述如下:
在LR空间中,一个跨度为1/r的卷积与一个大小为ks、权重间隔为1/r的滤波器Ws进行卷积,能够激活Ws的不同部分。落在像素之间的权重没有被激活,不需要计算。激活模式的数量正好是r^2。每个激活模式,根据其位置,最多有[ks/r]^2个权重被激活。在整个图像的滤波卷积过程中,根据不同的子像素位置,这些模式被周期性地激活:mod (x,r)、 mod (y,r) w,其中x,y是HR空间中的输出像素坐标。本文提出了一种有效的方法来实现上述操作,当mod(ks,r)=0时:
因此卷积算子W_L具有n_L-1×r^2C×k_L×k_L的形状。请注意,我们不对最后一层的卷积的输出施加非线性约束。当k_L = k_s/r和mod (k_s, r) = 0时,它等同于LR空间中的子像素卷积。将新层称为亚像素卷积层,由此,网络称为高效亚像素卷积神经网络(ESPN)。最后一层从LR特征图中直接生成HR图像,每个特征图都有一个放大的滤波器。
最终ESPN网络目标函数为:
当前SOTA!平台收录ESPCN共14个模型实现。
项目 | SOTA!平台项目详情页 |
ESPCN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/espcn |