图像的超分辨率重建SRGAN与ESRGAN

article/2025/11/8 16:34:56

SRGAN

传统的图像超分辨率重建方法一般都是放大较小的倍数,当放大倍数在4倍以上时就会出现过度平滑的现象,使得图像出现一些非真实感。SRGAN借助于GAN的网络架构生成图像中的细节。

训练网络使用均方误差(MSE)能够获得较高的峰值信噪比(PSNR),但是恢复出来的图像会丢失图像的高频细节信息,在视觉上有不好的体验感。SRGAN利用感知损失(perceptual loss)对抗损失(adversarial loss)来提升输出图像的真实感。

MSE损失的计算:

          (1)

感知损失(perceptual loss):利用CNN提取的特征,通过比较生成图片经过CNN后的特征和目标图片经过CNN后的特征差别,使得生成的图片和目标图片在语义上更加相似。感知损失优化的是超分辨率模型的特征空间而不是像素空间。

文章中的代价函数改进为:

                                         (2)

第一部分是content loss 基于内容的代价函数,第二部分值基于对抗学习的代价函数。

基于内容的代价函数除了使用基于上述逐个像素空间的最小均方误差(MSE)以外,还使用了一个基于特征空间的最小均方误差,这个特征空间是利用VGG网络提取图像的高层次特征,具体方法如下:

                    (3)

其中i和j表示VGG19网络中第i个最大池化层(maxpooling)后的第j个卷积层得到的特征。

也就是说内容损失可以二选一:可以是均方误差损失MSE (公式1),也可以是基于训练好的以ReLu为激活函数的损失函数(公式3)

第二部分 是对抗损失,其计算公式如下:

                                                                      (4)

其中D_{\theta G}()是一个图像属于真实的高分辨率图像的概率。G_{\theta G}(I^{LR})是重建的高分辨率图像

 

训练参数和细节

采用大数据进行训练,LR是HR图像进行下采样获得的(下采样因子r=4的双三次核)

使用Adam优化,其beta=0.9,lr=0.0001,迭代次数为100000.

生成器网络中的残差块为16个。

最后,对内容损失分别设置成基于均方误差、基于VGG模型低层特征和基于VGG模型高层特征三种情况作了比较

结论:在基于均方误差的时候表现最差,基于VGG模型高层特征比基于VGG模型低层特征的内容损失能生成更好的纹理细节。

pytorch代码实现:https://github.com/aitorzip/PyTorch-SRGAN

训练方法: 构建网络----》 找个一个较为清晰的数据集-------》对每张图片处理得到低分辨率图片---------》低分辨率数据集

用这两个数据集(HR database + LR database)来训练网络,实现从LR到HR的转化。

附:训练好的模型 https://github.com/brade31919/SRGAN-tensorflow   (只能输入.png格式的图片)

参考博客:(https://blog.csdn.net/gavinmiaoc/article/details/80016051 )

ESRGAN

增强型的SRGAN

一、改进点与创新点:

1、引入残差密集块,并且将残差密集块(RRDB)中的残差作为基本的网络构建单元而不进行批量归一化(有助于训练更深的网络)

使用残差缩放(residual scaling)

2、借用相对GAN的思想,让判别器判断的是相对真实性而不是绝对真实度  (RaGAN)。

3、利用VGG的激活前的特征值改善感知损失,会使得生成的图像有更加清晰的边缘(为亮度的一致性和纹理恢复提供更强的监控)

 

二 、算法的提出

目的:提高SR的总体感知质量

网络中的G的改进:

1)去掉BN层      2)使用残差密集块(RRDB)代替原始基础块,其结合了多残差网格和密集连接。

     去掉BN层有助于增强性能和减少计算复杂度,并且当测试数据和训练数据存在差异很大时,BN有可能会引入伪影,从而限制网络的泛化能力。

    仍然使用SRGAN的高级设计架构,但是会引入基本块RRDB。由于更多的层和更多的连接总会提高网络性能。RRDB比residual block拥有更深更复杂的结构。RRDB拥有residual-in-residual结构,残差学习应用于不同的层。但是本次是在多残差中使用了密集块

    同时探索了新的方式来训练网络。1)使用残差缩放      2)使用较小的初始化  (????这一块不懂)

2)相对判别器RaD

相对判别器判断真实比假图更加真实的概率。

我们用相对论平均判别器RaD代替标准判别器,表示为D_{R_{a}}。标准判别器在SRGAN可以表示为D\left ( x \right )=\sigma \left ( C\left ( x \right ) \right ),其中\sigma是sigmoid函数,C\left ( x \right )是非变换判别器输出。RaD可以用公式表示为D_{R_{a}}\left ( x_{r} \right ,x_{f})=\sigma \left ( C\left ( x_{r} \right )-IE_{x_{f}}\left [ C\left ( x_{f} \right ) \right ] \right ),其中IE_{x_{f}}表示在mini批处理中对所有假数据取平均值的操作。

判别器的损失可以定义为:

其中x_{f}=G\left ( x_{i} \right )x_{i}代表LR图像输入。生成器的对抗损失包含了x_{r}x_{f}

因此,我们的生成器优势适合于对抗训练中生成的数据和实际数据的渐变

3)感知损失

        一种更有效的感知损失L_{percep},在SRGAN通过激活前约束特征而不是激活后。

感知损失首先是Johnson et al提出的,并且在SRGAN中扩展,感知损失先前定义在预先训练好的网络的激活层上,其中,两个激活特征之间的距离被最小化。

    本文提出使用的是激活层前的特性,优点在于:a、被激活的特征是非常稀疏的,如baboon的激活神经元的百分率在VGG19-54层后仅为11.17%。其中54表示最大池化层之前通过第4个卷积所获得的特征,表示高级特征,,类似地,22表示低维特征。

稀疏激活提供的弱监督会使得性能变差;;使用激活后的特征也会使得图像的亮度和真实图像不一样。

完整的损失函数表示:

其中L_{1}=IE_{x_{a}}\left \| G\left ( x_{i} \right )-y \right \|_{1}是评估恢复图像G\left ( x_{i} \right )和真实图像y之间的1-范数距离内容损失,\lambda ,\eta\eta是平衡不同损失项的系数。

4)网络插值   (不懂)

目的:去掉GAN-based中的不愉快的噪声,保证生成图片的质量更好。

先训练一个基于PSNR值的网络G_snr ,然后通过微调基于GAN的网络获得G_gan,然后对这两个网络进行插值计算,得到一个插值模型G_interp,其参数可以表示为:

其中\theta _{G}^{INTERP}\theta _{G}^{PSNR}\theta _{G}^{GAN}G_{INTERP}G_{PSNR}G_{GAN}的参数;\alpha \in \left [ 0,1 \right ]是插值参数。

优点:

a) 在不引入伪影的情况下对任何可行的\alpha产生有意义的结果。

b)  在不重新训练模型的情况下,持续地平衡感知质量和感觉。

代码地址:https://github.com/xinntao/ESRGAN

论文地址:https://arxiv.org/abs/1809.00219

 

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/cwslKdPS.shtml

相关文章

SRGAN With WGAN

SRGAN With WGAN RGAN 是基于 GAN 方法进行训练的,有一个生成器和一个判别器,判别器的主体使用 VGG19,生成器是一连串的 Residual block 连接,同时在模型后部也加入了 subpixel 模块,借鉴了 Shi et al 的 Subpixel Ne…

SRGAN论文与ESRGAN论文总结

博客结构 SRGANContribution:Network Architecture:Generator NetworkDiscriminator Network Perceptual loss function:Experiments:Mean opinion score (MOS) testing: ESRGANContribution:Network Architecture:ESR…

SR-GNN

Session-based Recommendation with Graph Neural Networks 一、论文 1、理论 ​ SR-GNN是一种基于会话序列建模的推荐系统。会话序列专门表示一个用户过往一段时间的交互序列。 ​ 常用的会话推荐包括循环神经网络和马尔科夫链,但有两个缺点: 当一…

SRGAN(SRResNet)介绍

生成对抗网络GAN是由蒙特利尔大学Ian Goodfellow在2014年提出的机器学习架构。 生成式对抗网络(GAN, Generative Adversarial Networks )是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。模型通过框架中(至…

SRGAN

摘要: 尽管使用更快更深的卷积神经网络在单图像超分辨率的准确性和速度方面取得了突破,但一个核心问题仍然很大程度上未解决:当我们在大的升级因子上超分辨时,我们如何恢复更精细的纹理细节?基于优化的超分辨率方法的行…

深度学习计划(4)SRGan简析

SRGAN 一种用于图像超分辨率(SR)的生成对抗网络(GAN) 超分辨率:从低分辨率(LR)图像来估计其对应高分辨率(HR)图像的高挑战性任务被称作超分辨率(SR) 问题: 重建的SR图像中通常缺少纹理细节。有监督SR算法的优化目标通常是最小化恢复的HR图像和真实图像…

图像超分经典网络 SRGAN精确解析

SRGAN 核心思想 早期超分辨率方法的优化目标都是降低低清图像和高清图像之间的均方误差。降低均方误差,确实让增强图像和原高清图像的相似度更高。但是,图像的相似度指标高并不能代表图像的增强质量就很高。 为什么 SRGAN 的增强结果那么清楚呢&#x…

SRGAN简单了解

超分辨率问题的病态性质尤其表现在取较高的放大因子时,重构的超分辨率图像通常会缺失纹理细节。监督SR算法的优化目标函数通常取重建高分辨率图像和地面真值之间的均方误差,在减小均方误差的同时又可以增大峰值信噪比(PSNR),PSNR是评价和比较…

【超分辨】SRGAN详解及其pytorch代码解释

SRGAN详解 介绍网络结构损失函数数据处理网络训练 介绍 「2023年更新」本代码是学习参考代码,一般不能直接运行,想找现成能运行的建议看看其他的。 SRGAN是一个超分辨网络,利用生成对抗网络的方法实现图片的超分辨。 关于生成对抗网络&#…

超分之一文读懂SRGAN

这篇文章介绍SRResNet网络,以及将SRResNet作为生成网络的GAN模型用于超分,即SRGAN模型。这是首篇在人类感知视觉上进行超分的文章,而以往的文章以PSNR为导向,但那些方式并不能让人眼觉得感知到了高分辨率——Photo-Realistic。 参…

图像超分经典网络 SRGAN 解析 ~ 如何把 GAN 运用在其他视觉任务上

生成对抗网络(GAN)是一类非常有趣的神经网络。借助GAN,计算机能够生成逼真的图片。近年来有许多“AI绘画”的新闻,这些应用大多是通过GAN实现的。实际上,GAN不仅能做图像生成,还能辅助其他输入信息不足的视觉任务。比如SRGAN&…

Oracle常用函数汇总记录

Oracle常用函数汇总记录 一、SUBSTR 截取函数 用法:substr(字符串,截取开始位置,截取长度) //返回截取的字, 字符串的起始位置为1,截取时包含起始位置字符 1.SUBSTR( “Hello World”, 2 ) //返回结果为:ello World,从第二个字符开始截取至末位 2.SUBSTR( “Hello World”, -2…

oracle一些常用函数用法,Oracle常用函数及其用法

01、入门Oracle 本章目标: 掌握oracle安装、启动和关闭 基本管理以及常用工具 简单备份和恢复 熟练使用sql,掌握oracle常用对象 掌握数据库设计和优化基本方法 http://jingyan.baidu.com/article/5d6edee228308899eadeec3f.html oracle数据库&#xff1a…

oracle常用函数详解(详细)

Oracle SQL 提供了用于执行特定操作的专用函数。这些函数大大增强了 SQL 语言的功能。函数可以接受零个或者多个输入参数,并返回一个输出结果。 Oracle 数据库中主要使用两种类型的函数: 1. 单行函数:对每一个函数应用在表的记录中时&#…

event对象的offsetX、clientX、pageX、screenX及 window.innerWidth、outerWidth使用详解

目录 offset client screen page window.innerWidht offset offsetX、offsetY为当前鼠标点击位置距离当前元素参考原点(左上角)的距离,而不同浏览器参考原点的位置不尽相同,FF及Chrome中参考原点为内容区域左上角,不…

什么?你还不知道offsetX、offsetY和clientX、clientY和pageX、pageY和screenX、screenY的区别,进来唠唠

offsetX、offsetY: 鼠标相对于事件源元素的X,Y坐标。比如说,给黄色的盒子定义一个点击事件,则这个offset的坐标原点就在这个黄色盒子的左上角,offsetX、offsetY就是相对于这个盒子的x、y坐标 clientX、clientY: 鼠标相对于浏览器窗口可视区域…

event对象的offsetX, clientX, pageX, screenX

现在需要对event对象的几大与坐标有关的属性做一个总结,以便于认识 offsetX|offsetY offsetX/Y获取到是触发点相对被触发dom的左上角距离(包括padding在内,不包括border),不过左上角基准点在不同浏览器中有区别,以内容区左上角为基…

vue拖拽指令之offsetX、clientX、pageX、screenX

自己一直很想做个拖拽生成静态页面的东西,说简单也简单,这个东西按道理用jsx语法是最好的,用render方法渲染生成的json。只是自己对这块还是没信心。今天写个vue的拖拽指令,顺便理一下offsetX、pageX、clientX、screenX这几个属性…

鼠标事件offsetX会传递给子元素

鼠标事件offsetX会传递给子元素 本来是想要通过e.offset来创建XY轴二维坐标系的,当事实上很难办到,所以我改用了通过div.offsetWidth(元素宽度包括border)、div.offsetLeft(元素距整个网页左边缘的长度)、e…

类似淘宝商品放大镜功能,以及offsetX、offsetY造成的鼠标移动时阴影部分会一闪一闪的不断回到左上角问题

效果:效果是当鼠标移入的时候小图出现一小块是以鼠标为中心的遮罩层,鼠标在小图移动时大图放大显示遮罩层所在的局部,且遮罩层不能超出小图位置。如下图所示: html部分 从代码可知大图和小图是分别两个img标签图片其实也是一样…