SRGAN:使用生成对抗网络对图像进行超分辨率重构

news2024/11/24 17:45:12

SRGAN:使用生成对抗网络对图像进行超分辨率重构

  • 前言
  • 相关介绍
      • SRGAN 的工作原理
        • 核心思想
        • 主要组件
        • 训练目标
      • 优点
      • 缺点
      • 总结
  • 实验环境
  • 项目地址
    • Linux
    • Windows
  • 项目结构
  • 具体用法
    • 准备数据集
    • 进行训练
    • 进行测试
      • 测试基准数据集
      • 测试单张图像
      • 测试单个视频
  • 参考文献

在这里插入图片描述

在这里插入图片描述

前言

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv10训练自己的数据集(交通标志检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

相关介绍

  • [1] SRGAN 源代码地址:https://github.com/leftthomas/SRGAN.git
  • [2] SRGAN 论文地址:https://arxiv.org/abs/1609.04802

在这里插入图片描述
SRGAN(Super-Resolution Generative Adversarial Networks)是一种用于图像超分辨率(Super-Resolution, SR)的生成对抗网络(Generative Adversarial Network, GAN)架构。SRGAN 能够将低分辨率图像放大到高分辨率图像,同时保持细节清晰且逼真。下面是关于 SRGAN 的详细介绍及其优缺点。

SRGAN 的工作原理

核心思想

SRGAN 是由 Christian Ledig 等人在 2016 年提出的,其主要目标是提高图像的分辨率,同时增强图像的视觉质量。SRGAN 通过使用生成对抗网络(GAN)的框架来实现这一目标。

主要组件
  • 生成器:负责将低分辨率图像放大至高分辨率图像。
  • 判别器:用来评估生成的高分辨率图像的质量,区分它们是否看起来真实。
训练目标
  • 对抗损失:确保生成的高分辨率图像能够欺骗判别器,让判别器误认为是真实的高分辨率图像。
  • 内容损失:通常使用 VGG 网络的特征图来衡量生成图像与真实高分辨率图像之间的相似性。
  • 感知损失:结合对抗损失和内容损失,旨在提高生成图像的视觉质量。

优点

  1. 视觉质量提升:SRGAN 通过对抗训练提高了生成图像的视觉质量,使其看起来更真实、细节更丰富。
  2. 细节保留:相比传统的超分辨率方法,SRGAN 更好地保留了图像的细节。
  3. 适应性强:可以应用于多种类型的图像,包括自然图像、医学图像等。
  4. 端到端训练:整个系统可以通过端到端的方式进行训练,简化了模型设计和训练流程。
  5. 灵活性:可以根据具体应用需求调整模型的参数和训练策略。

缺点

  1. 训练时间和资源:SRGAN 的训练过程可能需要大量的计算资源和较长的时间。
  2. 过度拟合风险:如果没有足够的数据或者正则化不足,模型可能会出现过度拟合的现象。
  3. 噪声敏感性:对输入图像中的噪声非常敏感,噪声可能会被放大到生成的高分辨率图像中。
  4. 质量不稳定性:生成的图像质量可能会因训练过程中的不稳定因素而有所波动。
  5. 计算复杂度:相比于传统的超分辨率方法,如双三次插值,SRGAN 的计算成本更高。

总结

SRGAN 作为一种基于 GAN 的超分辨率技术,能够在保持图像细节的同时显著提高图像的分辨率。它通过对抗学习和内容损失相结合的方法,实现了高质量的图像放大效果。然而,SRGAN 的训练和应用也存在一些挑战,比如较高的计算成本和对噪声的敏感性。尽管如此,SRGAN 仍然是当前图像超分辨率领域的重要里程碑之一。

实验环境

python=3.8.19
torch=1.9.0
torchaudio=0.9.0
torchvision=0.10.0
opencv-python==4.1.2.30 
scikit-image==0.16.2
pillow==7.0.0 
scipy==1.2.1 
tqdm==4.43.0 

项目地址

  • SRGAN 源代码地址:https://github.com/leftthomas/SRGAN.git

Linux

git clone https://github.com/leftthomas/SRGAN.git
cd SRGAN-master

Windows

请到https://github.com/leftthomas/SRGAN.git网站下载源代码zip压缩包。

cd SRGAN-master

项目结构

SRGAN-master
├─benchmark_results
│  └─SRF_4
├─data
│  ├─DIV2K_train_HR
│  ├─DIV2K_valid_HR
│  ├─test
│  │  ├─SRF_2
│  │  │  ├─data
│  │  │  └─target
│  │  ├─SRF_3
│  │  │  ├─data
│  │  │  └─target
│  │  ├─SRF_4
│  │  │  ├─data
│  │  │  └─target
│  │  └─SRF_8
│  │      ├─data
│  │      └─target
│  └─test_videos
├─epochs
├─images
├─out_srf_4_data
│  └─test
│      └─SRF_8
│          └─data
├─pytorch_ssim
│  └─__pycache__
├─statistics
├─training_results
│  └─SRF_4
└─__pycache__

具体用法

准备数据集

  • SRGAN 源代码地址提供了训练、测试所需使用的数据集。在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

进行训练

python train.py

optional arguments:
--crop_size                   training images crop size [default value is 88]
--upscale_factor              super resolution upscale factor [default value is 4](choices:[2, 4, 8])
--num_epochs                  train epoch number [default value is 100]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 输出结果位于 training_results 目录中。

进行测试

测试基准数据集

python test_benchmark.py

optional arguments:
--upscale_factor              super resolution upscale factor [default value is 4]
--model_name                  generator model epoch name [default value is netG_epoch_4_100.pth]

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 输出的超分辨率图像位于 benchmark_results 目录中。

测试单张图像

在这里插入图片描述

python test_image.py --image_name test.jpg

optional arguments:
--upscale_factor              super resolution upscale factor [default value is 4]
--test_mode                   using GPU or CPU [default value is 'GPU'](choices:['GPU', 'CPU'])
--image_name                  test low resolution image name
--model_name                  generator model epoch name [default value is netG_epoch_4_100.pth]

在这里插入图片描述

在这里插入图片描述

  • 输出的超分辨率图像位于同一目录中。

测试单个视频

在这里插入图片描述

python test_video.py --video_name test.mp4

optional arguments:
--upscale_factor              super resolution upscale factor [default value is 4]
--video_name                  test low resolution video name
--model_name                  generator model epoch name [default value is netG_epoch_4_100.pth]

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 文章输出视频GIF压缩了。
  • 输出的超分辨率视频和对比视频在同一目录下。

参考文献

[1] SRGAN 源代码地址:https://github.com/leftthomas/SRGAN.git
[2] SRGAN 论文地址:https://arxiv.org/abs/1609.04802

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看
  • 基于DETR的人脸伪装检测
  • YOLOv7训练自己的数据集(口罩检测)
  • YOLOv8训练自己的数据集(足球检测)
  • YOLOv10训练自己的数据集(交通标志检测)
  • YOLOv5:TensorRT加速YOLOv5模型推理
  • YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU
  • 玩转Jetson Nano(五):TensorRT加速YOLOv5目标检测
  • YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制
  • YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层
  • Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集
  • YOLOv5:使用7.0版本训练自己的实例分割模型(车辆、行人、路标、车道线等实例分割)
  • 使用Kaggle GPU资源免费体验Stable Diffusion开源项目

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

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

相关文章

深度剖析:Jenkins构建任务无法中断的原因及解决方案

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

20240814使用串口控制MC-105Q的机芯确认变焦

20240814使用串口控制MC-105Q的机芯确认变焦 2024/8/14 20:44 缘起:使用的是LVDS OUT的MC-105Q的机芯,最近需要查看光学/电子变焦。 打开电子变焦:81 01 04 06 02 ff 放大:81 01 04 07 02 FF 缩小:81 01 04 07 03 FF 串…

想要在数据治理领域脱颖而出?了解CDGA认证的重要性

CDGA认证是专注于数据治理领域的专业资格证明。 CDGA(即认证数据治理助理)是数据管理专家认证的一部分,旨在验证和展示个人在数据治理方面的专长和技巧。 下面是关于CDGA认证的详细说明: 1. CDGA认证的组织背景:DAM…

Vue.js-分析

目录 Vue.js基本概念和特性Vue.js生态系统Vue.js版本和更新Vue.js学习Vue.js进阶问题Vue.js中虚拟DOM的工作原理虚拟DOM的创建差异算法应用更新 Vue.js的组件化编程模型优势Vue 3相比Vue 2改进之处 Vue.js Vue.js(通常简称为 Vue)是一个开源的前端JavaS…

Python使用configparser管理配置文件

前言 在 Python 项目开发中,配置文件通常用于存储配置信息,例如数据库连接参数、日志设置、应用程序行为等。这些信息可以与代码分离,使得应用程序更易于维护和管理。Python 的标准库中提供了一个非常有用的模块——configparser&#xff0c…

鸿蒙AI功能开发【卡证识别控件】场景视觉化服务

卡证识别控件 介绍 本示例展示了使用视觉类AI能力中的卡证识别能力。 本示例模拟了在应用里,跳转卡证识别控件,获取到验证结果并展示出来。 需要使用hiai引擎框架卡证识别验证接口kit.VisionKit.d.ts。 效果预览 使用说明: 在手机的主屏…

sp eric靶机渗透测试

一、靶机下载地址 https://www.vulnhub.com/entry/sp-eric,274/ 二、信息收集 1、主机发现 # 使用命令 nmap 192.168.145.0/24 -sn | grep -B 2 "00:0C:29:FD:57:BE" 2、端口扫描 # 使用命令 nmap 192.168.145.211 -p- -sV 3、指纹识别 # 使用命令 whatweb 192…

Cesium天空盒子(Skybox)制作(js代码)和显示

介绍 在Cesium中,星空背景是通过天空盒子方式(6张图片)来显示的,原生的图片分辨率太低,本项目用于生成天空盒子的6张图片。最终生成的6个图片大小约为500kb(每个),格式为jpg,总共的恒星数目约为…

【案例45】报表计算卡死问题排查

问题现象 月结期间报表计算没有反映,报表计算不出结果。情况十分着急。 问题分析 查看数据库发现,数据库有锁。相关锁源头的blocking_session为1144。 查看1144的执行机器名为nctest,非NC生产环境所在机器 由程序触发,很有可能在…

基于开源MaxKB构建大语言模型的本地知识库系统

基于开源MaxKB构建大语言模型的本地知识库系统 什么是MaxKB MaxKB是一款基于LLM(Large Language Model)大语言模型的知识库问答系统。MaxKB的产品命名内涵为“Max Knowledge Base”,为用户提供强大的学习能力和问答响应速度,致力…

Coggle数据科学 | 行业落地分享:大模型 RAG 汽车应用实践

本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。 原文链接:行业落地分享:大模型 RAG 汽车应用实践 在人工智能的浪潮下,大模型技术正以其强大的数据处理能力和深度学习能力&#xff…

【MySQL进阶】事务、存储引擎、索引

一、事务 1.概念 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向 系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 例子:转账,要求扣钱和进账…

PyTorch--卷积神经网络(CNN)模型实现手写数字识别

文章目录 前言完整代码代码解析1. 导入必要的库2. 设备配置3. 超参数设置4. 加载MNIST数据集5. 创建数据加载器6. 定义卷积神经网络模型7. 实例化模型并移动到设备8. 定义损失函数和优化器9. 训练模型10. 测试模型11. 保存模型 常用函数解析小改进数据集部分可视化训练过程可视…

阿里V2缺口图-滑块验证码逆向分析思路学习

一、声明! 原创文章,请勿转载! 本文内容仅限于安全研究,不公开具体源码。维护网络安全,人人有责。 文章中所有内容仅供学习交流使用,不用于其他任何目的,均已做脱敏处理&…

【Datawhale X 魔搭 】AI夏令营第四期大模型方向,Task1:智能编程助手(持续更新)

在一个数据驱动的世界里,人工智能的未来应由每一个愿意学习和探索的人共同塑造和掌握。希望这里是你实现AI梦想的起点。 大模型小白入门:https://linklearner.com/activity/14/11/25 大模型开发工程师能力测试:https://linklearner.com/activ…

20240810在荣品RK3588S-AHD开发板的预置Android13下挂载exFAT的256GB的TF卡

df -h mount fdisk无效 20240810在荣品RK3588S-AHD开发板的预置Android13下挂载exFAT的256GB的TF卡 2024/8/10 21:19 缘起:当时比较便宜96.9¥/想看看256GB的TF卡的高速卡的效果,就在京东入手了3张三星的高速TF卡。最近在弄RK3588S&#xff0c…

部署和体验llama3.1:8B中文微调版本

前言 llama-3-1 meta于2024-07-23发布 https://ai.meta.com/blog/meta-llama-3-1/ 文档 https://llama.meta.com/docs/llama-everywhere/running-meta-llama-on-linux/ git https://github.com/meta-llama/llama3 Cloudflare提供了免费访问的入口 https://linux.do/t/to…

uvm(7)factory

重载 针对任务或者函数,定义virtual;然后就可以重载 第二个是 约束的重载 然后 m_trans.crc_err_cons.constraint_mode(0); 这个是关闭此约束 m_trans.constraint_mode(0); 这是关闭所有约束 还可以集成原来的transation直接重写约束起到重载的作用 用factory重…

二十二、简易画图工具

目录 一、设计需求 二、示例代码 三、代码解析 1、setAutoFillBackground函数的作用 2、resizeEvent被调用的时机 四、Qt5双缓冲机制 五、总结 一、设计需求 实现一个简单的绘图工具,可以选择线型、线宽及颜色等基本要素。 二、示例代码 mainwindow.cpp #in…

Dijkstra算法c++详解

算法是一种用于寻找图中两点间最短路径的算法&#xff0c;适用于无负权边的图。下面是一个使用C实现的算法示例&#xff0c;使用优先队列来优化算法效率&#xff1a; #include <iostream> #include <climits> // For INT_MAX #include <vector> #include &l…