【论文阅读】ESRGAN
学习资料
- 论文题目:增强型超分辨率生成对抗网络(ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks)
- 论文地址:[1809.00219] ESRGAN:增强型超分辨率生成对抗网络
- 代码:xinntao / ESRGAN:ECCV18 研讨会 - 增强的 SRGAN。Champion PIRM Challenge 关于感知超分辨率。训练代码位于 BasicSR 中。
1. WHY
SRCNN→SRGAN
以PSNR为导向的方法往往输出过于平滑的结果,缺乏足够的高频细节,因为 PSNR指标在根本上与人类观察者的主观评估不一致。
所以提出了基于感知驱动的方法。 感知损失(感知损失聚焦特征空间,通过比较生成图像与真实图像在预训练网络中的特征,使模型学习到高级语义特征。这有助于生成更逼真自然、纹理细节丰富且视觉效果更好的超分辨率图像,提升模型对图像的理解与重建能力)被提出用于在特征空间而不是像素空间中优化超分辨率模型。GAN被引入到SRIR,以鼓励网络倾向于看起来更像自然图像的解决方案。进一步结合语义图像先验(利用图像中物体、场景等的已有知识。比如知道天空在上且颜色均匀,以此引导模型生成更合理的高分辨率图像,改善纹理细节,让结果更符合视觉认知),以改善恢复的纹理细节。
追求视觉愉悦结果的一个里程碑是 SRGAN。基本模型是通过残差块 [18] 构建的,并在 GAN 框架中使用感知损失进行优化。通过所有这些技术,SRGAN 显著提高了重建的整体视觉质量,超过了以 PSNR 为导向的方法。
SRGAN→ESRGAN
尽管已有如 SRGAN 等感知驱动方法改善了视觉效果,但生成的细节仍伴有不良伪影,与真实图像存在明显差距,因此需要进一步提升超分辨率图像的视觉质量。
2. WHAT
我们采用SRResNet的基本架构,其中大部分计算在LR特征空间中进行。我们可以选择或设计“基本模块Basic Block”(例如,残差模块,密集模块,RRDB)以获得更好的性能。
2.1. 生成器改进
为了进一步提高SRGAN恢复图像的质量,我们主要对生成器的结构进行了两项修改:
2.1.1. 去除 BN 层
原因
BN 层在训练时用批次均值和方差归一化特征,测试时用训练集估计均值和方差。当训练和测试数据集统计特征差异大时,会引入伪影且限制泛化能力。在 GAN 框架下训练且网络深时,BN 层更易产生伪影,违反稳定训练需求。
效果
去除 BN 层可实现稳定训练和一致性能,节省计算资源和内存,在某些情况下还能带来轻微性能改善。
2.1.2. 采用 RRDB 块
结构特点
RRDB 具有残差 - 残差结构,在不同层次进行残差学习,主路径中使用稠密块,网络容量因稠密连接而提高。比 SRGAN 中原始残差块更深更复杂。
训练促进技术
- 残差缩放:在将残差添加到主路径前乘以 0.2,防止不稳定,可解释为纠正不当初始化,避免残差网络中输入信号幅度放大。
- 较小初始化:将 MSRA 初始化计算的参数乘以 0.1,在实验中效果良好,有助于训练非常深的网络。
效果
基于观察到更多层和连接可提升性能,RRDB 能提升网络表示能力,捕捉更多语义信息,改善恢复纹理,减少不愉快噪声,使更深模型更易训练且性能卓越。
2.2. 判别器改进
原理
与 SRGAN 中的标准判别器不同,相对论判别器试图预测一个真实图像相对于一个假图像
更真实的概率。
标准判别器估计输入图像
是现实和自然的概率(
是 sigmoid 函数,
是未转换的鉴别器输出),而相对论平均鉴别器
,其中
表示对小批量中所有假数据取平均的操作。
普通判别器是判断一张图是真(自然)图还是假(生成)图。相对论判别器不一样,它是看一张真图比一张假图更真实的可能性有多大。比如说有一张真实的风景照和一张生成的风景照,它不是简单说这两张图哪个真哪个假,而是判断真实照片比生成照片更真实的程度。
对于标准判别器,它算出一个数(通过计算后再用
函数转换),这个数表示输入图
是真实自然的概率。
而相对论判别器呢,它要算真实图像的某个值(
相关的)减去假图像
的 平 均 值 (
),然后再用
函数得到结果,这个结果就是真图比假图更真实的概率。
标准鉴别器与相对论鉴别器之间的差异
判别器损失与生成器对抗损失
判别器损失:
生成器的对抗损失:
其呈对称形式且包含了和
。这使得生成器在对抗训练中受益于来自生成数据和真实数据的梯度,而在 SRGAN 中只有生成部分起作用。
判别器有自己的损失计算(),生成器也有对应的对抗损失(
)。生成器的对抗损失这样设计的好处是,它在训练的时候,既会考虑到真实图像的信息,也会考虑到生成图像的信息(因为损失里既有
又有相关
的部分)。而以前的 SRGAN,生成器训练时主要只靠生成图像那边的信息。这样一来,通过相对论判别器,生成器能学到更多东西,生成的图像边缘更清晰,纹理更细致,看起来就更像真实的照片了。
作用
在实验中,这种对鉴别器的修改有助于生成器学习更清晰的边缘和更详细的纹理,从而提升生成图像的质量,使生成的图像在视觉效果上更接近真实图像。
2.3. 感知损失改进
改进原因
SRGAN 中对激活后的特征进行约束存在问题。首先,激活特征非常稀疏,特别是在非常深的网络之后,如在 VGG19 - 543 层之后,图像 “baboon” 的激活神经元平均百分比仅为 11.17%,稀疏激活提供了弱监督,导致性能较差。其次,使用激活之后的特征还会导致与真实图像相比重建亮度不一致。
改进方式
对激活前的特征进行约束,开发更有效的感知损失。使用预训练的 19 层 VGG 网络,其中 54 表示在第 5 个最大池化层之前第 4 个卷积获得的特征(高层特征),22 表示低层特征,通过最小化生成图像与真实图像在激活前特征之间的距离来优化感知损失。
生成器总损失
生成器的总损失,其中是
内容损失,用于评估恢复图像
与真实值
之间的 1 - 范数距离,
和
是平衡不同损失项的系数。
MINC 损失探索
还探讨了 PIRM - SR 挑战中的感知损失变体 MINC 损失。与常用的采用为图像分类训练的 VGG 网络的感知损失不同,MINC 损失基于针对材料识别的微调 VGG 网络,重点关注纹理而非物体。尽管 MINC 损失带来的感知指标提升微小,但探索关注纹理的感知损失对 SR 有重要意义。
2.4. 网络插值策略
目的
在基于 GAN 的方法中去除不愉快的噪声,同时保持良好的感知质量,并且能够平衡感知质量和 PSNR(峰值信噪比)。
策略
首先训练一个以 PSNR 为导向的网络,然后通过微调获得一个基于 GAN 的网络
。对这两个网络的所有对应参数进行插值,得到插值模型
,其参数
,其中
是插值参数。
优点
插值模型能够为任何可行的生成有意义的结果,而不会引入伪影。可以在不重新训练模型的情况下,持续平衡感知质量和保真度。
与图像插值对比
图像插值是直接对输出图像进行逐像素插值,而不是网络参数插值。这种方法未能在噪声和模糊之间实现良好的折衷,插值图像要么过于模糊,要么噪声过多并带有伪影。而网络插值策略在平衡感知质量和保真度方面表现更优,能提供更平滑的控制。
在 PIRM - SR 挑战中的应用
对于需要更高 PSNR 的区域(如 PIRM - SR 挑战中的区域 1 和 2),使用 ESRGAN 结果与以 PSNR 为导向的方法(如 RCAN)结果之间的图像插值。对于追求最佳感知质量的区域 3,采用提出的 ESRGAN 模型(使用了网络插值等改进策略),该模型在 PIRM - SR 挑战赛(区域 3)中获得了最佳感知指数的第一名。
2.5. 实验
数据
训练主要使用 DIV2K 数据集(800 张高质量 2K 分辨率图像),还补充了 Flickr2K 数据集(2650 张 2K 高分辨率图像)和 OutdoorSceneTraining (OST) 数据集,以丰富训练集纹理。
在 RGB 通道中训练模型,并通过随机水平翻转和 90 度旋转来增强训练数据集。
评估在广泛使用的基准数据集上进行,包括 Set5、Set14、BSD100、Urban100 以及 PIRM - SR 挑战中的 PIRM 自验证数据集。
图像缩放因子固定为,通过下采样 HR 图像获得 LR 图像,下采样使用 MATLAB 双三次插值核函数。
训练阶段
首先进行第一阶段训练,使用 L1 损失训练一个以 PSNR 为导向的模型。学习率初始化为,并且每
次小批量更新后衰减一个因子 2。
接着进入第二阶段,将第一阶段训练好的 PSNR 导向模型作为生成器的初始化。生成器使用公式中的损失函数进行训练,其中
,
。学习率设定为
,并在
迭代时减半。
优化方法
优化过程使用 Adam 优化算法,其中,
。在训练过程中,交替更新生成器和判别器网络,直到模型收敛。
生成器设置
生成器有两种设置,一种包含 16 个残差块,其容量与 SRGAN 相似;另一种是更深的模型,包含 23 个 RRDB 块。
训练环境
实验使用 PyTorch 框架实现模型,并使用 NVIDIA Titan Xp GPU 进行训练。
实验方法
定性结果比较、消融研究、网络插值实验、PIRM - SR 挑战参赛方法
3. HOW
定性结果出色:在多个公共基准数据集上与先进方法对比,ESRGAN 在生成图像的清晰度和细节表现上超越以往方法。如在生成动物毛发、建筑结构和草地纹理等方面更加自然逼真,且有效减少了如 SRGAN 中出现的伪影等不良现象。
消融实验验证:通过逐步修改基线 SRGAN 模型进行消融研究,证明了各改进组件(如移除 BN 层、使用激活前特征计算感知损失、采用 RaGAN 判别器、使用更深层含 RRDB 的网络)对最终结果均有积极贡献,有效提升了图像质量。
网络插值有效:网络插值策略在平衡感知质量和 PSNR 方面表现卓越,能够在减少伪影的同时保持良好纹理,而图像插值在去除伪影方面效果不佳。
挑战赛成绩优异:在 PIRM - SR 挑战赛中,采用特定配置的 ESRGAN 变体,结合 MINC 损失、Pristine 数据集、高权重 L1 损失和反向投影后处理等手段,在区域 3 中荣获第一名,充分证实了所提方法在感知质量方面的有效性和先进性。
相关文章:

【论文阅读】ESRGAN
学习资料 论文题目:增强型超分辨率生成对抗网络(ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks)论文地址:[1809.00219] ESRGAN:增强型超分辨率生成对抗网络代码:xinntao / ESRGAN&am…...

电脑异常情况总结
文章目录 笔记本无症状息屏黑屏 笔记本无症状息屏黑屏 🍎 问题描述: 息屏导致黑屏;依次操作计算机--》右键--》管理--》事件查看器--》Windows日志--》系统;从息屏到异常黑屏之间出现了很多错误,如下:事件…...

[项目详解][boost搜索引擎#1] 概述 | 去标签 | 数据清洗 | scp
目录 一、前言 二、项目的相关背景 三、搜索引擎的宏观原理 四、搜索引擎技术栈和项目环境 五、正排索引 VS 倒排索引--原理 正排索引 分词 倒排索引 六、编写数据去除标签和数据清洗模块 Parser 1.数据准备 parser 编码 1.枚举文件 EnumFile 2.去标签ParseHtml(…...

PL/I语言的起源?有C语言,有B语言和A语言吗?为什么shell脚本最开始可能有#!/bin/bash字样?为什么不支持嵌套注释?
PL/I语言的起源 在20世纪50~60年代,当时主流的编程语言是COBOL/FORTRAN/ALGOL等,IBM想要设计一门通用的编程语言,已有的编程语言无法实现此要求,故想要设计一门新语言,即是PL/I. PL/I是Programming Language/One的缩写…...

gin入门教程(3):创建第一个 HTTP 服务器
首先设置golang github代理,可解决拉取git包的时候,无法拉取的问题: export GOPROXYhttps://goproxy.io再查看自己的go版本: go version我这里的版本是:go1.23.2 linux/arm64 准备工作做好之后就可以进行开发了 3.…...

Vue+ECharts+iView实现大数据可视化大屏模板
Vue数据可视化 三个大屏模板 样式还是比较全的 包括世界地图、中国地图、canvas转盘等 项目演示: 视频: vue大数据可视化大屏模板...

el-table 表格设置必填项
el-table 表格设置必填项 要在 el-table 中集成 el-form 来设置必填项,并进行表单验证,可以使用 Element UI 提供的表单验证功能。下面是一个详细的示例,展示了如何在 el-table 中使用 el-form 来设置必填项,并进行验证。 示例代…...

vivo 轩辕文件系统:AI 计算平台存储性能优化实践
在早期阶段,vivo AI 计算平台使用 GlusterFS 作为底层存储基座。随着数据规模的扩大和多种业务场景的接入,开始出现性能、维护等问题。为此,vivo 转而采用了自研的轩辕文件系统,该系统是基于 JuiceFS 开源版本开发的一款分布式文件…...

Vue学习笔记(四)
事件处理 我们可以使用 v-on 指令 (通常缩写为 符号) 来监听 DOM 事件,并在触发事件时执行一些 JavaScript。用法为 v-on:click"methodName" 或使用快捷方式 click"methodName" 事件处理器的值可以是: 内联事件处理器࿱…...

发送短信,验证码
短信 注册阿里云的账号 开通短信服务 测试短信服务是否可用 导入jar <!-- 短信相关 --><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.6.0</version><…...

国内大语言模型哪家更好用?
大家好,我是袁庭新。 过去一年,AI大语言模型在爆发式增长,呈现百家争鸣之态。国内外相关厂商积极布局,并相继推出自家研发的智能化产品。 我在工作中已习惯借助AI来辅助完成些编码、创作、文生图等任务,甚至对它们产…...

OTP一次性密码、多因子认证笔记
文章目录 双因子认证(多因子认证)otp算法(ONE-TIME PASSWORD)otp算法大概分为几部 otp的机制服务端客户端(app端)两种主流算法otp流程图 otp是通用的吗 手机验证码天天在用,但是居然不知道这个是otp,伤自尊了,必须弄清原理。 先要知道几个概念…...

玉米生长阶段检测系统源码&数据集全套:改进yolo11-dysample
改进yolo11-DLKA等200全套创新点大全:玉米生长阶段检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.24 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者视…...

【机器学习】决策树算法
目录 一、决策树算法的基本原理 二、决策树算法的关键概念 三、决策树算法的应用场景 四、决策树算法的优化策略 五、代码实现 代码解释: 在机器学习领域,决策树算法是一种简单直观且易于理解的分类和回归方法。它通过学习数据特征和决策规则&#…...

P2818 天使的起誓
天使的起誓 题目描述 Tenshi 非常幸运地被选为掌管智慧之匙的天使。在正式任职之前,她必须和其他新当选的天使一样要宣誓。 宣誓仪式是每位天使各自表述自己的使命,他们的发言稿放在 n n n 个呈圆形排列的宝盒中。这些宝盒按顺时针方向被编上号码 1…...

数字信号处理实验简介
数字信号处理(Digital Signal Processing,简称DSP)是电子工程、通信、计算机科学等领域中的一个重要分支,它涉及到对离散时间信号进行分析、处理和合成的理论和方法。数字信号处理课程的实验环节通常旨在帮助学生将理论知识应用于实际问题中,通过实践加深对DSP概念和技术的…...

Flask-SQLAlchemy 组件
一、ORM 要了解 ORM 首先了解以下概念。 什么是持久化 持久化 (Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,…...

Could not retrieve mirrorlist http://mirrorlist.centos.org错误解决方法
文章目录 背景解决方法 背景 今天在一台新服务器上安装nginx,在这个过程中需要安装相关依赖,在使用yum install命令时,发生了以下报错内容: Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx8…...

最新PHP网盘搜索引擎系统源码 附教程
最新PHP网盘搜索引擎系统源码 附教程,这是一个基于thinkphp5.1MySQL开发的网盘搜索引擎,可以批量导入各大网盘链接,例如百度网盘、阿里云盘、夸克网盘等。 功能特点:网盘失效检测,后台管理功能,网盘链接管…...

SpringBoot面试热题
1.Spring IOC(控制反转)和AOP(面相切面编程)的理解 控制反转意味着将对象的控制权从代码中转移到Spring IOC容器。 本来是我们自己手动new出来的对象,现在则把对象交给Spring的IOC容器管理,IOC容器作为一个对象工厂,管理对象的创建和依赖关系…...

ASP.NET Core8.0学习笔记(二十三)——EF Core自引用
一、什么是自引用 1.在常见的树状目录中,其结构如下: 每一个菜单可能有父级菜单,也可能有子菜单。但是无论是哪一级菜单,他们都是同属于菜单对象。将这个菜单对象使用代码进行描述: 在上面的代码中,主…...

springboot童装销售管理系统-计算机毕业设计源码92685
摘 要 童装销售管理系统是为童装店商家提供的在线销售管理系统,本系统的研发设计能够增加童装店商家的童装宣传和推广,提升客流量和订单量,增加商家的营业收益。原有的童装品销售系统管理采用手工管理的方式,各种童装品宣传和订单…...

OpenCV中的图像通道合并
在计算机视觉和图像处理领域,OpenCV是一个强大的工具库,它提供了从基本操作到复杂算法的广泛功能。今天,我们将通过一个简单的示例来探索OpenCV中的图像通道处理,特别是如何操作和理解BGR与RGB颜色空间的差异。 Lena图像…...

Flutter TextField和Button组件开发登录页面案例
In this section, we’ll go through building a basic login screen using the Button and TextField widgets. We’ll follow a step-bystep approach, allowing you to code along and understand each part of the process. Let’s get started! 在本节中,我们…...

【vue + mockjs】Mockjs——数据接口模拟
一、mockjs 根据规则生成随机数据,通过拦截 ajax 请求来实现"模拟前端数据接口“的作用。 二、安装 // yarn yarn add mockjs// npm npm install mockjs --save-dev 三、主要模块 mock 根据数据模板生成对应的随机数据Random 工具函数, 调用具体的类型函数…...

ssm订餐系统-计算机毕业设计源码26763
摘 要 本文提出了基于SSM框架的订餐系统的设计与实现。该系统通过前后端分离的方式,采用SpringMVCSpringMyBatis(SSM)框架进行开发,实现了用户注册、登录、点餐、购物车、订单管理等功能。系统设计了用户注册模块,用户…...

4.2-7 运行MR应用:词频统计
文章目录 1. 准备数据文件2. 文件上传到HDFS指定目录2.1 创建HDFS目录2.2 上传文件到HDFS2.3 查看上传的文件 3. 运行词频统计程序的jar包3.1 查看Hadoop自带示例jar包3.2 运行示例jar包里的词频统计 4. 查看词频统计结果5. 在HDFS集群UI界面查看结果文件6. 在YARN集群UI界面查…...

查看Chrome安装路
谷歌Google浏览器查看安装路径,浏览器Google Chrome浏览器查看安装路径 chrome://version/ 来源:笔记云...

深入剖析Canvas的getBoundingClientRect:精准定位与交互事件实现
软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 在前端开发中,Canvas是一个强大的绘图工具,它允许开发者在网页上动态地绘制图形、图像和动画。然而,仅仅能够绘制图形是不…...

SQL SERVER 2005/2008/2012/2016/2020 数据库状态为“可疑”的解决方法(亲测可用)
当数据库发生这种操作故障时,可以按如下操作步骤可解决此方法,打开数据库里的Sql 查询编辑器窗口,运行以下的命令。 1、修改数据库为紧急模式 ALTER DATABASE demo SET EMERGENCY 2、使数据库变为单用户模式 ALTER DATABASE demo SET SINGL…...