SRGAN 使用指南:将低分辨率图像转换为高分辨率图像

2023-11-29 10:52

本文主要是介绍SRGAN 使用指南:将低分辨率图像转换为高分辨率图像,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SRGAN、ESRGAN、Real-ESRGAN 使用指南

    • SRGAN
      • 网络结构
      • 优化目标
    • ESRGAN
    • Real-ESRGAN

 


SRGAN

超分辨率:从低分辨率(LR)图像来估计其对应高分辨率(HR)图像的任务,被称作超分辨率(SR)。

SRGAN 图像超分辨率的深度学习模型,通过生成对抗网络(GAN)的训练,将低分辨率图像转换为高分辨率图像。

SRGAN 项目代码:https://github.com/tensorlayer/srgan

网络结构

分为 2 部分:

  • 生成器:残差模块(不改特征分辨率,图中的 B 个残差块)+ 上采样模块(提高分辨率,图中的反卷积层、重建层)
  • 判别器:卷积层(通道数不断增加,通道数增加一倍,特征分辨率减一半)

    上采样模块是,亚像素卷积上采样模块,通过卷积和像素重排操作实现上采样,可以保持图像的细节信息。

不是普通的上采样层,通过插值算法实现上采样,简单但可能会导致图像的细节信息丢失。

优化目标

分为 3 部分:感知损失、内容损失、对抗损失。

  • 感知损失 是基于感知质量评价指标(使用预训练的感知质量评价网络(如VGG网络)中的特征提取器来提取生成图像和真实图像的特征,并计算它们之间的欧氏距离)计算的。测量生成图像与真实高分辨率图像之间的感知差异。具体而言,通过计算生成图像和真实图像在特征空间中的距离,可以评估它们的相似性。感知损失帮助生成器学习到更接近真实图像的内容和结构

  • 内容损失 是基于均方误差(MSE)计算的。它测量生成图像与真实高分辨率图像之间的像素级差异。内容损失帮助生成器学习到更接近真实图像的细节和颜色

  • 对抗损失 是对抗性损失是通过判别器网络来评估生成图像的真实性,用于指导生成图像更逼真的外观和纹理

 


感知损失:内容损失 + 对抗性损失 × 权重

l S R l^{SR} lSR l X S R l_{\mathbf{X}}^{SR} lXSR 是同一个损失函数 l 的不同形式或表示。

l S R l^{SR} lSR 是总体损失函数,包括了两个部分: l X S R l_{\mathbf{X}}^{SR} lXSR 1 0 − 3 l G e n S R 10^{-3}l_{Gen}^{SR} 103lGenSR

  • 表示生成器网络的整体损失,用于优化生成器网络的训练。

l X S R l_{\mathbf{X}}^{SR} lXSR 是生成图像与真实高分辨率图像之间的差异损失函数。

  • 用于度量生成图像与真实图像之间的差异,并作为总体损失的一部分,目标是使生成图像尽可能接近真实高分辨率图像。

l X S R l_{\mathbf{X}}^{SR} lXSR 1 0 − 3 l G e n S R 10^{-3}l_{Gen}^{SR} 103lGenSR 是分别计算两个部分的损失函数,并根据一定的权重进行加权求和,得到总体损失函数 l S R l^{SR} lSR

  • 目的是平衡两个部分的重要性,使得生成器网络能够同时优化生成图像与真实图像之间的差异,并通过判别器网络的误分类来提高生成器的性能。

 


内容损失(基于VGG特征空间):将生成器得到ISR图像与IHR图像输入VGG-19网络,对每一层的特征映射计算欧式距离。

 


对抗损失:通过添加Gan生成网络损失,鼓励网络欺骗鉴别器。

 


ESRGAN

 


Real-ESRGAN

这篇关于SRGAN 使用指南:将低分辨率图像转换为高分辨率图像的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/432546

相关文章

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

Java实现XML与JSON的互相转换详解

《Java实现XML与JSON的互相转换详解》这篇文章主要为大家详细介绍了如何使用Java实现XML与JSON的互相转换,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. XML转jsON1.1 代码目的1.2 代码实现2. JSON转XML3. JSON转XML并输出成指定的

Java实现将Markdown转换为纯文本

《Java实现将Markdown转换为纯文本》这篇文章主要为大家详细介绍了两种在Java中实现Markdown转纯文本的主流方法,文中的示例代码讲解详细,大家可以根据需求选择适合的方案... 目录方法一:使用正则表达式(轻量级方案)方法二:使用 Flexmark-Java 库(专业方案)1. 添加依赖(Ma

Java实现将byte[]转换为File对象

《Java实现将byte[]转换为File对象》这篇文章将通过一个简单的例子为大家演示Java如何实现byte[]转换为File对象,并将其上传到外部服务器,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言1. 问题背景2. 环境准备3. 实现步骤3.1 从 URL 获取图片字节数据3.2 将字节数组

2025最新版Python3.13.1安装使用指南(超详细)

《2025最新版Python3.13.1安装使用指南(超详细)》Python编程语言自诞生以来,已经成为全球最受欢迎的编程语言之一,它简单易学易用,以标准库和功能强大且广泛外挂的扩展库,为用户提供包罗... 目录2025最新版python 3.13.1安装使用指南1. 2025年Python语言最新排名2.

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

Python使用PIL库将PNG图片转换为ICO图标的示例代码

《Python使用PIL库将PNG图片转换为ICO图标的示例代码》在软件开发和网站设计中,ICO图标是一种常用的图像格式,特别适用于应用程序图标、网页收藏夹图标等场景,本文将介绍如何使用Python的... 目录引言准备工作代码解析实践操作结果展示结语引言在软件开发和网站设计中,ICO图标是一种常用的图像

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像