Real-ESRGAN:Training Real-World Blind Super-Resolution with Pure Synthetic Data

news2024/9/22 23:29:09

https://github.com/NightmareAI/Real-ESRGAN/tree/masterhttps://github.com/NightmareAI/Real-ESRGAN/tree/master从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程 - 知乎超分辨率技术(Super-Resolution, SR)是指从观测到的低分辨率图像重建出相应的高分辨率图像,在监控设备、卫星图像和医学影像等领域都有重要的应用价值。 本文针对端到端的基于深度学习的单张图像超分辨率方法(Si…https://zhuanlan.zhihu.com/p/31664818Real-ESRGAN超分辨网络 - 知乎对超分有兴趣的同学们可直接关注微信公众号,这个号的定位就是针对图像超分辨的,会不断更新最新的超分算法解读。 正文开始论文: Real-ESRGAN: TrainingReal-World Blind Super-Resolution with Pure Synthetic D…https://zhuanlan.zhihu.com/p/393350811一.esrgan

srcnn->srgan->esrgan->realesrgan

esrgan主要是从3个方面对srgan进行改进,网络结构,对抗损失,感知损失。

a.网络结构:

1.移除了BN层,BN很多时候是伪影产生的原因,因为训练时是批数的均值方差,但是推理是全数据集的均值方差;2.将原始的resblock替换为residual-in-residual dense block.

b.对抗损失:

第一张图是sigmoid,第二张图是esrgan的relativistic discriminator,segma是sigmoid,标准的Gan是为了让真是图像的判别结果的概率更趋近于1,生成图像的判别结果概率更趋向于0,改进后的relativistic average discriminator,判别器对真实数据判别的原始值大于对生成数据判别的原始值,则第一个等式左侧,有C(REAL)-E(C(FAKE))>0,C是判别器结果,E是均值期望,且差值越大,表明两者距离越远,也就是该值经过sigmoid后的值越接近1,因此D的目的就是该值越接近1,real和fake直接的差距足够大,这就能将真实图片和生成图片很好的区分开。第二个等式,C(FAKE)-E(C(REAL))<0,差值越小,负值越多,表明两者距离越远,经过sigmoid后值越接近0。

生成器的目标函数如下:

判别器是为了更好的区分真实和生成,生成器是为了更难区分真实和生成。

c.Perceptual loss

提出了一种再vgg激活层钱获取感知损失(通过计算sr和hr的特征图之间的距离),而非传统srgan在激活层后计算感知损失,再激活层后计算感知损失有2个缺点,

1.激活层后的特征是已经稀疏化的,越深的网络越明显,稀疏的特征会导致更弱的监督,从而导致网络性能变差。

2. 使用激活层后的特征图计算感知损失会使得重建图像的亮度和gt不一致。

二、real-esrgan

real-esrgan和esrgan是同一个作者,esrgan提出的方法和思路被后续的很多论文借鉴。real-esrgan提出了四点对esrgan的改进,1.新的数据集构建方法,增强降阶图像的复杂度,2.构造数据集时引入sinc filter,解决了图像中的伪影,3.替换esrgan中的vgg-discriminator,使用unet-discriminator,4.引入spectral normalization以稳定复杂数据集和unet-discriminator带来的训练不稳定。

a.数据集构建

造成图像模糊的原因,包括,拍摄的手机,传感器噪声,相机模糊,图像编辑,图像在网络中的传输,JPEG压缩以及各种各样的噪声。

First-order:

first-order降级模型其实就是常规的降级模型,x表示降级后的图像,D表示降级函数,y代表原始图像,k代表模糊核,r代表缩小比例,n代表加入的噪声,JPEG代表进行压缩,每一种降级方法有多重方案可以选择

high-order由于使用相对简单的降级方法,很难模仿真实世界中的图像低分辨率情况,high-order是为了使用更复杂的降级方法 

上式就是对first-order进行多次重复操作,也就是每一个D都是执行一次完整的first-order降级,作者通过实验得出,当执行2次first-order时生成的数据集效果最好,因此上图就是high-order的流程图。

为了解决超分图像中的ring和overshoot现象,在构建降级模型时引入了sinc filter,

上图表示实际中的振铃和折冲伪影现象,下图表示通过sinc filter设置不同的因子人工模仿的振铃和折冲现象,sinc filter在两个位置进行设置,一是每一阶的模糊核k的处理中,也就是在高斯模糊之后,设置sinc filter,二是在最后一阶JEPG压缩时,设置sinc filter。

b.网络结构

生成器还是esrgan,对于x1和x2的超分时先进性pixel-unshuffle(pixel-shuffle的反操作,pixel-shuffle可理解为通过图像的通道而对图像尺寸进行放大),以降低图像分辨率为前提,对图像通道数进行扩充,然后对处理后的图像输入网络进行超分重建,对于一幅图像,若只想x2放大变清晰,需先通过pixel-unshuffle进行2被缩小,通过网络进行4倍放大。

c.unet-dscriminator

 将vgg换成了unet,并且加入了谱归一化。

d.训练

1.先通过l1 loss,训练以PSRN为导向的网络,获得模型成为real-esrnet,

2.以real-esrnet的网络进行网络初始化,损失函数设置为l1 loss,perceptual loss和gan loss,训练得到real-esrgan.

三、install

basicsr==1.4.2

python setup.py develop

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

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

相关文章

设计模式MVC、MVP、MVVM

MVC、MVP和MVVM是什么&#xff1f; MVC&#xff1a;Model-View-Controller&#xff0c;是一种分层解偶的框架&#xff0c;Model层提供本地数据和网络请求&#xff0c;View层处理视图&#xff0c;Controller处理逻辑&#xff0c;存在问题是Controller层和View层的划分不明显&am…

SpringBoot+@Validate+全局异常拦截实现自定义规则参数校验(校验get请求参数不能为空且在指定枚举类型中)

场景 SpringBootValidated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例&#xff1a; SpringBootValidated实现参数验证(非空、类型、范围、格式等)-若依前后端导入Excel数据并校验为例_validated 怎么设置boolean类型非空_霸道流氓气质的博客-…

Elasticsearch02

目录 Elasticsearch02DSL查询文档查询所有全文检索查询精确查询地理查询复合查询 搜索结果处理排序分页高亮 DSL总结RestClient查询文档快速入门:match_all查询match查询精确查询布尔查询排序、分页高亮 实战案例HotelControllerIHotelServiceHotelMapperHotelHotelDocPageResu…

Google SEO优化的10大误区

以下是 Google SEO 优化的十大误区&#xff1a; 1、关键词堆砌&#xff1a; 过度使用关键词&#xff0c;使得内容不自然&#xff0c;难以阅读&#xff0c;同时也会被搜索引擎认为是垃圾信息&#xff0c;影响网站排名。 2、内容质量差&#xff1a; 质量差的内容会降低用户的体…

矩池云上配置FusionGan环境

1、租赁环境 2、vscode 连接 矩池云 教程&#xff1a;https://www.matpool.com/supports/doc-vscode-connect-matpool/ 3、进入mnt文件夹 cd ../mnt 4、克隆代码 git clone https://github.com/jiayi-ma/FusionGAN.git 如果克隆不下来&#xff0c;就自己下载&#xff0c;…

ESP32 DW1000 UWB 室内定位系统

相关软件代码下载》》 概述 在这个项目中,我们将制作一个基于 ESP32 DW1000 UWB 的室内定位系统。为此,我们将使用 2 个 UWB 锚点和 1 个 UWB 标签。当标签移动时,UWB 标签的实时位置可以使用Python 程序在PC 上以图形方式显示。 工业环境中的室内跟踪通常需要非常精确的…

C++引用的相关定义以及使用场景与指针之前的区别

一、引用的定义与特性 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 引用的特性&#xff1a; 引用在定义时必须初始化一个变量可以有多个引用引用一旦引用…

电脑技巧:宽带怎么设置教程笔记,看完你就会了

宽带的设置是指将计算机连接到互联网的过程。一般来说&#xff0c;宽带的设置是非常简单的&#xff0c;只需要按照提供商的要求&#xff0c;正确地连接硬件和软件就可以了。下面将详细介绍如何设置宽带。 硬件设置&#xff1a;首先&#xff0c;需要连接计算机和调制解调器&…

sharding-jdbc读写分离实战

一、读写分离介绍 Sharding-JDBC读写分离则是根据SQL语义的分析&#xff0c;将读操作和写操作分别路由至主库与从库。它提供透明化读写分离&#xff0c;让使用方尽量像使用一个数据库一样使用主从数据库集群。 为了实现Sharding-JDBC的读写分离&#xff0c;首先&#xff0c;要…

Leetcode2404. 出现最频繁的偶数元素

Every day a Leetcode 题目来源&#xff1a;2404. 出现最频繁的偶数元素 解法1&#xff1a;哈希 我们构建一个这样的哈希表 unordered_map<int, int> umap&#xff1a; key&#xff1a;偶数数组元素 nums[i]value&#xff1a;nums[i]的出现次数 count 我们遍历一次数…

算法之路--快速排序算法

由于冒泡算法算法之路--冒泡算法&#xff08;算法之路--冒泡算法&#xff09;每轮都要进行从头到落位之前的每个元素的比较&#xff0c;在执行效率上需要提升&#xff0c;快速排序算法就是对冒泡算法的一种效率上的提升。 算法思路 快速排序是基于冒泡的改进&#xff0c;所以基…

力扣回溯算法专题(二)- 切割 子集问题 131.分割回文串、93. 复原IP地址、78. 子集、90. 子集Ⅱ、491.递增子序列 思路 C++实现 总结

文章目录 切割问题子集问题回溯法模板与伪代码131. 分割回文串三要素及思路回文字符串判断代码 93. 复原IP地址三要素及思路验证子串是否合法代码 78. 子集三要素及思路代码 90. 子集Ⅱ三要素及思路三种去重方式代码 491.递增子序列三要素及思路去重方式及去重优化代码 总结1. …

Django框架004:orm对mysql的增删改查

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

TypeScript 配置简述

TypeScript 配置简述 初始化项目的过程为&#xff1a; 新建一个项目 这里使用 yarn init -y 去创建一个 node 项目&#xff0c;随后使用 yarn add typescript 下载 TS 的依赖 新建一个 ts 文件 console.log(test);随意 log 一点东西进行测试 使用 tsc 编译 ts 文件 ❯ yarn …

为什么国外资深的软件测试多是手动测试,但在国内,都推崇自动化测试?

将自动化测试当成很了不起的资本&#xff0c;源于国内对Coding的崇拜 譬如一个Dev跟一个QA放在一起&#xff0c;大家的第一直观印象就是——前者的技术能力比较强。 实际上&#xff0c;这个问题分两面看&#xff1a; 自动化测试能力是不是资本&#xff1f; 当然是。 测试自动…

redis(7)

全局ID生成器: 全局ID生成器&#xff0c;是一种在分布式系统下用来生成全局唯一ID的工具&#xff0c;一般要满足以下特性 唯一性高可用(随时访问随时生成)递增性安全性(不能具有规律性)高性能(生成ID的速度快) 为了增加ID的安全性&#xff0c;我们不会使用redis自增的数值&am…

yolov4

1 V4版本概述 集各种优秀方案于一身&#xff0c;嫁接了众多主流的目标识别方面的情况。 V4 贡献 3. 数据增强策略分析 BOF Bag of freebies(BOF) Mosiac 数据增强 Mixup 比如将狗和猫的两张图片混合&#xff0c;一半猫&#xff0c;一半狗。 label 也变成 Dog 0.5 , Cat 0…

JAVA中PO、VO、BO、POJO、DAO、DTO、TO的理解

目录 1.阿里规范 1.1.Service/DAO 层方法命名规约 1.2.领域模型命名规约 1.3.命名风格 2.简单类&#xff1a;包括 DO/DTO/BO/VO 等 3.与MVC三层架构的关系 4.总结 4.1.为什么要分这些对象 4.2.什么时候需要定义这么多O 4.3.实体对象之间如何转换&#xff1f; 参考资…

Ground-aware Monocular 3D Object Detection for Autonomous Driving论文

1 摘要 摘要&#xff1a;使用单个RGB相机估计环境中物体的3D位置和方向是低成本城市自主驾驶和移动机器人的一项至关重要的挑战性任务。大多数现有算法基于二维-三维对应中的几何约束&#xff0c;这源于一般的6D目标姿态估计。我们首先确定地平面如何在驾驶场景的深度推理中提…

RT-Thread 5.0.1 qemu-virt64-aarch64 解决编译问题

前言 最近在最新的 RT-Thread 上搭建 bsp qemu-virt64-aarch64 的编译环境&#xff0c;发现较新的 gcc 交叉编译器编译失败了。 经过尝试较旧版本的 gcc 交叉编译工具链&#xff0c;终于编译通过了 下载 gcc 交叉编译工具链&#xff0c;这里推荐使用 arm 官方的 gcc 下载地址…