图像超分辨率【MMagic理论基础】

目录

课程主要内容

1. 图像超分辨率 Super Resolution

图像超分的解决思路:

1.1 经典方法:稀疏编码

深度学习时代的超分辨率算法

1.2 基于卷积网络SRCNN和FSRCNN

1.2.1 SRCNN

性能评价

1.2.2 FSRCNN  Fast SRCNN 2016  <--fast rcnn:

1.2.3 SRResnet 2016

1.3 损失函数与模型评估in super res

感知损失 VS 均方误差

感知损失函数:特征重构损失函数

模型评估:PSNR

1.4 对抗生成网络GAN简介

应用

什么对抗生成网络

GAN原理

图像数据在高维空间中的分布

GAN应用

1.5 超分辨率模型中的GAN: SRGAN 2017、ESRGAN 2018 

1.5.1 SRGAN

1.5.2 ESRGAN 2018

1.6 视频超分辨率介绍

视频还原的典型流程 

1.6.1 EDVR 2019

可变形卷积

参考资料


课程主要内容

1. 图像超分辨率 Super Resolution

图像超分辨率的目标:

  • 提高图像的分辨率
  • 高分图像符合低分图像的内容
  • 恢复图像的细节,增加真实的内容

以往未使用AI技术时通过双线性或双立方插值来提高图像的分辨率,但是只能简单地提高分辨率并不能生成真实的内容,不能恢复图像的高频细节恢复图像的细节 

图像超分辨率的应用:

  • 经典游戏的高清重制
  • 老旧照片修复
  • 老动画高清重制
  • 节约传输高清图像的带宽(服务器存储低分辨率图像,到用户设备时通过超- 分辨率任务还原回高清图像,google就是这样做的)
  • 民生领域:医疗影像、卫星影像、监控系统( 车牌或人脸 )、空中监察。

 

图像超分的解决思路:

  • (1)基于已知数据学习高低分辨率图像之间的关系:先验知识
  • (2)在先验知识的约束下,恢复高清图像

1.1 经典方法:稀疏编码

通过无监督学习从图像中获取一组图像基块,使得图像中任意一个区域可以由数个基块图像线性组合而成
训练过程中通过低分辨率的学习高分辨率的稀疏矩阵
推理过程中通过低分辨率转化为高分辨率的基块图像,然后再组成高分辨率的图像

缺点:即便已经学习出稀疏矩阵,对低分辨率和高分辨率的权重和系数的学习仍然是一个相对复杂的优化问题难以收敛,训练和推理都十分耗时

深度学习时代的超分辨率算法

改进:香港中文CNN

 基于卷积网络和普通损失函数

使用卷积神经网络,端到端从低分辨率图像恢复高分辨率图像

代表算法 : SRCNN 与 FSRCNN

使用生成对抗网络

采用生成对抗网络的策略,鼓励产生细节更为真实的高分辨率图像

代表算法: SRGAN 与 ESRGAN

1.2 基于卷积网络SRCNN和FSRCNN

1.2.1 SRCNN

SRCNN先对低分辨率的图像进行双线性插值使其大小和高分辨率一致,再输入到卷积网络

SRCNN 的单个卷积层有明确的物理意义

  1. 第一层: 图像块特征提取和表示:提取图像块的低层次局部特征,在ImageNet数据集上训练的SRCNN可以学习到不同的低层次特征所对应的卷积核。

  2. 第二层: 非线性映射:对低层次局部特征进行非线性变换,得到高层次特征。非线性映射可以有很多层,但实验表明只应用单层卷积层就可以达到较好的效果

  3. 第三层: 高分辨率图像重构:组合邻域内的高层次特征,恢复高清图像。输入是第二层的特征图,第三层的卷积核对应高分辨率基底,用F2(Y)中的系数对高分基底加权求和即可得到高分图像块。第三层卷积完成这个过程。

性能评价

峰值信噪比(peak signal to noise ratio, PSNR)

最大信号能量与平均噪声能量的比值,值越大,表明恢复效果越好。

SRCNN缺点

SRCNN先在低分图像上进行插值,然后再高分下进行卷积。

由于进行插值时不产生额外的信息,因此产生了一定的冗余计算,所以SRCNN的速度非常慢,达不到实时的标准

1.2.2 FSRCNN  Fast SRCNN 2016  <--fast rcnn:

在SRCNN的基础上做了改进

  • 不使用双线性插值放大图像,而是改用转置卷积,直接在低分辨率图像上进行运算。
  • 使用1x1的卷积核对特征通道进行压缩,降低卷积的运算量
  • 若干卷积层后通过转置卷积提高图像的分辨率

优点:
(1)仅用CPU便可达到实时推理的标准
(2)训练方便,处理不同的上采样倍数时,只需微调转置卷积的权重即可

缺点:
其实是转置卷积的缺点,当卷积核的size和步长stride不等时,便会在不同的位置叠加不同次数的合成,造成不均匀的重叠现象,称为棋盘格效应,降低生成高分辨率图像的质量。

棋盘格效应往往出现在图像上比较强烈的地方。

棋盘效应优化:有两种方法可以处理
(1)先对特征图进行最近邻插值或者线性插值等上采样操作,放大特征图,在进行卷积,缩小到原来的输出尺寸
(2)次像素卷积提供了另一种上采样方案,先将原图卷积成 rxr 通道的特征图,再把每个位置的所有通道的特征图摊平成rxr面积的图像,这样便把原图放大r倍

1.2.3 SRResnet 2016

随着残差网络的发布,一些旧的模型也得到升级
将原来SRCNN的主干网络替换成残差模块便是SRResnet

1.3 损失函数与模型评估in super res

  • 逐像素计算:恢复图像和原始图像的每个像素值之间误差。
  • 感知损失函数:比较恢复图像和原始高分图像的语义信息。
  • 特征重构损失函数:直接计算特征图之间的欧式距离。

感知损失 VS 均方误差

MSE(Mean Square Error)逐像素计算恢复图像和原高分图像的平方误差

最小化算是函数即可鼓励网络完美恢复高分辨率图像

感知损失函数:特征重构损失函数

比较恢复图像与原始高分图像的语义特征,并计算损失
常见做法

是用一个在imagenet上训练好的vgg网络去获取恢复图像和原始高分图像的特征,然后计算损失
减少特征重构损失:输出图像在感知上与目标图像相匹配,不要求两者完全一致

模型评估:PSNR


峰值信噪比(Peak signal-to-noise ratio,PSNR)为最大信号能量与平均噪声能量的比值,值越大恢复效果越好

1.4 对抗生成网络GAN简介

之前介绍的都是监督学习,学习数据对之前的关系

而gan是一种无监督学习,学习的是数据结构的概率分布

应用


(1)gan生成逼真人脸

在这里插入图片描述


(2)使用gan转译图像

在这里插入图片描述


(3)使用gan进行超分辨率任务

在这里插入图片描述

什么对抗生成网络

对抗生成网络是一种基于神经网络的无监督学习模型,可以建模数据的分布,并通过采样生成新数据。

GAN原理

通过数据集训练出一个符合训练数据结构的概率分布G
然后通过任意的输入z从概率分布G上采集数据
在训练时,在引入一个判别网络来判断生成数据的真假

图像数据在高维空间中的分布

图像在高维空间是一个数据点。通过数学函数,可以将高维数据点映射到低维空间上,也可以从低维空间映射到高维空间。

映射函数G由神经网络构成。

GAN的优化
生成器希望样本输出都是真的
判别器则是希望生成器的输出都是假的,训练的样本都是真的

GAN应用

1.5 超分辨率模型中的GAN: SRGAN 2017、ESRGAN 2018 

前面介绍的SRCNN产生的图像过于平滑,而gan则是能生成细节更为丰富,更为真实的高清图像

1.5.1 SRGAN

在SRResNet的基础上改成gan的结构,便是SRGAN

和SRResNet是同一篇论文里提出来的,E-->Enhanced

SRGAN在训练时,同时优化三个损失

  • MSE Loss 鼓励恢复图像的像素值与高分图像相近
  • Perceptual Loss 鼓励恢复图像的高层特征与高分图像相近
  • Adversarial Loss 鼓励恢复图像更真实,细节更丰富

1.5.2 ESRGAN 2018

改进方案:

(0)使用RRDB(Residual in Residual Dense Block)替换原来时残差模块(RB,residual block)

因为RB的BN层在超分辨网络中会产生一些负面效果
引入三个dense block,block之间用一个衰减因子β链接,使得三个模块的输出都乘以β在输出到下一层,提高训练稳定性

(1)使用Ragan结构替换gan结构
ragan的判别器会判断真是图像是否比生成图像更真实,生成图像是否比真是图像更虚假

(2)使用非线性激活前的响应计算感知损失

  • 激活后的响应值更稀疏,削弱监督信号的强度
  • 使用激活后的响应会使得恢复图像在亮度上产生偏移

ESRGAN 评价

1.6 视频超分辨率介绍

视频还原的典型流程 

1.6.1 EDVR 2019

Enhanced Deformable networks, termed EDVR

https://xinntao.github.io/projects/EDVR

EDVR: Video Restoration with Enhanced Deformable Convolutional Networks

  • 将一帧图像和前后各一帧的图像以及经过下采样的真实图像一起送入网络
  • 先进行图像去模糊,利用光流进行图像对齐
  • 然后送卷积网络中提取特征,对两个图像的特征值做特征融合,再进行重建
  • 最后进行上采样获得该帧的高清的图像

可变形卷积

该卷积核中具备增加的偏移量,使得采样位置能够灵活变化

将参考帧与相邻帧拼在一起在送入卷积网络中得到这一帧的可学习的偏移量,再将偏移量送入可变形卷积网络中对相邻帧进行卷积,便可获得对齐后的帧

BasicVSR

参考资料

https://bbs.csdn.net/topics/616053009

https://bbs.csdn.net/topics/616004918

https://bbs.csdn.net/topics/616004222

https://bbs.csdn.net/topics/615984763

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Golang分辨率是指使用Golang编程语言实现的一种分辨率技术。分辨率是一种图像处理技术,旨在通过对低分辨图像进行处理,提高其分辨率和细节的清晰度。Golang作为一种高效且易于使用的编程语言,为实现分辨率算法提供了强大的支持。 在Golang中,可以利用其并发编程的特性,对图像进行并行处理,提高算法的运行效率。同时,Golang的标准库中也提供了丰富的图像处理技术和功能,如图像加载、图像缩放、像素操作等,为分辨率算法的实现提供了便利。 具体而言,实现Golang分辨率的步骤可以包括以下几个方面: 1. 图像加载和预处理:使用Golang的图像处理库,加载并预处理待处理的低分辨图像,如灰度化、降噪等。 2. 特征提取与匹配:通过在低分辨图像中提取特征,如纹理、边缘等,与高分辨图像进行匹配,建立转换模型。 3. 分辨率重建:利用得到的转换模型,对低分辨图像进行分辨率重建,提高图像的清晰度和细节。 4. 结果评估和优化:通过对重建后的图像进行评估,如PSNR、SSIM等指标,优化分辨率算法的效果。 在使用Golang进行分辨率的实现过程中,需要熟悉Golang的并发编程和图像处理特性,并调用相关库和函数完成各个步骤。另外,也可以结合机器学习和深度学习等技术,提高分辨率算法的效果和准确度。 总之,通过使用Golang编程语言,可以实现高效且准确的分辨率算法,为图像处理和分析领域带来更好的应用和效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值