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

FriendshipT 2024-10-02 11:01:02 阅读 62

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

前言相关介绍SRGAN 的工作原理核心思想主要组件训练目标

优点缺点总结

实验环境项目地址LinuxWindows

项目结构具体用法准备数据集进行训练进行测试测试基准数据集测试单张图像测试单个视频

参考文献

在这里插入图片描述

在这里插入图片描述

前言

由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击进入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 网络的特征图来衡量生成图像与真实高分辨率图像之间的相似性。感知损失:结合对抗损失和内容损失,旨在提高生成图像的视觉质量。

优点

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

缺点

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

总结

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

实验环境

<code>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 源代码地址提供了训练、测试所需使用的数据集。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

进行训练

<code>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 目录中。

进行测试

测试基准数据集

<code>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 目录中。

测试单张图像

在这里插入图片描述

<code>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]

在这里插入图片描述

在这里插入图片描述

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

测试单个视频

在这里插入图片描述

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。