type
status
date
slug
summary
tags
category
icon
password
😀
这里写文章的前言: 一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。
 

📝 主旨内容

本文将通过使用MSLapSRN模型架构,来完整的跑一遍图像超分的baseline,中间会使用到SwanLab来进行模型监控以及最后的结果演示。

预备知识

LapSRN 模型架构

LapSRN:拉普拉斯金字塔超分辨率网络
LapSRN是一种深度学习架构,它利用拉普拉斯金字塔的概念来逐步提升图像的分辨率。它的核心思想是通过构建一个金字塔结构,其中每一层都负责增加图像的分辨率,从而细化图像的细节和纹理。LapSRN通过端到端的训练方法直接学习从低分辨率到高分辨率图像的映射。这种方法避免了传统超分辨率方法中的插值步骤,能够更有效地重建高质量的高分辨率图像。
MSLapSRN:多尺度拉普拉斯金字塔超分辨路网络
MSLapSRN是LapSRN的扩展,它在处理图像超分辨率问题时引入了多尺度处理机制。MSLapSRN的设计旨在同时处理多个分辨率的图像,利用不同尺度上的信息来更准确地重建高分辨率图像。这种多尺度方法允许网络更好地捕捉图像的细节和结构信息,从而在不同的放大倍数下生成更清晰、更准确的结果。通过在多个尺度上学习图像的细节,MSLapSRN能够在提高图像分辨率的同时保持图像质量,这对于需要在多种分辨率上进行图像分析和处理的应用来说非常重要。

1. 环境安装

在项目目录下打开终端,新建一个名为lapsrn-baseline的conda环境并激活
conda env create -f environment.yaml conda activate lapsrn-baseline

2. 准备数据集

本次使用的是我自己搜寻制作的数据集,适合小样本训练微调。包含test、train、validation三部分。首先需要使用一段matlab脚本将训练数据变成.mat后缀的数据,这样在使用python加载数据时就会很快。因为是速通baseline,这里我就帮大家把数据转换好了,大家在百度网盘链接中下载并复制到根目录下即可。
如果真正工程中的话,前几个都过时了,现在用得比较多的是div2k,包含8000张训练数据集和100张测试数据集,如果有需要大家可以通过Github联系我(太大了我就不放网盘上面了)
链接:https://pan.baidu.com/s/1J9zUdbDbOZrd63NU_7oFjg 提取码:qf3b --来自百度网盘超级会员V1的分享
链接:https://pan.baidu.com/s/1mz9sqFLAX1Sqgxo7SmCWfg 提取码:99wz --来自百度网盘超级会员V1的分享

3. 数据加载

  1. SRdataset.py
  1. test_dataset.py
根目录下,执行下列命令验证training_gernerator可以正常工作
python test_dataset.py
正常情况下,执行完成之后会新建一个testing文件夹,在下面会出现5组训练数据

4. 模型定义

  1. lapsrn.py

5. 模型训练

train.py

6. 配置训练可视化工具

我们使用SwanLab来监控整个训练过程,并进行最后的模型效果演示。在train.py中插入以下代码,以及在合适的地方使用swanlab.log记录参数,此处我在上面的train.py中已经添加过了,如果你是一步一步填写代码那么以下的代码无需添加。
接下来在终端中运行train.py命令就可以开启训练啦
如果你是第一次使用SwanLab,那么还需要去https://swanlab.cn上注册一个账号,在用户设置页面复制你的API Key,然后在训练开始时粘贴进去即可。
在我的机器上,我只有一块3060的卡,设定epoch=100实测train了大约18分钟,下面是记录的在validation数据集上的loss,可以看到loss降的还是挺快的。有算力的朋友可以自己试试看设置max_epochs = 1000,这样就也能看到train_loss
同样在SwanLab中也可以看到你的环境配置信息哦!

7. demo文件展示

训练后会产生一个best.pt权重文件,因为考虑到不是所有小伙伴算力都很充足,我提供了我训练之后的best.pt文件,可直接使用这个权重文件来运行demo。
demo.py
在终端中执行上述代码,在根目录下生成out_2x以及out_4x图像,并可以通过SwanLab平台查看

8. 完整代码

主要目录结构:
| - - - dataset 数据集 | - - - swanlog 训练日志 | - - - SRdatasat.py 数据处理 | - - - test_dataset.py 测试数据是否能正常加载 | - - - lapsrn.py 模型定义 | - - - train.py 训练文件 | - - - environment.yaml 环境配置 | - - - best.pt 记录最好的checkpoint | - - - ckp.pt 记录每次的checkpoint
| - - - out_lr.png 用于最后的demo测试图像
相关的完整代码可以在我的Github上进行查阅https://github.com/little1d/lapsrn-baseline
欢迎star和follow喔!😯

📎 参考文章

 
💡
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
计算机组成与系统结构人工智能学科资料
  • Giscus
Zachary_Yang
Zachary_Yang
一个普通的干饭人🍚
Announcement
🎉欢迎来到我的博客🎉
-- 亲爱的读者们,你们好! ---
👏在这里,我希望能够和你们一起分享我对生活的观察、对技术的理解和热爱,暂将博客分为以下几个栏目👏
🌿 心绪漫卷边:一些小随笔
🌌 智绘非遇路:AI领域
😊 浅笑编程边:前后端开发
🛠 技术汇流石下:零散技术分享

祝好,
Zachary_Yang