0


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

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

在这里插入图片描述

在这里插入图片描述

前言

  • 由于本人水平有限,难免出现错漏,敬请批评改正。
  • 更多精彩内容,可点击进入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开源项目

相关介绍

在这里插入图片描述
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 仍然是当前图像超分辨率领域的重要里程碑之一。

实验环境

  1. python=3.8.19
  2. torch=1.9.0
  3. torchaudio=0.9.0
  4. torchvision=0.10.0
  5. opencv-python==4.1.2.30
  6. scikit-image==0.16.2
  7. pillow==7.0.0
  8. scipy==1.2.1
  9. tqdm==4.43.0

项目地址

Linux

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

Windows

请到

  1. https://github.com/leftthomas/SRGAN.git

网站下载源代码zip压缩包。

  1. cd SRGAN-master

项目结构

  1. SRGAN-master
  2. ├─benchmark_results
  3. └─SRF_4
  4. ├─data
  5. ├─DIV2K_train_HR
  6. ├─DIV2K_valid_HR
  7. ├─test
  8. ├─SRF_2
  9. ├─data
  10. └─target
  11. ├─SRF_3
  12. ├─data
  13. └─target
  14. ├─SRF_4
  15. ├─data
  16. └─target
  17. └─SRF_8
  18. ├─data
  19. └─target
  20. └─test_videos
  21. ├─epochs
  22. ├─images
  23. ├─out_srf_4_data
  24. └─test
  25. └─SRF_8
  26. └─data
  27. ├─pytorch_ssim
  28. └─__pycache__
  29. ├─statistics
  30. ├─training_results
  31. └─SRF_4
  32. └─__pycache__

具体用法

准备数据集

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

进行训练

  1. python train.py
  2. optional arguments:
  3. --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 目录中。

进行测试

测试基准数据集

  1. python test_benchmark.py
  2. optional arguments:
  3. --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 目录中。

测试单张图像

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

测试单个视频

在这里插入图片描述

  1. python test_video.py --video_name test.mp4
  2. optional arguments:
  3. --upscale_factor super resolution upscale factor [default value is 4]--video_nametest low resolution video name
  4. --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开源项目

本文转载自: https://blog.csdn.net/FriendshipTang/article/details/141173824
版权归原作者 FriendshipT 所有, 如有侵权,请联系我们删除。

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

还没有评论