SRGAN With WGAN

article/2025/11/8 19:49:17

                            SRGAN With WGAN

RGAN 是基于 GAN 方法进行训练的,有一个生成器和一个判别器,判别器的主体使用 VGG19,生成器是一连串的 Residual block 连接,同时在模型后部也加入了 subpixel 模块,借鉴了 Shi et al 的 Subpixel Network [6] 的思想,让图片在最后面的网络层才增加分辨率,提升分辨率的同时减少计算资源消耗。详细的介绍建议大家还是直接看论文 ,网上也有一些解读的文章,这里就直接介绍实现的一些创新细节。

SRGAN

SRGAN,2017 年 CVPR 中备受瞩目的超分辨率论文,把超分辨率的效果带到了一个新的高度,而 2017 年超分大赛 NTIRE 的冠军 EDSR 也是基于 SRGAN 的变体。

SRGAN 是基于 GAN 方法进行训练的,有一个生成器和一个判别器,判别器的主体使用 VGG19,生成器是一连串的 Residual block 连接,同时在模型后部也加入了 subpixel 模块,借鉴了 Shi et al 的 Subpixel Network [6] 的思想,让图片在最后面的网络层才增加分辨率,提升分辨率的同时减少计算资源消耗。详细的介绍建议大家还是直接看论文 [1],网上也有一些解读的文章,这里就直接介绍实现的一些创新细节。

GAN存在的问题

传统 GAN 存在一个问题是,你无法知道什么时候该停止训练 Generator,什么时候该停止训练 Discriminator,如果过度训练 Discriminator,Generator 就无法学习下去,反之也会导致模型效果差。

如果能有一个 loss 指标来反映训练情况的话,训练的难度就会大大降低。而 17 年提出的WGAN [3] 正是解决这一问题的重要方法。 

WGAN 使用 Wasserstein 距离来描述两个数据集分布之间的差异程度,只要把模型修改成 WGAN 的形式,就能根据一个唯一的 loss 来监控模型训练的程度。有关 WGAN 的解释强烈推荐大家阅读这篇文章:令人拍案叫绝的 Wasserstein GAN [4],作者用非常直白明了的语言介绍 WGAN。

SRGAN结合WGAN

SRGAN 的一个超赞复现来自 @董豪 之手,他也是 tensorlayer 的作者之一,他的复现项目在 Github 上得到了大量的星星,而笔者的代码就正是在他的基础上进行拓展,首先非常感谢作者的开源。

· 判别器最后一层去掉 sigmoid 

· 生成器和判别器的 loss 不取 log 

· 每次更新判别器的参数之后把它们的绝对值截断到不超过一个固定常数 c 

· 不要用基于动量的优化算法(包括 momentum 和 Adam),推荐 RMSProp,SGD 也行 

--来自《令人拍案叫绝的Wasserstein GAN》

根据这篇文章的介绍,对代码进行以上四项修改,把 GAN 的训练方式转换成 WGAN,可以在 tensorboard 中监控 loss 的下降情况。因此,笔者对项目原作的进行了一些修改: 

1. 对模型代码进行了上面 WGAN 的改造; 

2. 增加了 Tensorboard,监控 loss 下降情况; 

3. 对作者的 model.py 中,Generator 的最后一层的卷积 kernel 从 1×1 改成 9×9,这是原论文建议的结构。 

SRGAN With Wasserstein GAN 的完整代码已经开源到笔者的 Github [5],里面有详细的改动介绍和使用说明,觉得好的话就给个 Star 呀!

 

▲ 修改后的训练Loss下降情况

 

下面是一些复现后的超分复原效果:

一个来自工业界的问题

在实际生产使用中,遇到的低分辨率图片并不一定都是 PNG 格式的(无损压缩的图片复原效果最好),而且会带有不同程度的失真(有损压缩导致的 artifacts)。笔者尝试过很多算法,例如 SRGAN、EDSR、RAISR、Fast Neural Style 等等,这类图片目前使用任何一种超分算法都没法在提高分辨率的同时消除失真

这个问题我在 @董豪 SRGAN 项目的 issue 中也讨论过,同时在知乎也提出过这个问题:SRGAN 超分辨率方法对于低清 jpg 格式的图片复原效果是否比不上对低清 png 格式的复原效果?

【转载】:https://www.jiqizhixin.com/articles/2018-05-21-10

               https://github.com/TwistedW/tf-GANs-Loss

               http://www.twistedwg.com/2018/10/05/GAN_loss_summary.html

               https://www.jianshu.com/p/aab68eb0f7ed

               https://spaces.ac.cn/archives/4439

 

 


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

相关文章

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标签图片其实也是一样…

event.offsetX event.pageX event.clientX 和 obj.offsetLeft学习笔记

一、问题描述 工作中,需要在航拍图中 添加摄像头在航拍图中的位置,因此,需要开发一个功能:鼠标点击航拍图(背景),显示鼠标点击位置在页面中的位置(pageX和pageY),然后将…