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

实验环境

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 

项目地址

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_nametest 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_nametest 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开源项目

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

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

还没有评论