系列文章目录
第一课:【OpenMMLab】OpenMMLab概述
第二课:【OpenMMLab】人体姿态估计、关键点检测与MMPose
第三课:【openMMLab】MMPose 代码教程
第四课:【OpenMMLab】深度学习预训练与 MMPreTrain
第五课: 【OpenMMLab】MMPretrain 代码教程
第六课:【OpenMMLab】目标检测与MMDetection
第七课:【OpenMMLab】MMDetection 代码
第八课:【OpenMMLab】语义分割与MMSegmentation
第九课:【OpenMMLab】MMSegmentation 代码
视频教程:
https://www.bilibili.com/video/BV1hu4y1o7jU
什么是图像超分辨率
图像超分辨率:根据从低分辨率图像重构高分辨率图像
在低像素的图像中,信息是非常少的,补足其中缺失的高频信息是非常困难的
图像超分辨率的目标:
- 提高图像的分辨率
- 高分图像符合低分图像的内容
- 恢复图像的细节、产生真实的内容;双线性或双立方插值不能恢复图像的高频细节
图像超分辨率的应用:经典游戏高清重制、动画高清重置、照片修复、节约传输高清图像的带宽、民生领域
超分辨率的类型
单图超分的解决思路
- 基于已知数据学习高低分辨率图像之间的关系:先验知识
- 在符合先验知识的条件下恢复高清图像
稀疏编码 Sparse Coding
通过无监督学习方法,构建一组“基图像块”,使得图像中的任意一块区域可以由少数基图像块线性组合而成
缺点:即便学到了字典,对低分辨率图像块进行系数分解、得到系数仍然是一个相对复杂的优化问题。
训练和推理都很耗时
在推理阶段,基于字典求解系数涉及复杂的计算
深度学习时代的超分辨率算法
- 基于卷积网络和普通损失函数
使用卷积神经网络,端到端从低分辨率图像恢复高分辨率图像代表算法:SRCNN 与FSRCNN - 使用生成对抗网络
采用生成对抗网络的策略,鼓励产生细节更为真实的高分辨率图像代表算法:SRGAN 与 ESRGAN
SRCNN 2014
首个基于深度学习的超分辨率算法,证明了深度学习在底层视觉中是可行的
模型仅由三层卷积层组成,可以端到端学习,无需额外的前后处理
SRCNN的单个卷积层有明确的物理意义
第一层:提取图像块的低层次局部特征
第二层:对低层次局部特征进行非线性变换,得到高层次特征
第三层:组合邻域内的高层次特征,恢复高清图像
Fast SRCNN 2016
FSRCNN在SRCNN的基础上针对速度进行了改进
- 不使用插值,直接在低分辨率图像上完成卷积运算,降低运算量
- 使用1x1的卷积层对特征图通道进行压缩,进一步降低卷积的运算量
- 若干卷积层后再通过转置卷积层提高图像分辨率
次像素卷积
用于缓解转置卷积的棋盘效应
损失函数
均方误差 MSE
感知损失函数
比较恢复图像与原始高分图像的语义特征,并计算损失
语义特征的计算由预先训练的神经网络模型给出。
例如:使用在ImageNet数据集上预训练好的神经网络计算语义特征