最近人工智能课的作业做得是关于超分辨率重建的题目,所以借此机会对一些比较经典的 SR 方法做一个总结。写着写着发现太长了,还是分成上下两篇吧。
1.《Learning a Deep Convolutional Network for Image Super-Resolution》
SRCNN模型
论文链接:https://link.springer.com/chapter/10.1007/978-3-319-10593-2_13
项目链接:http://mmlab.ie.cuhk.edu.hk/projects/SRCNN.html
这篇文章和《Image Super-Resolution Using Deep Convolutional Networks》内容相同,只是后者的实验部分更详细。
算法流程:
- 先用双线性插值上采样,把图像变成期望的大小。
- 放入CNN中学习,三个卷积层分别对应如下的功能:
1) 特征提取
2) 特征映射(LR特征映射到HR特征)
3) 重建
网络模型:
损失函数:
MES(均方差)损失,计算公式如下:
2. 《Accelerating the Super-Resolution Convolutional Neural Network》
FSRCNN模型
论文链接:https://arxiv.org/abs/1608.00367
项目链接:http://mmlab.ie.cuhk.edu.hk/projects/FSRCNN.html
网络模型:(与 SRCNN 对比)
针对问题:
- 一般网络都直接将插值后的 LR 投入到网络中,这便带来复杂的计算开销,假设要放大 n 倍,那么计算复杂度则上升到了 n2;
- 非线性层映射的参数太过臃肿。
提出改进:
- 取消 ILR 输入,而是采用 LR 输入,在最后引用反卷积放大图像;
- 非线性映射改为:收缩(Shrinking)、映射(Mapping)、扩展(Expending)三步;
- 更小尺寸的滤波器和更深的网络结构。
其中,Shrinking 使用大小为 1×1 的卷积层,目的是减小特征的维数(通道数),提高学习效率。作者发现低维度特征的重建效果并不是特别好,因此通过 1×1 的卷积层对 HR 特征进行扩维,类似于Shrinking 的反操作。然后再进行重建。
3. 《Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network》
ESPCN模型
论文链接:https://arxiv.org/abs/1609.05158
全文翻译:http://www.jianshu.com/p/9d654bdbd5e2
项目链接(tensorflow):https://github.com/Tetrachrome/subpixel
网络模型:
图示的前 l-1 层为特征提取层,第 l 层为亚像素卷积层。通过亚像素卷积层生成 W×H×r2 的图像,即 r2 张亚像素图像。最后将这些亚像素图像按顺序重组,得到最终的 HR 图像。
4. 《Deeply-Recursive Convolutional Network for Image Super-Resolution 》
DRCN模型
论文链接:https://arxiv.org/abs/1511.04491
全文翻译:https://blog.csdn.net/weinidakaishijian/article/details/75565896
项目链接:https://cv.snu.ac.kr/research/DRCN/
网络模型:
- Embedding Net:相当于特征提取的作用
- Inference Net:递归网络
- Reconstruction Net:重建网络
主要贡献:
递归监督(recursive-supervision):训练递归网络也会出现梯度爆炸和梯度消失,所以使用递归监督。每一个循环子层的 loss 都会叠加到总 loss 上,从而成为一个有效的监督,也对梯度消失与爆炸有平滑作用。
跳跃连接(skip-connection):LR 图像和网络输出的HR 图像有很高的相关性,而随着递归网络深度加深学习不到这种线性映射,所以通过该技巧可以使用大部分低分辨率信息用于重建高分辨率图像。该网络学习的是 LR 与 HR 的残差(见下文)。
其中的 H1 到 HD 是 D 个共享参数的卷积层。DRCN将每一层的卷积结果都通过同一个Reconstruction Net得到一个重建结果,从而共得到D个重建结果,再把它们加权平均得到最终的输出。
5. 《Accurate Image Super-Resolution Using Very Deep Convolutional Networks》
VDSR模型
论文链接:https://arxiv.org/abs/1511.04587v1
项目链接:https://github.com/huangzehao/caffe-vdsr
网络模型:
SRCNN的问题:
- 训练层数少,没有足够的视野域;
- 训练太慢,导致没有在深层网络上得到好的效果;
- 不能支持多种倍数的高清化。
主要贡献:
- 增加网络层数,增大感受野;
- 使用残差网络,在增加网络层数的同时,提高学习率,加快了收敛速度;
- 数据融合,将放大不同倍数的数据集混合在一起训练得到一个模型,从而共享参数。