【深度学习】实验7布置,图像超分辨

2024-02-10 21:52

本文主要是介绍【深度学习】实验7布置,图像超分辨,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

清华大学驭风计划

因为篇幅原因实验答案分开上传,

实验答案链接http://t.csdnimg.cn/P1yJF

如果需要更详细的实验报告或者代码可以私聊博主

有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟~~

深度学习训练营
案例 7 :图像超分辨
相关知识点:生成对抗网络、图像处理( PIL )和可视化( matplotlib

1 任务和数据简介

本次案例将使用生成对抗网络来实现 4 倍图像超分辨任务,输入一张低分辨率图像,生成器会生成一张 4 倍超分辨率的图像,如图 1 所示。生成对抗网络选用 SRGAN 结构 [1] 。本案例训练集使用 DIV2K 数据集 [2] ,包含有 800 2K 左右高分辨率的图像和 800 张对应的低分辨率图像;测试集使用 DIV2K 验证集 [2] 、Set5、 Set14 B100 Urban100 五个数据集,分别包括高分辨率图像和对应的低分辨率图像。训练集和测试集中的所有低分辨图像都是由高分辨率图像下采样得到,下采样方法为使用 Matlab 中的 resize 函数, scale factor 0.25 ,其余为默认参数(双三次插值)。
1 图像超分辨任务
本案例使用 PSNR SSIM 两个评价指标来衡量生成的高分辨率图像的质量,但指标的高低并不能直接反应图像质量的好坏,因此最终结果评价会加入人工评价,具体见第 4 部分的要求。

2 方法描述

模型结构

案例使用 [1] 中提出的 SRGAN 结构,生成器和判别器的结构与原论文保持一致,本案例要求自行实现 SRGAN 网络结构。

内容损失函数

对抗损失函数

3 参考程序及使用说明

本案例提供了部分代码供使用,各程序简介如下:
create_data_lists.py : 下载好训练集和测试集后,根据提供的数据集地址来生成案例训练测试所需要的 csv 文件。
datasets.py : 定义符合 pytorch 标准的 Dataset 类,供读入数据,注意训练阶段每张图片采样了 100 patch 来扩充训练集。
imresize.py : python 实现了 matlab resize 函数,用于图像下采样。目前
python 第三方包中尚未有能得到与 matlab resize 函数一样结果的函数。
solver.py : 定义了一个 epoch 的训练过程。
models.py : 定义 SRGAN 模型结构,需要自行实现。
train.ipynb : 用于训练的 jupyter 文件,其中超参数需要自行调节,训练过程中可以看到模型损失的变化,每个 epoch 训练后都会进行模型保存。
test.ipynb : 加载指定的训练好的模型文件,在 5 个测试集上进行测试,计算并报告各个数据集上的 PSNR SSIM 指标数值。
super_resolution.ipynb : 加载指定的训练好的模型文件,针对单个图片进行 4倍超分辨,并对结果进行可视化。
utils.py : 定义了一些可能会用到的函数,如图像数值格式转换等。
环境要求: python pytorch, torchvision, numpy, csv, PIL, matplotlib, easydict ,tqdm 等。
使用说明:
1) 下载训练集和测试集 [5] ,更改 create_data_lists.py 中数据集存放的位置,指定输出文件夹,运行该文件生成案例所需的 csv 文件; 2) 按照 SRGAN 网络结构完成 models.py
3) 运行 train.ipynb 训练网络,现在的训练模式为初始化生成器和判别器后,对生成器和判别器进行交替更新。这样的训练模式只能得到一个表现很差的模型。案例要求自行设计训练模式,如加入生成器的预训练等[4] ,更改 solver.py train.ipynb 训练出一个性能好的模型;
4) 运行 test.ipynb 对训练的模型进行测试,现在是对 5 个测试集进行 PSNR和 SSIM 的计算。其中包含了 DIV2K 数据集中的验证集,这个验证集也可以作为训练时用于调整参数的验证集(如需验证请自行修改 train.ipynb实现,不做要求);
5) 模型训练好之后运行 super_resolution.ipynb 生成供人工测评的图片。
4 要求与建议
完成 models.py 文件 ,可参考原论文 [1]
调节 train.ipynb 中的超参数,使网络结构与原论文保持一致。运行 train.ipynb使案例可以跑通基础模式的训练;
设计生成器和判别器的训练方式 ,可参考 [4] 中的训练方式,修改 solver.py 和train.ipynb 训练出性能更好的模型;
运行 test.ipynb 对模型在 5 个测试集上进行测试,记录 PSNR SSIM 结果;
运行 super_resolution.ipynb ,为 Set5 测试集 中的每一张低分辨图片生成相应的高分辨图片,保留结果供人工评价
完成一个实验报告,内容包括生成器和判别器的训练方式说明、模型最佳参数和对应的测试集结果、Set5 测试集图片生成结果、自己所做的尝试和改进;
5 参考材料
[1] Ledig, Christian, et al. "Photo-realistic single image super-resolution using a generative adversarial network." Proceedings of the IEEE conference on computervision and pattern recognition. 2017. https://arxiv.org/abs/1609.04802
[2] https://data.vision.ee.ethz.ch/cvl/DIV2K/
[3] https://zhuanlan.zhihu.com/p/50757421
[4] https://github.com/tensorlayer/srgan
[5] 数据集下载链接
训练集: http://data.vision.ee.ethz.ch/cvl/DIV2K/DIV2K_train_HR.zip http://data.vision.ee.ethz.ch/cvl/DIV2K/DIV2K_train_LR_bicubic_X4.zip
测试集: http://data.vision.ee.ethz.ch/cvl/DIV2K/DIV2K_valid_HR.zip
http://data.vision.ee.ethz.ch/cvl/DIV2K/DIV2K_valid_LR_bicubic_X4.zip
https://cloud.tsinghua.edu.cn/d/d97daf4c4b394abf86ec/

这篇关于【深度学习】实验7布置,图像超分辨的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06