本专栏由机器之心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)
您正在阅读的是其中的第 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 |
图像超分辨率(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、 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 |