SRGAN简单了解

article/2025/11/8 22:33:51

超分辨率问题的病态性质尤其表现在取较高的放大因子时,重构的超分辨率图像通常会缺失纹理细节。监督SR算法的优化目标函数通常取重建高分辨率图像和地面真值之间的均方误差,在减小均方误差的同时又可以增大峰值信噪比(PSNR),PSNR是评价和比较SR算法的常用指标。但是MSE和PSNR值的高低并不能很好的表示视觉效果的好坏。正如Figture2表现出的,PSNR最高并不能反映最好的视觉SR效果。

SRGAN,使用了结合跳跃-连接(skip-connection)的深度残差网络(ResNet)。我们使用VGG网络的高层特征映射定义了新的感知损失,该损失使用的判别器使生成的高分辨率图像与地面真值在视觉上尽量相似。

把生成器看的目标看成是要以次充好,判别器的目标是要明辨真假. 我们可以的看到,在生成器的前6层网络中,我们运用了残差块,为什么要用残差块呢? 因为我们可以从上图看出来,当损失函数从判别器开始反向传播会生成器的时候,实际上进过来很多层,我们知道越深的网络隐藏参数越多,在反向传播的过程中也越容易梯度弥散.而且残差连接的方法,就有效的保证了我们梯度信息能够有效的传递而增强生成对抗网络的鲁棒性

SRGAN这个网络的最大贡献就是使用了生成对抗网络(Generative adversarial network)来训练SRResNet,使其产生的HR图像看起来更加自然,有更好的视觉效果(SRResNet是生成网络,对抗网络是用来区分真实的HR图像和通过SRResNet还原出来的HR图像,SRGAN网络的最终目标就是要让对抗网络无法区分真实的HR图像和SRResNet还原的HR图像)。

通俗来讲:GAN所要完成的工作,原文举了个栗子:

G网是印假钞的人,D网是检测假钞的人。G的工作是让自己印出来的假钞尽量能骗过D,D则要尽可能的分辨自己拿到的钞票是银行中的真票票还是G印出来的假票票。

开始的时候呢,G技术不过关,D能指出这个假钞哪里很假。G每次失败之后都认真总结经验,努力提升自己,每次都进步。直到最后,D无法判断钞票的真假……

SRGAN的工作就是:

G网通过低分辨率的图像生成高分辨率图像,由D网判断拿到的图像是由G网生成的,还是数据库中的原图像。当G网能成功骗过D网的时候,那我们就可以通过这个GAN完成超分了。

首先介绍一下作者为什么要采用GAN来训练SRResNet。因为当前监督SR效果的算法(损失函数)的优化目标是使恢复后的HR图像与ground truth间的均方差(MSE)最小化,因为酱紫可以取得很高的峰值信噪比(PSNR,这也是评价SR算法的效果的最常用指标)。但是由于PSNR是基于像素级图像(pixel-wise image)的差异来定义的,因此PSNR捕捉到和人的感官非常密切的差异(纹理细节)的能力十分有限,因此最高的PSNR不一定能反映人感官上最好的结果

作者所选择的是基于VGG的内容损失。先基于预训练的19层VGG网络的ReLU激活层来定义损失函数。这部分的理论来源于” Very deep convolutional networks for large-scale image recognition”这篇论文。在这篇论文里面,作者创建了一个从VGG19网络里提取的特征图之间欧式距离的损失函数,无论是超分辨率还是艺术风格的转移,效果都非常好。SRGAN的作者直接使用了这个作为损失函数的一部分。

因为上文已经讲过基于最小化MSE的损失函数虽然可以获得很高的PSNR,但是高放大倍数下视觉效果并不好。因此采用作者选择的是基于VGG的内容损失。先基于预训练的19层VGG网络的ReLU激活层来定义损失函数。

作者的主要创新点抛弃了MSE转而用基于VGG的内容损失定义损失函数。并且使用了GAN对抗网络来分辨自然HR图像和重建出来的HR图像,并且把分类网络的结果引入生成网络的损失函数,将使得训练出来的结果从视觉上来说更接近自然HR图像。虽然这样做会降低峰值信噪比,因为放大倍数越大,越不平滑的情况下PSNR越低。不过从视觉上说最为真实,因为过于平滑会使得图像内部物体的边缘看起来模糊。

img


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

相关文章

【超分辨】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),然后将…

html什么代码确定x坐标,HTML MouseEvent offsetX用法及代码示例

MouseEvent offsetX属性是一个只读属性,用于返回鼠标指针相对于目标元素的x坐标。 用法: event.offsetX 返回值:它返回一个数字,该数字表示鼠标指针的水平坐标,以像素为单位。 以下示例程序旨在说明MouseEvent offsetX属性&#x…

写轮播图时,关于offsetX和pageX的选择以及一些坑

一、不要使用offsetX 前几天在公司实习,由于使用了swiper来做c端的滑动效果,在自定义的过程中,出现了一系列的坑,我看了源码,看了文档,也还是没有很好的理解,这个swiper的标准操作流程&#xff…

js e.offsetX 和 e.offsetY

本人自己在写代码的过程中&#xff0c;一直对e.offsetX 与 e.offsetY 分不清&#xff0c;今天好好探究一下e.offsetX 与 e.offsetY e.offsetX 与 e.offsetY 下相对与事件源的距离&#xff0c;也就是距离e.target的距离&#xff0c; 大家看下面例子,给出几张截图。 <!DOCTY…

html5 offsetx,原生HTML5关于Div对象的.clientLeft、.offsetLeft、.clientX、.offsetX区分

本篇主要介绍clientLeft、offsetLeft、clientX、offsetX这四种元素属性的区别&#xff0c;首先我们要理解清楚它们的概念&#xff1a; clientLeft&#xff1a;该元素对象的左边框宽度。 clientWidth&#xff1a;该元素对象的左内边框至右内边框的距离。 offsetLeft&#xff1a;…

html5 offsetx,event对象中offsetX,clientX,pageX,screenX的区别

1、offsetX offset意为偏移量,是事件对象距左上角为参考原点的距离。以元素盒子模型的内容区域的左上角为参考点。不包括border。 2、clientX 事件对象相对于浏览器窗口可视区域的X,Y坐标(窗口坐标),可视区域不包括工具栏和滚动条 3、pageX 事件对象相对于整个文档的坐标以像素…

彻底搞懂 offsetX、scrollX、clientX 的区别

无论在 iOS 还是前端开发中&#xff0c;关于如何定位一个元素是必须要掌握的知识&#xff0c;而在前端中&#xff0c;元素定位比较难理解&#xff0c;我们今天一起学习下。 在 DOM 设计中&#xff0c;主要通过这些 API 来确定某个元素的具体位置。 offsetTop, offsetLeft, offs…

Java数组赋值时内存中的变化

java中的方法区存放的是编译后的文件 xxx.class文件当创建数组对象时&#xff0c;数组对象会存放在堆里面&#xff0c;数据也存在于堆。当给数组赋值时&#xff0c;方法会进栈&#xff0c;然后拿着数组的地址去堆里面寻找数据并赋值