【论文阅读】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…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...
