SwinIR实战:详细记录SwinIR的训练过程

这篇具有很好参考价值的文章主要介绍了SwinIR实战:详细记录SwinIR的训练过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SwinIR实战:详细记录SwinIR的训练过程。

论文地址:https://arxiv.org/pdf/2108.10257.pdf

预训练模型下载:https://github.com/JingyunLiang/SwinIR/releases

训练代码下载:https://github.com/cszn/KAIR

测试代码:https://github.com/JingyunLiang/SwinIR

论文翻译:https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/124434886

测试:https://wanghao.blog.csdn.net/article/details/124517210

在写这边文章之前,我已经翻译了论文,讲解了如何使用SWinIR进行测试?

接下来,我们讲讲如何SwinIR完成训练,有于作者训练了很多任务,我只复现其中的一种任务。

下载训练代码

地址:https://github.com/cszn/KAIR

这是个超分的库,里面包含多个超分的模型,比如SCUNet、VRT、SwinIR、BSRGGAN、USRNet等模型。

swinir训练,图像超分,深度学习,计算机视觉,人工智能

swinir训练,图像超分,深度学习,计算机视觉,人工智能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B5Md9i7H-1651410061139)(https://gitee.com/wanghao1090220084/cloud-image/raw/master/img/face_09_comparison.png)]

下载后解压,训练SwinIR的REANDME.md,路径:./docs/README_SwinIR.md

数据集

训练和测试集可以下载如下。 请将它们分别放在 trainsetstestsets 中。

任务 训练集 测试集
classical/lightweight image SR DIV2K (800 training images) or DIV2K +Flickr2K (2650 images) set5 + Set14 + BSD100 + Urban100 + Manga109 download all
real-world image SR SwinIR-M (middle size):
DIV2K (800 training images) +Flickr2K (2650 images) + OST (10324 images,sky,water,grass,mountain,building,plant,animal)
SwinIR-L (large size):
DIV2K + Flickr2K + OST + WED(4744 images) + FFHQ (first 2000 images, face) + Manga109 (manga) + SCUT-CTW1500 (first 100 training images, texts)
RealSRSet+5images
color/grayscale image denoising DIV2K (800 training images) + Flickr2K (2650 images) + BSD500 (400 training&testing images) + WED(4744 images) grayscale: Set12 + BSD68 + Urban100
color: CBSD68 + Kodak24 + McMaster + Urban100 download all
JPEG compression artifact reduction DIV2K (800 training images) + Flickr2K (2650 images) + BSD500 (400 training&testing images) + WED(4744 images) grayscale: Classic5 +LIVE1 download all

我下载了DIV2K数据集和 Flickr2K数据集,DIV2K大小有7G+,Flickr2K约20G。如果网速不好建议只下载DIV2K。

注:在选用classical任务,做训练时,只能使用DIV2K或者Flickr2K,不能把两种数据集放在一起训练,否则就出现维度对不上的情况,如下图:

swinir训练,图像超分,深度学习,计算机视觉,人工智能

暂时没有找到原因。

构建测试集,测试集的路径如下图:

swinir训练,图像超分,深度学习,计算机视觉,人工智能

由于表格中的测试集放在google,我不能下载,但是SwinIR的测试代码中有测试集,代码链接:https://github.com/JingyunLiang/SwinIR,下载下来直接复制到testsets文件夹下面。

构建训练集,将下载下来的DIV2K解压。将DIV2K_train_HR复制到trainsets文件夹下面,将其改为trainH。

swinir训练,图像超分,深度学习,计算机视觉,人工智能

将DIV2K_train_LR_bicubic文件夹的X2文件夹复制到trainsets文件夹下面,然后将其改名为trainL。

swinir训练,图像超分,深度学习,计算机视觉,人工智能

到这里,数据集部分就完成了,接下来开始训练。

训练

首先,打开options/swinir/train_swinir_sr_classical.json文件,查看里面的内容。

"task": "swinir_sr_classical_patch48_x2" 

训练任务的名字。

"gpu_ids": [0,1]

选择GPU的ID,如果只有一快GPU,改为 [0]。如果有更多的GPU,直接往后面添加即可。

"scale": 2  //2,3,48

放大的倍数,可以设置为2、3、4、8.

"datasets": {
  "train": {
    "name": "train_dataset"           // just name
    , "dataset_type": "sr"         // "dncnn" | "dnpatch" | "fdncnn" | "ffdnet" | "sr" | "srmd" | "dpsr" | "plain" | "plainpatch" | "jpeg"
    , "dataroot_H": "trainsets/trainH"// path of H training dataset. DIV2K (800 training images)
    , "dataroot_L": "trainsets/trainL"              // path of L training dataset

    , "H_size": 96                   // 96/144|192/384 | 128/192/256/512. LR patch size is set to 48 or 64 when compared with RCAN or RRDB.

    , "dataloader_shuffle": true
    , "dataloader_num_workers": 4
    , "dataloader_batch_size": 1      // batch size 1 | 16 | 32 | 48 | 64 | 128. Total batch size =4x8=32 in SwinIR
  }
  , "test": {
    "name": "test_dataset"            // just name
    , "dataset_type": "sr"         // "dncnn" | "dnpatch" | "fdncnn" | "ffdnet" | "sr" | "srmd" | "dpsr" | "plain" | "plainpatch" | "jpeg"
    , "dataroot_H": "testsets/Set5/HR"  // path of H testing dataset
    , "dataroot_L": "testsets/Set5/LR_bicubic/X2"              // path of L testing dataset

  }
}

上面的参数是对数据集的设置。
“H_size”: 96 ,HR图像的大小,和下面的img_size有对应关系,大小设置为img_size×scale。

“dataloader_num_workers”: 4,CPU的核数设置。

“dataloader_batch_size”: 32 ,设置训练的batch_size。

dataset_type:sr,指的是数据集类型SwinIR。

"netG": {
    "net_type": "swinir" 
    , "upscale": 2                      // 2 | 3  | 4 | 8
    , "in_chans": 3 
    , "img_size": 48                    // For fair comparison, LR patch size is set to 48 or 64 when compared with RCAN or RRDB.
    , "window_size": 8  
    , "img_range": 1.0 
    , "depths": [6, 6, 6, 6, 6, 6] 
    , "embed_dim": 180 
    , "num_heads": [6, 6, 6, 6, 6, 6]
    , "mlp_ratio": 2 
    , "upsampler": "pixelshuffle"        // "pixelshuffle" | "pixelshuffledirect" | "nearest+conv" | null
    , "resi_connection": "1conv"        // "1conv" | "3conv"
    , "init_type": "default"
  }

upscale:2,放大的倍数,和上面的scale参数对应。

img_size:48,这里可以设置两个数值,48和64。和测试的training_patch_size参数对应。

官方提供的指令是基于DDP方式,比较复杂一下,好处是速度快。如下:

# 001 Classical Image SR (middle size)
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 main_train_psnr.py --opt options/swinir/train_swinir_sr_classical.json  --dist True

# 002 Lightweight Image SR (small size)
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 main_train_psnr.py --opt options/swinir/train_swinir_sr_lightweight.json  --dist True

# 003 Real-World Image SR (middle size)
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 main_train_psnr.py --opt options/swinir/train_swinir_sr_realworld_psnr.json  --dist True
# before training gan, put the PSNR-oriented model into superresolution/swinir_sr_realworld_x4_gan/models/
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 main_train_psnr.py --opt options/swinir/train_swinir_sr_realworld_gan.json  --dist True

# 004 Grayscale Image Deoising (middle size)
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 main_train_psnr.py --opt options/swinir/train_swinir_denoising_gray.json  --dist True

# 005 Color Image Deoising (middle size)
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 main_train_psnr.py --opt options/swinir/train_swinir_denoising_color.json  --dist True

# 006 JPEG Compression Artifact Reduction (middle size)
python -m torch.distributed.launch --nproc_per_node=8 --master_port=1234 main_train_psnr.py --opt options/swinir/train_swinir_car_jpeg.json  --dist True

我没有使用上面的方式,而是选择用DP的方式,虽然慢一点,但是简单,更稳定。

在Terminal里面输入:

python main_train_psnr.py --opt options/swinir/train_swinir_sr_classical.json

即可开始训练。

运行结果如下:

swinir训练,图像超分,深度学习,计算机视觉,人工智能

等待训练完成后,我们使用测试代码测试。将模型复制到./model_zoo/swinir文件夹下面

swinir训练,图像超分,深度学习,计算机视觉,人工智能

输入命令:

python main_test_swinir.py --task classical_sr --scale 2 --training_patch_size 48 --model_path model_zoo/swinir/45000_G.pth --folder_lq testsets/Set5/LR_bicubic/X2 

然后在result下面可以看到测试结果。

swinir训练,图像超分,深度学习,计算机视觉,人工智能

完整的代码:

https://download.csdn.net/download/hhhhhhhhhhwwwwwwwwww/85258387文章来源地址https://www.toymoban.com/news/detail-794976.html

到了这里,关于SwinIR实战:详细记录SwinIR的训练过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Python&图像超分】Real-ESRGAN图像超分模型(超分辨率重建)详细安装和使用教程

            图像超分是一种图像处理技术,旨在 提高图像的分辨率 ,使其具有更高的清晰度和细节。这一技术通常用于图像重建、图像恢复、图像增强等领域,可以帮助我们更好地理解和利用图像信息。图像超分技术可以通过多种方法实现,包括插值算法、深度学习等。其

    2024年02月04日
    浏览(47)
  • pytorch进阶学习(六):如何对训练好的模型进行优化、验证并且对训练过程进行准确率、损失值等的可视化,新手友好超详细记录

    课程资源:  7、模型验证与训练过程可视化【小学生都会的Pytorch】【提供源码】_哔哩哔哩_bilibili 推荐与上一节笔记搭配食用~: pytorch进阶学习(五):神经网络迁移学习应用的保姆级详细介绍,如何将训练好的模型替换成自己所需模型_好喜欢吃红柚子的博客-CSDN博客 训练

    2023年04月17日
    浏览(43)
  • 【深度学习】BasicSR训练过程记录,如何使用BasicSR训练GAN

    BasicSR支持两种灵活的使用场景,以满足用户不同的需求: 本地克隆仓库使用: 用户可以直接克隆BasicSR的本地仓库,查看完整的代码并进行修改,例如在BasicSR中训练SRGAN或StyleGAN2。安装方式包括先执行 git clone ,然后运行 python setup.py develop/install 。详细信息请参考安装指南。

    2024年01月23日
    浏览(46)
  • 图像超分综述:超长文一网打尽图像超分的前世今生 (附核心代码)

    声明 : (1) 本文由博主 Minnie_Vautrin 原创整理,经本人大修后上传。 (2) 本文参考文献与资源众多,由于部分已经无法溯源,若有侵权请联系删改。 提高图像的分辨率; 丰富图像的细节纹理。 智能显示领域 :普通摄像头拍摄的图像分辨率一般偏低,不能满足高分辨率的视觉要

    2024年02月03日
    浏览(48)
  • 计算摄影——图像超分

            这一节主要介绍一下基于单张图的图像超分算法。图像超分,就是要从低分辨率的图像恢复为高分辨率的图像,它在日常的图像和视频存储与浏览中都有广泛的应用。         图像超分需要将低分辨率图片恢复为高分辨率图像,因此上采样结构在网络中是必不可

    2024年02月13日
    浏览(44)
  • YOLOV8目标检测——最全最完整模型训练过程记录

    本文记录一下yolov8训练目标检测模型的过程,以及其中的一些需要注意的地方。本人是yolov5直接使用的yolov8,因此本文也记录了与yolov5的训练过程不一样的地方。 原创声明:如有转载请注明文章来源。码字不易,如对卿有所帮助,欢迎评论、点赞、收藏。 这边说一下,pip这

    2024年02月07日
    浏览(51)
  • 使用happytransformer对gpt-neo进行训练的过程记录

    本文使用的是Python3.10.12的Docker环境 在Python3.10环境中安装以下工具包:xformers、transformers v4.31.0、torch 2.0.1+cu118、happytransformer v2.4.1、accelerate v0.21.0 That\\\'s all.

    2024年02月16日
    浏览(60)
  • 图像超分经典网络 SRGAN精确解析

    SRGAN 核心思想 早期超分辨率方法的优化目标都是降低低清图像和高清图像之间的 均方误差 。降低均方误差,确实让增强图像和原高清图像的相似度更高。但是,图像的相似度指标高并不能代表图像的增强质量就很高。 为什么 SRGAN 的增强结果那么清楚呢?这是因为 SRGAN 使用

    2024年02月06日
    浏览(32)
  • 【跨尺度非局部注意的高光谱图像超分】

    (基于跨尺度非局部注意的高光谱图像超分辨率网络) 高光谱图像(HSI)超分辨率通常是指将低空间分辨率HSI(LRHSI)与高空间分辨率多光谱/全色图像(HRMPI)融合得到高空间分辨率HSI(HRHSI)。现有的融合方法 没有充分考虑LRHSI和HRMPI之间巨大的光谱和空间分辨率差异 。此

    2024年02月10日
    浏览(97)
  • pytorch 训练过程内存泄露/显存泄露debug记录:dataloader和dataset导致的泄露

    微调 mask-rcnn 代码,用的是 torchvision.models.detection.maskrcnn_resnet50_fpn 代码,根据该代码的注释,输入应该是: images, targets=None (List[Tensor], Optional[List[Dict[str, Tensor]]]) - Tuple[Dict[str, Tensor], List[Dict[str, Tensor]]] 所以我写的 dataset 是这样的: 大概思路是: 先把所有的标注信息读入内存

    2024年02月14日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包