SRCNN、DRCN、FSRCNN、ESPCN、SRGAN、RED…你都掌握了吗?一文总结超分辨率分析必备经典模型(一)
机器之心专栏
本文将分 3 期进行连载,共介绍 16 个在语音识别任务上曾取得 SOTA 的经典模型。
第 1 期:SRCNN、DRCN、FSRCNN、ESPCN、SRGAN、RED
第 2 期:VDSR、DRRN、LapSRN、RCAN、DSRN
第 3 期:SFT-GAN、CSRCNN、CSNLN、HAN+、Config (f)
您正在阅读的是其中的第 1 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
---|---|---|
SRCNN | https://sota.jiqizhixin.com/project/srcnn 收录实现数量:57 支持框架:PyTorch、TensorFlow、MindSpore | Image Super-Resolution Using Deep Convolutional Networks |
DRCN | https://sota.jiqizhixin.com/project/drcn 收录实现数量:1 支持框架:TensorFlow | Deeply-Recursive Convolutional Network for Image Super-Resolution |
FSRCNN | https://sota.jiqizhixin.com/project/fsrcnn 收录实现数量:8 支持框架:PyTorch、TensorFlow | Accelerating the Super-Resolution Convolutional Neural Network |
ESPCN | https://sota.jiqizhixin.com/project/espcn 收录实现数量:14 支持框架:PyTorch、TensorFlow | Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network |
SRGAN | https://sota.jiqizhixin.com/project/srgan 收录实现数量:4 支持框架:PyTorch、TensorFlow | Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network |
RED | https://sota.jiqizhixin.com/project/red30-2 收录实现数量:13 支持框架:TensorFlow | Image Restoration Using Convolutional Auto-encoders with Symmetric Skip Connections |
近年来,随着深度学习技术的快速发展,基于深度学习的SR模型得到了快速发展,并在SR的各种基准上取得了最先进的性能。各种各样的深度学习方法已经被应用于SR任务,从早期的基于卷积神经网络(CNN)的方法到最近使用的生成对抗网络的SR方法。一般来说,使用深度学习技术的SR方法在以下主要方面有所不同:不同类型的网络架构、不同类型的损失函数、不同类型的学习原理和策略等。
超分辨率分析可以分为视频超分辨率VSR(Video Super Resolution) 和单帧超分辨率SISR(Single Image Super Resolution),本文重点关注单帧超分辨率分析方法。本文聚焦于深度学习技术,回顾SISR中必备的TOP模型。
1、 SRCNN
本文首次提出将深度学习技术应用于SR,得到经典的SRCNN(Super-Resolution CNN)模型。SRCNN结构很简单,但是效果很好。计算效率高,速度快。对于一个LR图像,首先使用bicubic 插值到所需的尺寸得到图像Y,然后学习一个映射F,使得F(Y)尽可能和ground-truth接近。该方法的完整学习过程包含三步:1)Patch extraction and representation,从Y中提取patches并表示为高维向量;Non-linear mapping,将高维向量映射到另一高维向量;reconstruction,整合上述的high-resolution patch-wise representation。上述三个步骤组成了一个卷积网络。如图1所示:
图1 给定一个低分辨率的图像Y,SRCNN的第一个卷积层提取一组特征图。第二层将这些特征图非线性地映射到高分辨率的patch表示上。最后一层结合空间邻域内的预测,生成最终的高分辨率图像F (Y)
Patch extraction and representation。在图像恢复中有一个常用的策略就是从图像密集提取图像块,然后用一组预先训练好的基(PCA、DCT、Haar等)来表示。这等同于用一组滤波器对图像进行卷积,每个滤波器对应一个基。SRCNN的第一层可以如下表示:
其中,W1对应 n1个滤波器,每个滤波器大小为 c×f_1 ×f_1 ,其中,c是图像通道数,RGB就是3通道,灰度图像是单通道。f_1是滤波器尺寸。卷积之后就得到n1个特征图。接着对滤波器响应应用 ReLU,即 max(0,x)。
Non-linear mapping。经过上一步卷积,我们得到一个n1维特征向量,对应一个图像块,这一步,将一个n1维特征向量映射到一个n2维向量。对于大的滤波器,非线性映射不是对应图像块,而是对应特征图中的 “块”。这一步可以看做如下卷积:
Reconstruction。这一步就是对高分辨率图像块的权值平均,这个平均可以看做对一组特征图的一个预先定义的滤波器,使用下面的卷积表示:
在SRCNN中,上述三个步骤作为一个卷积网络共同训练。
当前SOTA!平台收录SRCNN共57个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
SRCNN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/srcnn |
2、 DRCN
SRCNN的层数较少,同时感受野也较小(13x13)。本文提出的DRCN (Deeply-Recursive Convolutional Network for Image Super-Resolution)使用更多的卷积层增加网络感受野(41x41),同时为了避免过多网络参数,使用递归神经网络(RNN)。网络的基本结构如图2,输入图像是原始LR图像经过插值上采样后的图像。
图2 DRCN架构
与SRCNN类似,DRCN分为三个模块,第一个是Embedding network,相当于特征提取;第二个是Inference network, 相当于特征的非线性变换;第三个是Reconstruction network,即从特征图像得到最后的重建结果。其中的Inference network是一个递归网络,即数据循环地通过该层多次。将这个循环展开,就等效于使用同一组参数的多个串联的卷积层。DRCN将每一层的卷积结果都通过同一个Reconstruction Net得到一个重建结果,从而共得到D个重建结果,再把它们加权平均得到最终的输出。另外,受到ResNet的启发,DRCN通过skip connection将输入图像与H_d的输出相加后再作为Reconstruction Net的输入(如图2所示),相当于使Inference Net去学习高分辨率图像与低分辨率图像的差,即恢复图像的高频部分。
以上得到的Basic Model 虽然简单且功能强大,但作者发现训练深度递归网络非常困难(最多训练三个循环层)。作者分析有以下几点原因:1)梯度的消失和爆炸。梯度爆炸是由链式梯度的乘法性质造成的。对于深度递归,可以呈指数增长。梯度消失问题正好与梯度爆炸相反。梯度呈指数级的速度到零向量。因此,梯度爆炸和消失的存在使深度递归网络掌握远距离像素信息间的关系非常困难。2)经过多次递归想要保留原始LR信息并不容易。在SR任务中,输出与输入非常相似,所以LR图像的信息非常重要,需要为后续更深的递归层保留输入图像的精确信息。3)存在一个寻找最优递归次数的问题。如果递归对于给定的任务来说太深,就需要减少递归的次数。寻找最优数需要训练许多具有不同递归深度的网络。
由此,作者提出了如下改进技术:1)Recursive-Supervision:监督每层递归,以减轻梯度消失/爆炸的影响。假设在推理层中卷积过程反复使用相同的卷积核,使用相同的重建层来预测每一次递归重建的SR图像。重建层输出D个预测图像,所有预测都在训练期间同时受到监督。将所有D个预测图像通过加权求和来计算最终输出(权重由网络学习得到)。通过递归减轻了训练递归网络的困难,通过反向传播将不同预测损失产生的反传梯度求和提供平滑效果,能够有效缓解梯度爆炸或消失。此外,由于监督能够利用所有中间层的预测信息,因此,对最佳递归次数选择的重要性降低了。2)Skip-Connection:对于图像重建任务,输入和输出图像高度相关,所以可以直接通过skip层连接将LR信息直接传输到SR重建层。改进后的Advanced Model如图3所示。
图3 (a): Advanced Model,带有递归监督和skip connection。重建网络是共享的,用于递归预测。使用中间递归的所有预测来获得最终的输出。(b): 将深度监督应用于Basic Model。与(a)不同的是,(b)中的模型使用不同的重建网络进行递归,并且使用了更多的参数。(c): (a)的扩展结构示例,没有参数共享(没有递归)。权重参数的数量与深度的平方成正比
当前SOTA!平台收录DRCN共1个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
DRCN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/drcn |
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 |
5、 SRGAN
深度卷积神经网络在单个图像实现超分辨率在速度和精度上取得了突破,但是仍然存在一个核心问题:当在放大因子下的超分辨率时,如何恢复细小的纹理细节?基于这些问题:本文提出了一种用于图像SR的生成对抗网络SRGAN(Super-Resolution Using a Generative Adversarial Network),并且根据GAN网络结构提出了一种新的视觉损失( perceptual loss),其中包含对抗损失(adversarial loss)和内容损失(content loss)。
图7. SRGAN的生成器和鉴别器网络结构,每个卷积层都有相应的核大小(k)、特征图数量(n)和步长(s)
如图7所示网络结构,在训练SRGAN的生成器网络过程中需要提供HR图像。首先对HR图像进行下采样得到相应的LR图像,然后将LR图像作为生成器的输入,训练生成器,使之输出对应的HR图像。作者提出用深度残差网络(ResNet)作为生成器的生成对抗网络,网络结构中存在很多的skip connection。为了区分真实的HR图像和生成的HR图像,还训练了一个鉴别器,使用了LeakeyReLU作为激活函数,网络层数从64到512,后面连接两个全连接层和一个sigmoid层,用来判断是否为同一图像的概率。
文章将代价函数改进为:
第一部分是基于内容的代价函数,第二部分是基于对抗学习的代价函数。基于内容的代价函数除了像素空间的最小均方差以外,又包含了一个基于特征空间的最小均方差,该特征是利用VGG网络提取的图像高层次特征:
对抗学习的代价函数是基于鉴别器输出的概率:
当前SOTA!平台收录SRGAN共5个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
SRGAN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/srgan |
6、 Red
本文提出了一个由对称的卷积层——反卷积层构成的网络结构,称为Red-Net(Residual Encoder-Decoder Networks)。如图8所示,其网络结构是对称的,每个卷积层都对应有反卷积层,卷积层将输入图像尺寸减小后,再通过反卷积层上采样变大,使得输入输出的尺寸一样。卷积层用于提取图像的特征,相当于编码的作用。而反卷积层用于放大特征的尺寸并恢复图像细节。每一组镜像对应的卷积和反卷积都由skip connection将两部分具有同样尺寸的特征进行相加操作后再输入到下一个反卷积层。这样的结构能够让反向传播信号能够直接传递到底层,解决了梯度消失问题,同时能将卷积层的细节传递给反卷积层,从而恢复出更干净的图像。与此同时,网络中有一条线是将输入的图像连接到后面与最后的一层反卷积层的输出相加,因此,整个模型架构中间的卷积层和反卷积层学习的特征是目标图像和低质图像之间的残差。
图8.网络整体结构。该网络包含对称卷积(编码器)和反卷积(去编码器)层。每隔几层(在本文实验中是两层)就有一个skip shortcuts,从卷积特征图到其镜像的反卷积特征图。卷积层的响应被直接传播到相应的镜像反卷积层,包括前向和后向传播
具体来说,各个组成部分的作用如下:
卷积:特征提取,随卷积进行,提取图像特征同时抑制噪声,经过多层卷积后,提取图像特征,同时降低噪声的影响。
反卷积:针对特征的上采样,完成由图像特征到图像的转换,由于利用的是过滤噪声后的图像特征,因此达到了降噪、图像修复的目的。
Skip connections:保留更多的图像细节,协助反卷积层完成图像的恢复工作;反向传播过程中的梯度反向,减少梯度消失,加快模型训练。
当前SOTA!平台收录RED共16个模型实现。
项目 | SOTA!平台项目详情页 |
---|---|
RED | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/red30-2 |
前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。
网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。
移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。
微信扫码关注该文公众号作者