超分辨重建——SRGAN网络训练自己数据集与推理测试(详细图文教程)

本文主要是介绍超分辨重建——SRGAN网络训练自己数据集与推理测试(详细图文教程),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇:
📝《图像去噪》
📝《超分辨率重建》
📝《语义分割》
📝《风格迁移》
📝《目标检测》
📝《暗光增强》
📝《模型优化》
📝《模型实战部署》

😊总结不易,多多支持呀🌹感谢您的点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖


在这里插入图片描述

目录

  • 一、SRGAN网络
    • 1.1 标题
    • 1.2 作者
    • 1.3 发表时间
    • 1.4 摘要
    • 1.5 主要内容
      • 1.5.1 生成对抗网络架构
      • 1.5.2 损失函数
      • 1.5.3 实验结果
    • 1.6 论文总结
  • 二、源码包准备
  • 三、环境准备
    • 3.1 报错:AttributeError: module 'torch' has no attribute 'compile'
    • 3.2 报错:RuntimeError: Windows not yet supported for torch.compile
  • 四、数据集准备
  • 五、训练
    • 5.1 预训练权重下载
    • 5.2 配置文件参数修改
    • 5.3 启动训练
    • 5.4 实时可视化训练过程损失函数走势
    • 5.5 训练结果
  • 六、测试
    • 6.1 测试配置文件修改
    • 6.2 启动测试
  • 七、推理速度
    • 7.1 GPU
    • 7.2 CPU
  • 八、超分效果展示
  • 九、总结

一、SRGAN网络

1.1 标题

“Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network”

1.2 作者

Christian Ledig, Lucas Theis, Ferenc Huszár, Jose Caballero, Andrew Cunningham, Alejandro Acosta, Andrew Aitken, Alykhan Tejani, Johannes Totz, Zehan Wang, Wenzhe Shi

1.3 发表时间

2017年

1.4 摘要

SRGAN通过利用生成对抗网络(GAN)来实现单图像超分辨率重建。传统的方法如基于均方误差(MSE)的优化通常会导致图像平滑且缺乏细节,而SRGAN通过引入感知损失函数(perceptual loss),使得重建的图像不仅在像素级别上更接近高分辨率图像,而且在感知质量上也更加接近真实图像。

1.5 主要内容

1.5.1 生成对抗网络架构

生成器(Generator):采用残差网络(ResNet)结构,能够有效地学习从低分辨率图像到高分辨率图像的映射。
判别器(Discriminator):判别器的任务是区分生成的高分辨率图像和真实的高分辨率图像。通过对抗训练,生成器能够学习生成更加逼真的图像。

1.5.2 损失函数

内容损失(Content Loss):利用VGG网络提取的特征来计算生成图像和真实图像之间的差异。
对抗损失(Adversarial Loss):来自GAN的对抗训练,使得生成器能够骗过判别器,从而生成更加逼真的图像。
感知损失(Perceptual Loss):

感知损失结合内容损失和对抗损失,旨在提高重建图像的感知质量,使其在视觉上更接近真实图像。

1.5.3 实验结果

SRGAN在多种数据集上进行了测试,结果表明,与传统方法(如基于MSE的方法)相比,SRGAN生成的图像在感知质量上有显著提升。在用户研究中,SRGAN生成的图像被评为更接近真实图像。

1.6 论文总结

SRGAN通过生成对抗网络和感知损失函数的结合,显著提升了单图像超分辨率重建的效果。该方法不仅在像素级别上达到了更高的精度,同时在视觉感知上也大幅提升,生成的图像更加逼真,细节更加丰富。

二、源码包准备

本配套教程源码包中已经下载好了测试模型和预训练模型,部分训练集和测试集。源码包获取方法文章末扫码到公众号「视觉研坊」中回复关键字:超分辨率重建SRGAN。获取下载链接。

Pytorch版的官网源码包地址:SRGAN

论文地址:论文

三、环境准备

下面是我自己训练和测试的环境,仅供参考,其它版本也行。

在这里插入图片描述

3.1 报错:AttributeError: module ‘torch’ has no attribute ‘compile’

该报错是因为yTorch 版本不支持 torch.compile 方法。这种方法是在 PyTorch 2.0 版本中引入的,而我使用的Pytorch为1.12版本

在windows电脑上我安装了2.0.1版Pytorch,继续报错。

3.2 报错:RuntimeError: Windows not yet supported for torch.compile

安装了2.0.1版本Pytorch,见下:

在这里插入图片描述

报错见下:

在这里插入图片描述

报错原因:在 PyTorch 2.0 中,torch.compile 目前不支持在 Windows 上运行。

解决办法:网络训练过程不加速,把compile关闭,具体见下:

在这里插入图片描述

关闭后,后续训练和测试,我继续在之前Pytotch1.12.1版本上操作。

解决该问题还有中方式使用 torch.jit.trace 替代torch.compile,后续没调试。

四、数据集准备

直接运行代码会自动下载数据集,某些情况下会下载中断,而且很慢,可以把数据集下载链接拷贝到迅雷中,速度较快,找数据集链接的方法见下,原论文中的数据集下载链接为:https://huggingface.co/datasets/goodfellowliu/SRGAN_ImageNet/resolve/main/SRGAN_ImageNet.zip

在这里插入图片描述

数据集下载好后,先通过split_images.py脚本将各种分辨率的图像裁剪为统一尺寸图片并保存到指定路径中。关于split_images.py脚本的具体用法,以及数据集的样子参考另外一篇博文:高分辨率图像分割成大小均匀图像

测试集的路径见下:

在这里插入图片描述

五、训练

源码中有net网络和gan网络,我主要讲解gan网络的训练和测试,net网络的训练和测试类同。源码中有2倍,4倍,8倍超分,本教程主要讲解4倍超分,其它超分类同。

5.1 预训练权重下载

直接运行脚本,代码也会自动下载预训练模型,如果自动下载出了问题,去下面文件中找到预训练模型下载链接:

在这里插入图片描述

自己下载的模型权重文件,存放到results\pretrained_models路径中:

在这里插入图片描述

5.2 配置文件参数修改

下面是常用参数,其它参数学生根据自己情况自行修改。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.3 启动训练

gan网络训练的主脚本为train_gan.py,在此脚本中修改训练用的配置文件路径,见下:

在这里插入图片描述
直接运行train_gan.py脚本开始训练:

在这里插入图片描述

部分训练过程见下:

在这里插入图片描述

5.4 实时可视化训练过程损失函数走势

在终端使用下面命令启动tensorboard实时可视化训练过程损失函数走势:

tensorboard --logdir=samples/logs/SRGAN_x4-SRGAN_ImageNet --port 6007

在这里插入图片描述

具体的可视化走势图见下:

在这里插入图片描述

5.5 训练结果

训练过程的模型权重文件自动保存到results\SRGAN_x4-SRGAN_ImageNet路径下:

在这里插入图片描述

训练过程中每一轮的模型权重文件保存到samples\SRGAN_x4-SRGAN_ImageNet路径下:

在这里插入图片描述

六、测试

6.1 测试配置文件修改

下面参数学者根据自己情况调整修改。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.2 启动测试

在这里插入图片描述

将上面required设置为False后,直接运行test.py脚本:

在这里插入图片描述

输出的评价指标如下:

在这里插入图片描述

测试结果保存到result_images\SRGAN_x4-SRGAN_ImageNet-Set14路径下:

在这里插入图片描述

七、推理速度

7.1 GPU

GPU测试环境:Nvidia GeForce RTX 3050。

120*90图像超分4倍 GPU平均推理时间:7.69ms/fps。

在这里插入图片描述

7.2 CPU

12th Gen Intel® Core™ i7-12700H 2.30 GHz。

下面是120*90图像超分4倍,CPU平均推理时间:302.31ms/fps。

在这里插入图片描述

八、超分效果展示

下面左图为bicubic上采样4倍,中间为原图,右图为SRGAN网络超分4倍结果图。

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

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

九、总结

以上就是超分辨重建SRGAN网络训练自己数据集与推理测试详细过程,超分效果与我超分专栏里的其他网络做对比。

感谢您阅读到最后!关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

这篇关于超分辨重建——SRGAN网络训练自己数据集与推理测试(详细图文教程)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方