VDSR、DRRN、LapSRN、RCAN、DSRN…你都掌握了吗?一文总结超分辨率分析必备经典模型(二)
机器之心 2023-04-16 13:05 发表于北京
以下文章来源于机器之心SOTA模型,作者机器之心SOTA模型
机器之心专栏
本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
本文将分 3 期进行连载,共介绍 16 个在超分辨率分析任务上曾取得 SOTA 的经典模型。
- 第 1 期:SRCNN、DRCN、FSRCNN、ESPCN、SRGAN、RED
- 第 2 期:VDSR、DRRN、LapSRN、RCAN、DSRN
- 第 3 期:SFT-GAN、CSRCNN、CSNLN、HAN+、Config (f)
您正在阅读的是其中的第 2 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
第 1 期回顾:SRCNN、DRCN、FSRCNN、ESPCN、SRGAN、RED…你都掌握了吗?一文总结超分辨率分析必备经典模型(一)
本期收录模型速览
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
VDSR | https://sota.jiqizhixin.com/project/vdsr收录实现数量:2支持框架:PyTorch、TensorFlow | Accurate Image Super-Resolution Using Very Deep Convolutional Networks |
DRRN | https://sota.jiqizhixin.com/project/drrn收录实现数量:1支持框架:TensorFlow | Image super-resolution via deep recursive residual network |
LapSRN | https://sota.jiqizhixin.com/project/lapsrn收录实现数量:1支持框架:PyTorch | Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution |
RCAN | https://sota.jiqizhixin.com/project/rcan收录实现数量:21支持框架:PyTorch、TensorFlow、MindSpore | Image Super-Resolution Using Very Deep Residual Channel Attention Networks |
DSRN | https://sota.jiqizhixin.com/project/dsrn收录实现数量:1支持框架:TensorFlow | Image Super-Resolution via Dual-State Recurrent Networks |
图像超分辨率(Super Resolution,SR)是指从低分辨率(Low Resolution,LR)图像中恢复高分辨率(High Resolution, HR)图像的过程,是计算机视觉和图像处理中一类重要的图像处理技术。SR在现实世界中有着广泛的应用,如医疗成像、监控和安全等。除了提高图像感知质量外,SR还有助于改善其他计算机视觉任务。一般来说,超分辨率分析是非常具有挑战性的,而且本身就是一个难题,因为总是有多个HR图像对应于一个LR图像。在已有文献中,研究人员提出了各种经典的SR方法,包括基于预测的方法、基于边缘的方法、统计方法、基于patch的方法和稀疏表示方法等。
近年来,随着深度学习技术的快速发展,基于深度学习的SR模型得到了快速发展,并在SR的各种基准上取得了最先进的性能。各种各样的深度学习方法已经被应用于SR任务,从早期的基于卷积神经网络(CNN)的方法到最近使用的生成对抗网络的SR方法。一般来说,使用深度学习技术的SR方法在以下主要方面有所不同:不同类型的网络架构、不同类型的损失函数、不同类型的学习原理和策略等。
超分辨率分析可以分为视频超分辨率VSR(Video Super Resolution) 和单帧超分辨率SISR(Single Image Super Resolution),本文重点关注单帧超分辨率分析方法。本文聚焦于深度学习技术,回顾SISR中必备的TOP模型。
1、 VDSR
VDSR( Very Deep Convolutional Networks SR)使用了一个非常深的卷积网络,灵感来自于Imagenet分类。作者发现,网络深度的增加导致了图像清晰度的显著提高。VDSR使用了20个权重层。通过在深度网络结构中多次级联小滤波器,有效地利用了大图像区域上的上下文信息。然而,在非常深的网络中,收敛速度成为训练过程中的一个关键问题。该文提出了一个简单而有效的训练程序,只学习残差,并使用极高的学习率。VDSR网络结构如图1。
图1 VDSR结构图
如图1,首先将图像进行插值得到LR图像,再将其输入网络。网络是基于VGG19的,利用了19组conv+relu层,每个conv采用的滤波器规格为3364。在卷积过程中,VDSR处理边缘像素采用了三种解决办法:1)限制核中心与边缘的距离;2)用0填充,通过公式计算padding宽度;3)用边缘像素填充,通过公式计算padding宽度。图9中所示VDSR共计D 层,其中,除了第一个和最后一层之外其它各层都是相同类型的,即,64 个大小为3 × 3 × 64的过滤器,每个过滤器运行在跨64个通道的3 × 3空间区域中(特征图)。第一层用于处理输入图像,最后一层则用于图像重建,由一个大小为3 × 3 × 64的单一滤波器组成。
假定一个训练集,我们的目的是学习模型预测值y^=f(x)
是对目标高分辨率图像的估计,损失函数:
在SRCNN中,输入的低分辨率图像必须通过所有层,直到它到达输出层,由此导致了严重的梯度消失/爆炸问题。作者引入了残差学习来解决这个问题。由于输入图像和输出图像非常相似,作者定义了一个残差图像r=y−x,其中大多数数值很可能是零或较小。我们想预测这个残差图像,损失函数变为:
其中,f(x)是网络预测。直接对残差图像进行建模,可以更快收敛,甚至有更好的精度。在网络中,这种改变展示在损失层。损失层有三个输入:残差估计、网络输入(LR图像)和真实的HR图像。损失计算为重建图像(网络输入和输出之和)与真实图像之间的欧式距离。利用基于反向传播的小batch梯度下降优化回归目标进行训练。作者设置动量参数为0.9,训练通过权重衰减(L2*0.0001)来规范化。
对于VDSR深度的训练还有一个问题:训练深的模型可能无法在现实的时间限制中收敛,作者分析,提高学习率以促进训练是一个基本的经验法则,但简单地增加学习率也会导致梯度消失或者梯度爆炸。因此,作者引入一个可调整的梯度裁剪最大化地提高速度,同时抑制梯度爆炸。利用裁剪,使梯度限制在一定的范围之内。利用训练中常用的随机梯度下降算法,将学习率乘以调整步长。为了能最大化收敛速度,作者将学习率裁剪为[−Θ/γ,−Θ/γ],
其中,γ是当前的学习率。
当前SOTA!平台收录VDSR共2个模型实现。
项目 | SOTA!平台项目详情页 |
VDSR | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/vdsr |
2、 DRRN
本文提出的方法可以在一定程度上看做是DRCN的改良版,保留了DRCN的全局skip connection和循环块提升网络深度但限制参数量的思想,增加了ResNet的局部skip connection的思想。
图2 (a)ResNet简化结构。绿色的虚线框表示一个残差单元。(b) VDSR。紫色的线指的是一个全局身份映射。(c) DRCN。蓝色虚线框指的是一个递归层,其中卷积层(浅绿色)共享相同的权重。(d) DRRN。红色虚线框指的是由两个残差单元组成的递归块。在递归块中,残差单元中的相应卷积层(浅绿色或浅红色)共享相同的权重
具有预激活结构的残差单元表述为:
作者不直接使用上述残差单元,而是令身份分支和残差分支的输入不同,将残差单元重构为:
图3 递归块结构。U表示递归块中的残差单元数
进一步,作者在递归块的开始引入一个卷积层,然后将几个残差单元堆叠起来。如图11所示。令B为递归块的数量,x_b-1和x_b(b=1,2,...,B)为第b个递归块的输入和输出,(H_b)^0=fb(x_b-1)为x_b-1通过第一个卷积层后的结果,其函数为fb。第u个残差单元的结果是:
第b个递归块x_b的输出是:
最后,简单地堆叠几个递归块,然后用卷积层重建LR和HR图像之间的残差。将残差图像添加到来自输入LR图像的全局身份映射中。图12给出DRRN的整个网络结构。
图4 B=6、U=3的DRRN网络结构示例。这里,"RB "层是指递归块
当前SOTA!平台收录DRRN共1个模型实现。
项目 | SOTA!平台项目详情页 |
DRRN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/drrn |
3、LapSRN
本文提出了Laplacian金字塔超分辨率网络(Laplacian Pyramid Super-Resolution Network,LapSRN)来逐步重构高分辨率图像的子频带残差(sub-band residuals)。在每个金字塔的层,将低分辨率特征图作为输入,预测高频残差(high-frequency residuals),并使用反卷积(transposed convolutions)来进行向上采样到finer level。LapSRN并没有将双三次插值(bicubic interpolation)作为预处理步骤,从而减小了计算的复杂性。作者引入了一个强大的Charbonnier损失函数对所提出的LapSRN进行监督,实现了高质量的重建。网络通过渐进的重构,在一个前馈的过程(feed-forward)中生成了多尺度预测,从而促进了资源感知的应用。
图5 SRCNN、FSRCNN、VDSR、DRCN和LapSRN的网络结构。红色箭头表示卷积层。蓝色箭头表示转置的卷积(上采样)。绿色箭头表示元素相加运算,橙色箭头表示递归层
如图5(e)所示,在拉普拉斯金字塔框架的基础上构建网络。模型将LR图像作为输入(而不是LR图像的放大版本),并逐步预测log_2S水平的残差图像,其中,S是比例因子。例如,该网络由3个子网络组成,用于处理比例因子为8的LR图像。模型有两个分支:(1)特征提取(2)图像重建。
特征提取。在第s层,特征提取分支由d个卷积层和一个转置卷积层组成,对提取的特征按2的比例进行上采样。每个转置的卷积层的输出连接到两个不同的层:(1)用于重建s级残差图像的卷积层。(2)用于提取更高级别s+1特征的卷积层。作者在较低的分辨率下进行特征提取,并在较高的分辨率下生成特征图,只用一个转置的卷积层。与现有的在较高分辨率下进行所有特征提取和重建的网络相比,该网络设计大大降低了计算的复杂性。请注意,较低层次的特征表征与较高层次的特征表征是共享的,因此可以增加网络的非线性,以学习更高层次的复杂映射。
图像重建。在第s层,输入图像通过一个转置的卷积(上采样)层以2的比例进行上采样。使用双线性核初始化该层,并允许它与所有其他层联合优化。然后,上采样的图像与来自特征提取分支的预测残差图像相结合(使用元素相加),生成一个高分辨率的输出图像。然后,s级的输出HR图像被送入s+1级的图像重建分支。整个网络是一个级联的CNN,每一级都有类似的结构。
本文采用的损失函数如下:
当前SOTA!平台收录LapSRN共1个模型实现。
项目 | SOTA!平台项目详情页 |
LapSRN |
前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/lapsrn |