【论文阅读】ESRGAN+
学习资料
- 论文题目:进一步改进增强型超分辨率生成对抗网络(ESRGAN+ : FURTHER IMPROVING ENHANCED SUPER-RESOLUTION GENERATIVE ADVERSARIAL NETWORK)
- 论文地址:2001.08073
- 代码:ncarraz/ESRGANplus: ICASSP 2020 - ESRGAN+: 进一步改进增强型超分辨率生成对抗网络 - ICPR 2020 - Tarsier: 超分辨率 GAN 中不断发展的噪声注入
1. WHY
尽管 ESRGAN 能够生成视觉质量较好的图像,但仍有提升空间。作者旨在进一步提高 ESRGAN 生成图像的感知质量,缩小生成图像与真实图像之间的差距。
2. WHAT
2.1. ESRGAN +
ESRGAN 的基本块使得网络易于训练且容量较高。本文保持 ESRGAN 的整体架构不变,但将其中的 Dense 块替换为新提出的块。

新块名为 Residual - in - Residual Dense Residual Block(RRDRB),它在 RRDB(Residual - in - Residual Dense Block)的基础上进行了改进。RRDB 原本具有残差 - 残差结构且主路径中有 Dense 块,新块在 Dense 块内部又增加了一个层次的残差学习,也就是每两层就添加一个残差。这样做的好处是,在不增加网络复杂度的情况下提升了网络容量。
例如,原来的 Dense 块在处理图像特征时可能能力有限,新的结构可以让网络更好地学习和利用图像特征,就像给网络增加了更多的 “工具” 来处理图像信息,从而使生成图像的视觉质量比使用简单 Dense 块时更好。
从特征利用角度看,新架构结合了 ResNet 能重用特征和 DenseNet 能发现新特征的优点,所以能生成感知质量更高的图像,使用这种新架构的模型被命名为 ESRGAN +。


上:密集块是ESRGAN的RRDB中使用的主要路径。下:在密集块中,每两个层添加一个残差。
2.2. nESRGAN +
引入噪声的目的和方式:在人脸生成领域已经有将噪声添加到生成器的做法,且效果较好,但在超分辨率领域尚未应用。本文为了让生成的图像具有随机细节,在生成器架构中引入噪声输入。具体来说,在每个残差密集块的输出添加高斯噪声,同时还有学习到的每个特征的缩放因子。例如,网络在处理图像时,每经过一个残差密集块,就会给输出的图像特征加上一些随机的噪声,这些噪声会根据学习到的缩放因子进行调整。

噪声对图像的影响:这种随机变化只会影响图像的某些局部方面,不会改变我们对图像的整体感知。比如,对于一幅风景图像,添加噪声后,图像的整体形状、主要物体的布局等大的方面不会改变,但像树叶、草地等局部细节会变得更加随机和丰富。这样做的好处是,网络不需要专门生成空间变化的伪随机数来提供细节,从而可以将原本用于生成随机数的网络容量高效利用起来,在高级方面(如整体结构和高层次信息保持不变的情况下)提供更精细的细节。同时使用新块和噪声输入的模型被称为 nESRGAN +。
2.3. 实验
训练集
DIV2K:包含 2K 分辨率的图像;数据集原本有 800 张图像,实验中通过随机水平翻转和旋转进行数据增强,以扩充训练数据量
测试集
BSD100、Urban100、OST300、Set5、Set14、PIRM
图像预处理
低分辨率(LR)图像通过对高分辨率(HR)图像使用双三次核(bicubic kernel)下采样得到,缩放因子为
并且裁剪出的 HR 子图像用于训练。
训练参数设置
| 小批量设置(mini - batch) | 16(每次训练时使用16张图像进行计算和参数更新) |
| 模型初始化 | 利用一个以 PSNR(峰值信噪比)为导向的预训练模型来初始化生成器,为后续训练提供一个较好的初始参数状态。 |
| 损失函数参数 | 损失函数保持不变,其中 |
| 学习率策略 | 初始学习率设置为 |
| 优化器设置 | 采用 Adam 优化器来优化模型参数,其中 |
训练硬件
训练过程在 NVIDIA Tesla K80 GPUs 上进行,利用其强大的计算能力加速训练过程。
模型结构
训练所使用的生成器具有23个块,模型的实现基于 Pytorch 框架,该框架提供了高效的深度学习模型构建和训练功能。
3. HOW
3.1. 定量评估
在 PIRM 数据集上评估模型,在 YCbCr 颜色空间中,仅测量亮度通道上的 PSNR(峰值信噪比),同时使用 PIRM - SR 挑战赛中的感知指数(基于 和
,计算方式为
)进行评估。
结果显示,ESRGAN + 和 nESRGAN + 模型在感知质量方面始终优于 ESRGAN,nESRGAN + 在 PIRM 数据集上的感知分数更好,突出了噪声输入在生成器网络中的优势,但噪声注入的泛化存在局限性,如在 Urban100 和 OST300 数据集上,添加噪声对某些图像类别(如建筑物图像)的感知质量提升不明显。

最佳和第二最佳结果分别用高亮和下划线标出。
我们使用感知指数(右侧的数值)进行评估,但也提供了PSNR(左侧的数值)作为参考。
3.2. 定性评估
通过对比基于 PSNR 和感知质量的模型(如 SRCNN、EnhanceNet、SRGAN、ESRGAN 等),使用 Set14 数据集图像进行定性比较。结果表明,作者提出的模型重建的图像具有更详细的结构,与真实图像更难区分,并且能较好地保留原始图像的大部分纹理,如男孩的肤色等。


相关文章:
【论文阅读】ESRGAN+
学习资料 论文题目:进一步改进增强型超分辨率生成对抗网络(ESRGAN : FURTHER IMPROVING ENHANCED SUPER-RESOLUTION GENERATIVE ADVERSARIAL NETWORK)论文地址:2001.08073代码:ncarraz/ESRGANplus: ICASSP …...
北京市首发教育领域人工智能应用指南,力推个性化教育新篇章
近年来,人工智能在全球教育领域的应用呈现蓬勃发展之势,各国都在探索如何将其更好的融入教育体系,在这一背景下,北京市于10月26日发布《北京市教育领域人工智能应用指南》(以下简称《指南》),推…...
【Java并发编程】信号量Semaphore详解
一、简介 Semaphore(信号量):是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。 Semaphore 一般用于流量的控制,特别是公共资源有限的应用场景。例如数据库的连接&am…...
window11使用wsl2安装Ubuntu22.04
目录 1、快速了解wsl2 安装子系统linux流程(B站视频) 2、wsl2常用命令 3、windows与子系统Linux文件访问方法 4、子系统linux使用windows网络代理、网络配置(镜像网络,非NAT) 5、wsl2 Ubuntu miniconda 安装 6、…...
虚拟滚动 - 从基本实现到 Angular CDK
简介 在大数据列表的处理上,虚拟滚动是一种优化性能的有效方式。本篇文章将详细介绍两种常见的虚拟滚动实现方式:使用 transform 属性和 Intersection Observer。重点讲解如何通过 transform 属性实现高效的虚拟滚动,并对比Angular CDK中的实…...
Spring WebFlux学习笔记(一)
核心思想 WebFlux主要是异步 例子 参考一个源码: https://blog.csdn.net/qq_43923045/article/details/106309432?spm1001.2014.3001.5506 GetMapping("/delay1")public Mono<RestResult> delayResult() {long l System.currentTimeMillis();…...
富格林:正确追损思维安全交易
富格林指出,对于如何正确追损的这个问题是需要持续付出时间和精力的,发现具备耐心的投资者往往在正确追损的路上更加游刃有余。他们总是可以保持较为平和的心态,不急不躁地分析原因并通过自身掌握的安全应对措施来进行交易。富格林在以下分享…...
前端vue2迁移至uni-app
1.确定文件存放位置 components: 继续沿用 pages: views内容移动到pages static: assets内容移动到static uni_modules: uni-app的插件存放位置 迁移前 src├─assets│ └─less├─components│ ├─common│ │ ├─CommentPart│ │ └─MessDetail│ ├─home│…...
恋爱脑学Rust之闭包三Traits:Fn,FnOnce,FnMut
在Rust中,FnOnce、FnMut和Fn是三个用于表示闭包(closure)类型的trait。闭包是一种特殊的函数,它可以捕获其环境变量,即在其定义时所处的作用域中的变量。以下是关于这三个trait的详细介绍: 1. FnOnce&#…...
区块链介绍
区块链(英文名:blockchain或block chain)是一种块链式存储、不可篡改、安全可信的去中心化分布式账本,它结合了分布式存储、点对点传输、共识机制、密码学等技术,通过不断增长的数据块链(Blocks)…...
git回滚间隔的提交
如果你需要回滚几个非连续的提交,可以使用 git revert 来选择性地撤销这些提交。这样做不会改变提交历史,只是会在当前分支上创建新的提交来反转指定的更改。 ### 使用 git revert 回滚间隔的提交 1. **查看提交历史**: 首先,…...
Map和Set(数据结构)
一、概念 Map 和 set 是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。 Map 和 Set 是一种适合动态查找的集合容器。 模型 一般把搜索的数据称为关键字( Key ),和关键字对应的称为值࿰…...
vue3uniapp实现自定义拱形底部导航栏,解决首次闪烁问题
前言: 我最初在网上翻阅查找了很多方法,发现大家都是说在page.json中tabbar中添加:"custom": true,即可解决首次闪烁的问题,可是添加了我这边还是会闪烁,因此我这边改变了思路,使用了虚拟页面来解…...
新需求编码如何注意低级错误代码
1. 日常开发常见错误问题 变量拷贝未修改变量定义的值刚开始是随意写的一个值,想等到上线的时候再改成正确的,但是上线的时候忘记改了程序常量配置的错误逻辑关系判断错误 常见的如都不为null、都不为空集合判断不为空逻辑取反了多个关系的 && …...
系统架构图设计(行业领域架构)
物联网 感知层:主要功能是感知和收集信息。感知层通过各种传感器、RFID标签等设备来识别物体、采集信息,并对这些信息进行初步处理。这一层的作用是实现对物理世界的感知和初步处理,为上层提供数据基础网络层:网络层负责处理和传输…...
windows 文件监控 c++ 11及以上版本可用
在该版本上稍微改了一下https://blog.csdn.net/weixin_50964512/article/details/125002563 #include<iostream> #include<string> #include<Windows.h> #include<list> #include<locale> using namespace std;class WatchFolder {HANDLE m_hFi…...
jsMind:炸裂项目,用JavaScript构建的思维导图库,GitHub上的热门开源项目
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和工作学习方法 jsMind 是一个基于 JavaScript 的思维导图库,它利用 HTML5 Canvas 和 SVG 技术构建,可以轻松地在网页中嵌入和编辑思维导图。它以 …...
postman的脚本设置接口关联
pm常用的对象 变量基础知识 postman获取响应结果的脚本的编写 下面是购物场景存在接口信息的关联 登录进入---搜索商品---进入商品详情---加入购物车 资源在附件中,可以私聊单独发送 postman的SHA256加密 var CryptoJS require(crypto-js);// 需要加密的字符串 …...
【python】OpenCV—Tracking(10.3)—GOTURN
文章目录 1、功能描述2、模型介绍3、代码实现4、完整代码5、结果展示6、优缺点分析7、参考 1、功能描述 基于 Generic Object Tracking using Regression Networks 方法,实现单目标跟踪 2、模型介绍 (1)发表来自 Held D, Thrun S, Savarese…...
git pull遇到一个问题
shell request failed on channel 0 需要修改服务器配置[rootadmin ~]# cat /etc/security/limits.d/20-nproc.conf # Default limit for number of users processes to prevent # accidental fork bombs. # See rhbz #432903 for reasoning.* soft nproc 409…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...
