深度学习课程论文精读——ESRGAN

目录

1.研究概述

2.论文创新

2.1 改进生成器的网络框架

2.2 改进判别器

2.3 改进感知损失

2.4 网络插值

3.实验

3.1 评价指标

3.2 训练细节

3.3 对比实验

3.4 消融实验

3.5 网络插值

4.总结

5.阅读参考


文章标题:《ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks》

发表年份及会议:ECCV2018

文章地址:ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks (arxiv.org)icon-default.png?t=N7T8https://arxiv.org/abs/1809.00219

代码地址:https://github.com/xinntao/ESRGANicon-default.png?t=N7T8https://github.com/xinntao/ESRGAN

1.研究概述

超分辨率生成对抗网络(SRGAN)能够生成逼真的纹理,但是不可避免地会出现伪影。作者为了提高生成图像的视觉质量,针对SRGAN中的组件和设计进行了改进,并提出ESRGAN。相比SRGAN而言作者提出的模型有更好的生成质量更自然的纹理,并在PIRM2018-SR Challenge中获得第一名

2.论文创新

作者在SRGAN上提出如下改进:

  • 改进生成器网络框架
  • 改进判别器 Discriminator
  • 改进感知损失 Perceptual Loss
  • 为了减少噪声,提出使用网络插值

2.1 改进生成器的网络框架

下图为SRGAN的框架图:

作者主要针对其中的basic block进行改进,移除了所有的BN层,并将RB模块替换成了RRDB模块

作者认为移除BN层能够减少计算复杂度,并提高模型性能。由于在验证时BN层的计算运用整个数据集的平均值和方差,而在训练时用了一个batch的平均值和方差,所以当训练集与测试集不同时BN的效果就会较差,模型的泛化能力受到了限制。RRDB模块采用了residual-in-residual结构,结合了多级残差网络和dense连接,提高了残差学习的层次,同时笔者认为RRDB模块能够使网络保持底层的特征,因此生成出的图像细节更丰富。

为了能够训练更深的网络,作者对网络做了两点小改进:

1)在dense block进入主路径前,作者加入了β残差缩放参数,保持训练的稳定性

2)让初始化参数时的方差较小,使得残差结构更容易训练

2.2 改进判别器

传统的鉴别器估计输入图像是否真实和自然的概率(绝对),而作者提出相对鉴别器Relativistic GAN,尝试预测真实图像x_{r}相对于假图像x_{f}更真实的概率(相对)

其中,σ为激活函数,C(x)为未转换的鉴别器的输出,E[·]表示对batch中所有假数据取平均值的操作。因此可以得出判别器的损失为:

对抗损失为:

判别器的改进能够学习到更清晰的边界和更细节的纹理

2.3 改进感知损失

在之前的研究中SRGAN,感知损失是定义在激活层后的,这使得激活的特征间距离达到了最小化,这种方式得到的特征十分稀疏,并且激活的神经元的平均百分比在经过激活层后会衰减,导致了较差的监督能力,并且运用激活后的特征会使得最终的结果亮度不一致

最终,生成器的损失为:

其中,L1为content loss,λ和η为超参数用于平衡不同的损失

随着网络的加深,大部分特征在激活后变得不活跃,而在激活前的特征包含有更多信息

2.4 网络插值

为了减少基于GAN方法产生的噪声同时维持较好的感知质量,作者提出使用网络插值的方法。首先训练一个PSNR为导向的网络GPSNR,然后微调得到基于GAN的网络GGAN,通过这两个网络相应元素间的插值得到插值模型GINTERP:

θ为各个参数。插值模型一方面对于任意可行α能够产生有用的结果同时不带来伪影,另一方面不用重新训练模型就能平衡感知质量与保真度

作者还探索了其他的插值方案,比如直接插值两个网络的输出图像,这种方式不能很好平衡噪声与模糊度,又比如微调λ和η,这种方式成本太昂贵

3.实验

3.1 评价指标

①传统的方法常用PSNR作为指标,但这种方法因为与人类的主观评估往往会输出过平滑的结果,缺少高频细节

②这个比赛还采用了另一个指标,perceptual index

perceptual index越低感知质量越来,作者提出的模型主要是在R3区域中

3.2 训练细节

LR由HR通过matlab的bicubic退化4倍所得。HR分辨率是128×128,LR的分辨率则是32×32,mini-batch=16。

训练过程分为两步骤:

1)先通过重建损失训练一个base模型,论文中使用的重建损失是L1。

2) 训练好base模型加入gan loss 和perceptual loss进行微调。

这样训练的好处是base模型:

1)可以给gan模型一个更好的初始化,毕竟gan的训练比较动荡

2)判别器一开始接受的SR的输入不会太差,这样可以让判别器更加关注到纹理的判别上,而不是还需要判别结构等信息。

在ESRGAN中使用的RRDB的个数是23。

3.3 对比实验

LR图像从HR图像下采样得到,作者还运用了图像翻转旋转的数据增强方式。其中,Bicubic为下采样结果,SRCNN、EDSR、RCAN为RSNR导向的方法,EnhanceNet、SRGAN、ESRGAN为基于GAN的方法

分析可知,ESRGAN有更清晰和更细节的特征。PSNR导向的方法容易产生模糊的结果,而之前基于GAN的方法会有不自然和噪声的出现,并且偶尔会有伪影

3.4 消融实验

通过对结果的分析可知:

①在移除BN层后并没有减弱模型性能,同时还维持了计算资源和内存占用。作者还进一步进行了实验表明当网络加深后,带有BN层可能会产生伪影

②使用激活前的特征会使结果的亮度更精准。直方图的结果表明运用激活后的特征会使颜色分布向左偏离,导致图像更昏暗,而使用激活前的特征更接近真实值。同时图(b)表明使用激活后的特征能得到更清晰的边缘和更丰富的纹理

③相对的鉴别器能够学习到更清晰的边界和更多细节纹理

④更深层的网络有更强的表达能力从而捕捉更多的语义信息,能够提高图像的纹理并减少噪声。同时由于RRDB模块没有携带BN层使得深层网络也能很好训练

⑤作者还发现当数据集更大时生成器能产生更自然的结果

3.5 网络插值

作者比较了网络插值和图像插值策略,单纯基于GAN的方法能产生更清晰的边缘和更丰富的纹理,但会有一些伪影;而单纯PSNR导向的方法会输出较模糊的图像,通过采用插值,能在这两者之间达到平衡

4.总结

作者提出了一种有更好感知质量的ESRGAN模型,其中包含多个不携带BN层的RDDB模块,还使用了残差缩放较小初始化等技术来促进深度模型的训练。作者引入了相对GAN作为鉴别器,学习判断一个图像是否比另一个图像更真实,引导生成器恢复更细节的纹理,并通过使用在激活之前的特征来增强感知损失,提供更强的监督,从而得到更准确的亮度和逼真的纹理

5.阅读参考

文献阅读: ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks_perceptual index-CSDN博客

超分辨率论文阅读—ESRGAN(2018ECCV) - 知乎 (zhihu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3031005.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

SDXL-ControlNet模型MistoLine:引领高精度图像生成的革新高质量图像模型

在数字艺术的浩瀚星空中,MistoLine犹如一颗璀璨的新星,以其对SDXL-ControlNet技术的深度整合,展示了对多种线稿类型的非凡适应能力,并在高精度图像生成领域树立了新的标杆。 GitHub:https://github.com/TheMistoAI/Mi…

Web实时通信的学习之旅:轮询、WebSocket、SSE的区别以及优缺点

文章目录 一、通信机制1、轮询1.1、短轮询1.2、长轮询 2、Websocket3、Server-Sent Events 二、区别1、连接方式2、协议3、兼容性4、安全性5、优缺点5.1、WebSocket 的优点:5.2、WebSocket 的缺点:5.3、SSE 的优点:5.4、SSE 的缺点&#xff1…

代码随想录day62 | 单调栈P2 | ● 503. ● 42.

终于来到了大名鼎鼎的接雨水, 舍友的23年暑期面试就是接雨水 XD 503.下一个更大元素II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是…

ArcGIS如何计算地级市间的距离

一、数据准备 加载配套实验数据包中的地级市和行政区划矢量数据(订阅专栏后,从私信查收数据),如下图所示: 二、计算距离 1. 计算邻近表 ArcGIS提供了计算点和另外点之间距离的工具:分析工具→邻域分析→生成临近表。 计算一个或多个要素类或图层中的要素间距离和其他邻…

C++ | Leetcode C++题解之第79题单词搜索

题目&#xff1a; 题解&#xff1a; class Solution { public:bool exist(vector<vector<char>>& board, string word) {rows board.size();cols board[0].size();for(int i 0; i < rows; i) {for(int j 0; j < cols; j) {if (dfs(board, word, i, …

flutter开发实战-log日志存储zip上传,发送钉钉机器人消息

flutter开发实战-log日志存储zip上传&#xff0c;发送钉钉机器人消息 当我们需要Apk上传的时候&#xff0c;我们需要将日志打包并上传到七牛&#xff0c;上传之后通过钉钉通知我们日志下载地址。 这里我使用的是loggy来处理日志 一、引入loggy日志格式插件 在工程的pubspec.…

指针系列三

文章目录 1.字符指针&#xff1a;2.数组指针&#xff1a;3.二维数组传参的本质4.函数指针变量typedef 关键字 5.函数指针数组6.转移表 1.字符指针&#xff1a; 字符指针&#xff0c;也称为字符串指针&#xff0c;是指向内存中的字符或字符串的指针。 在C语言中&#xff0c;字符…

bash: docker-compose: 未找到命令

bash: docker-compose: 未找到命令 在一台新的服务器上使用 docker-compose 命令时&#xff0c;报错说 docker-compose 命令找不到&#xff0c;在网上试了一些安装方法&#xff0c;良莠不齐&#xff0c;所以在这块整理一下&#xff0c;如何正确快速的安装 docker-compose cd…

Linux 进程间通信 System V系列: 共享内存,信号量,简单介绍消息队列

进程间通信 System V系列: 共享内存,初识信号量 一.共享内存1.引入2.原理3.系统调用接口1.shmget2.shmat和shmdt3.shmctl 4.边写代码边了解共享内存的特性1.ftok形成key,shmget创建与获取共享内存2.shm相关指令3.shmat和shmdt挂接和取消挂接4.shmctl获取共享内存信息,释放共享内…

判断字符是否唯一——力扣

面试题 01.01. 判定字符是否唯一 已解答 简单 相关标签 相关企业 提示 实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同。 示例 1&#xff1a; 输入: s "leetcode" 输出: false 示例 2&#xff1a; 输入: s "abc" 输出: true…

Vue项目npm install certificate has expired报错解决方法

1.Vue项目 npm install 安装依赖突然报错&#xff1a; npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.npm.taobao.org/zrender/download/zrender-4.3.0.tgz failed, reason: certificate has expired npm ERR! A com…

Xilinx 千兆以太网TEMAC IP核简介

Xilinx 公司提供了千兆以太网MAC控制器的可参数化LogiCORET™IP解决方案&#xff0c;通过这个IPCore可以实现FPGA与外部网络物理层芯片的互连。基于Xilinx FPGA 的以太网设计&#xff0c;大大降低了工程的设计复杂度&#xff0c;缩短了开发周期&#xff0c;加快了产品的面市速度…

金南瓜EAP库使用开发

前言 最近做了 一个半导体公司的上位机开发。厂商要求要支持EAP通讯。 先了解一下EAP是什么吧&#xff1f;百度资料 EAP&#xff08; Equipment Automation Program&#xff09;设备自动化处理&#xff0c;工厂实现设备自动化生产和管理。 1. 机台状态数据收集&#xff0c;包…

网络编程——Socket——模拟用户登录

功能一&#xff1a;模拟用户登录 功能二&#xff1a;实现客户发送登录用户信息&#xff0c;服务器端显示登录信息并响应给客户端登录成功 这里设置的用户登录信息为&#xff1a;admin&#xff0c;123456 实现&#xff1a; 1.首先&#xff0c;服务端创建并启动服务器&#x…

JINGWHALE 虚拟现实物质与空间理论 —— 全息世界

JINGWHALE 对此论文相关未知以及已知概念、定理、公式、图片等内容的感悟、分析、创新、创造等拥有作品著作权。未经 JINGWHALE 授权&#xff0c;禁止转载与商业使用。 一、虚拟现实物质与空间理论 物质是由离散的奇点JING粒子&#xff0c;依据不同的维度粒度&#xff0c;通过…

SSM【Spring SpringMVC Mybatis】——Mybatis(二)

如果对一些基础理论感兴趣可以看这一期&#x1f447; SSM【Spring SpringMVC Mybatis】——Mybatis 目录 1、Mybatis中参数传递问题 1.1 单个普通参数 1.2 多个普通参数 1.3 命名参数 1.4 POJO参数 1.5 Map参数 1.6 Collection|List|Array等参数 2、Mybatis参数传递【#与…

【全开源】JAVA台球助教台球教练多端系统源码支持微信小程序+微信公众号+H5+APP

功能介绍 球厅端&#xff1a;球厅认证、教练人数、教练的位置记录、助教申请、我的项目、签到记录、我的钱包、数据统计 教练端&#xff1a;我的页面&#xff0c;数据统计、订单详情、保证金、实名认证、服务管理、紧急求助、签到功能 用户端&#xff1a;精准分类、我的助教…

第八章小程序后端开发,运用Bmob后端云

比目后端云简介 一个完整的小程序系统&#xff0c;不但需要前端的展现&#xff0c;而且需要后端服务器的支撑&#xff0c;以提供数据服务。也就是说&#xff0c;开发一个真正完整的小程序应用&#xff0c;需要前后端的相互配合。小程序与远程服务器之间通过HTTPS传输协议进行数…

Spring框架学习笔记(二):Spring IOC容器配置 Bean,分别基于XML配置bean 和 基于注解配置 bean

1 Spring 配置/管理 bean 介绍 Bean 管理包括两方面 &#xff1a;创建 bean 对象&#xff1b;给 bean 注入属性 Bean 配置方式&#xff1a;基于 xml 文件配置方式&#xff1b;基于注解方式 2 基于 XML 配置 bean 2.1 通过类型来获取 bean 方法&#xff1a;给getBean传入一…

linux fdisk 银河麒麟操作系统 v10 磁盘分区和挂载 详细教程

1查看 未加载的磁盘 fdisk -l 2 开始分区 fdisk /dev/vdb #查看分区 #新建分区和保存 3 格式化和挂载 fdisk -l mkfs.xfs /dev/vdb1 #查看uuid blkid /dev/vdb1 mkdir /data vi /etc/fstab UUID209daa-fb1c-48f2-bf5e-e63f38cb8a /data xfs defaults 0 0 #加载下 mo…