BasicSR入门教程

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

BasicSR入门教程

1.安装环境

由于安装好的其他环境已经有了pytorch,那么新建环境时直接拷贝该环境就好

//复制环境
conda create --name my-basicsr --clone mmediting

克隆项目

git clone https://github.com/XPixelGroup/BasicSR.git

安装依赖包

cd BasicSR
pip install -r requirements.txt

在BasicSR的根目录下安装BasicSR

python setup.py develop

验证BasicSR是否安装成功

import basicsr

通过本地clone安装成功的时候,此时使用pip list 命令查看BasicSR 路径

pip list

2.准备数据集

常用的图像超分数据集如下:

name 数据集 数据描述 下载
2K Resolution DIV2K proposed in NTIRE17 (800 train and 100 validation) official website
Classical SR Testing Set5 Set5 test dataset Google Drive / Baidu Drive
Classical SR Testing Set14 Set14 test dataset Google Drive / Baidu Drive

DIV2K下载地址:https://data.vision.ee.ethz.ch/cvl/DIV2K/

Set5下载地址:https://drive.google.com/drive/folders/1B3DJGQKB6eNdwuQIhdskA64qUuVKLZ9u

Set14下载地址:https://drive.google.com/drive/folders/1B3DJGQKB6eNdwuQIhdskA64qUuVKLZ9u

因为DIV2K 数据集是2K 分辨率的(比如: 2048×1080), 而我们在训练的时候往往并不要那么大(常见的是128×128 或者192×192 的训练patch). 因此我们可以先把2K 的图片裁剪成有overlap 的480×480 的子图像块. 然后再由dataloader 从这个480×480 的子图像块中随机crop 出128×128 或者192×192 的训练patch。运行脚本extract_subimages.py。

cd BasicSR
python scripts/data_preparation/extract_subimages.py

若需要使用LMDB,则需要制作LMDB,数据准备运行脚本:

python scripts/data_preparation/create_lmdb.py --dataset div2k

数据集的目录结构如下
BasicSR入门教程

3.修改配置文件

创建新的训练配置文件options/train/SRResNet_SRGAN/my_train_MSRResNet_x4.yml,内容如下

# Modified SRResNet w/o BN from:
# Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network

# ----------- Commands for running
# ----------- Single GPU with auto_resume
# PYTHONPATH="./:${PYTHONPATH}"  CUDA_VISIBLE_DEVICES=0 python basicsr/train.py -opt options/train/SRResNet_SRGAN/train_MSRResNet_x4.yml --auto_resume

# general settings
name: 001_MSRResNet_x4_f64b16_DIV2K_10k_B16G1_wandb_myfirst
model_type: SRModel
scale: 4
num_gpu: 1  # set num_gpu: 0 for cpu mode
manual_seed: 0

# dataset and data loader settings
datasets:
  train:
    name: DIV2K
    type: PairedImageDataset
    # dataroot_gt: datasets/DF2K/DIV2K_train_HR_sub
    # dataroot_lq: datasets/DF2K/DIV2K_train_LR_bicubic_X4_sub
    # meta_info_file: basicsr/data/meta_info/meta_info_DIV2K800sub_GT.txt
    # dataroot_gt: datasets/DIV2K/DIV2K_train_HR_sub
    # dataroot_lq: datasets/DIV2K/DIV2K_train_LR_bicubic_X4_sub
    # meta_info_file: basicsr/data/meta_info/meta_info_DIV2K800sub_GT.txt
    # (for lmdb)
    dataroot_gt: datasets/DIV2K/DIV2K_train_HR_sub.lmdb
    dataroot_lq: datasets/DIV2K/DIV2K_train_LR_bicubic_X4_sub.lmdb
    filename_tmpl: '{}'
    io_backend:
      # type: disk
      # (for lmdb)
      type: lmdb

    gt_size: 128
    use_hflip: true
    use_rot: true

    # data loader
    num_worker_per_gpu: 6
    batch_size_per_gpu: 16
    dataset_enlarge_ratio: 100
    prefetch_mode: ~

  val:
    name: Set5
    type: PairedImageDataset
    dataroot_gt: datasets/Set5/GTmod12
    dataroot_lq: datasets/Set5/LRbicx4
    io_backend:
      type: disk

  val_2:
    name: Set14
    type: PairedImageDataset
    dataroot_gt: datasets/Set14/GTmod12
    dataroot_lq: datasets/Set14/LRbicx4
    io_backend:
      type: disk

# network structures
network_g:
  type: MSRResNet
  num_in_ch: 3
  num_out_ch: 3
  num_feat: 64
  num_block: 16
  upscale: 4

# path
path:
  pretrain_network_g: ~
  param_key_g: params
  strict_load_g: true
  resume_state: ~

# training settings
train:
  ema_decay: 0.999
  optim_g:
    type: Adam
    lr: !!float 2e-4
    weight_decay: 0
    betas: [0.9, 0.99]

  scheduler:
    type: CosineAnnealingRestartLR
    periods: [250000, 250000, 250000, 250000]
    restart_weights: [1, 1, 1, 1]
    eta_min: !!float 1e-7

  # total_iter: 1000000
  total_iter: 10000
  warmup_iter: -1  # no warm up

  # losses
  pixel_opt:
    type: L1Loss
    loss_weight: 1.0
    reduction: mean

# validation settings
val:
  val_freq: !!float 5e3
  save_img: false

  metrics:
    psnr: # metric name, can be arbitrary
      type: calculate_psnr
      crop_border: 4
      test_y_channel: false
      better: higher  # the higher, the better. Default: higher
    niqe:
      type: calculate_niqe
      crop_border: 4
      better: lower  # the lower, the better

# logging settings
logger:
  print_freq: 100
  save_checkpoint_freq: !!float 5e3
  use_tb_logger: true
  wandb:
    project: ~
    resume_id: ~

# dist training settings
dist_params:
  backend: nccl
  port: 29500

可以开始训练

python basicsr/train.py -opt options/train/SRResNet_SRGAN/my_train_MSRResNet_x4.yml

训练完成后,结果会保存在results文件夹下的001_MSRResNet_x4_f64b16_DIV2K_10k_B16G1_wandb_myfirst文件夹中

创建新的测试配置文件options/test/SRResNet_SRGAN/my_test_MSRResNet_x4.yml,内容如下

# ----------- Commands for running
# ----------- Single GPU
# PYTHONPATH="./:${PYTHONPATH}"  CUDA_VISIBLE_DEVICES=0 python basicsr/test.py -opt options/test/SRResNet_SRGAN/test_MSRResNet_x4.yml

# general settings
name: 001_MSRResNet_x4_f64b16_DIV2K_10k_B16G1_wandb_myfirst
model_type: SRModel
scale: 4
num_gpu: 1  # set num_gpu: 0 for cpu mode
manual_seed: 0

# test dataset settings
datasets:
  test_1:  # the 1st test dataset
    name: Set5
    type: PairedImageDataset
    dataroot_gt: datasets/Set5/GTmod12
    dataroot_lq: datasets/Set5/LRbicx4
    io_backend:
      type: disk
  test_2:  # the 2nd test dataset
    name: Set14
    type: PairedImageDataset
    dataroot_gt: datasets/Set14/GTmod12
    dataroot_lq: datasets/Set14/LRbicx4
    io_backend:
      type: disk
  test_3: # the 3rd test dataset
    name: DIV2K100
    type: PairedImageDataset
    dataroot_gt: datasets/DIV2K/DIV2K_valid_HR
    dataroot_lq: datasets/DIV2K/DIV2K_valid_LR_bicubic/X4
    filename_tmpl: '{}x4'
    io_backend:
      type: disk

# network structures
network_g:
  type: MSRResNet
  num_in_ch: 3
  num_out_ch: 3
  num_feat: 64
  num_block: 16
  upscale: 4

# path
path:
  pretrain_network_g: experiments/001_MSRResNet_x4_f64b16_DIV2K_10k_B16G1_wandb_myfirst/models/net_g_10000.pth
  param_key_g: params
  strict_load_g: true

# validation settings
val:
  save_img: true
  suffix: ~  # add suffix to saved images, if None, use exp name

  metrics:
    psnr: # metric name, can be arbitrary
      type: calculate_psnr
      crop_border: 4
      test_y_channel: false
      better: higher  # the higher, the better. Default: higher
    ssim:
      type: calculate_ssim
      crop_border: 4
      test_y_channel: false
      better: higher

测试完成后,结果会保存在results文件夹下的001_MSRResNet_x4_f64b16_DIV2K_10k_B16G1_wandb_myfirst文件夹中

4.tensorboard可视化训练过程

在用于训练的yml配置文件中设置tensorboard开启

# logging settings
logger:
  print_freq: 100
  save_checkpoint_freq: !!float 5e3
  use_tb_logger: true # 设置为true
  wandb:
    project: ~
    resume_id: ~

在命令行输入以下命令,就可以在服务器的浏览器中查看:

tensorboard --logdir tb_logger --port 5500 --bind_all

tensorboard 在本机可以方便使用,但使用服务器时需要设置一下。

在Windows系统装一个Xshell,在文件->属性->ssh->隧道->添加,类型local,源主机填127.0.0.1(意思是本机),端口设置一个,比如12345,目标主机为服务器,目标端口一般是5500,如果5500被占了可以改为其他端口。

BasicSR入门教程

在本地浏览器中输入127.0.0.1:12345即可

BasicSR入门教程

最后感谢小伙伴们的学习噢~文章来源地址https://www.toymoban.com/news/detail-514210.html

BasicSR入门教程

到了这里,关于BasicSR入门教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境

    【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境

    QT 是一个跨平台的应用程序开发框架,它提供了丰富的工具和类库,用于开发图形用户界面(GUI)程序。Qt 提供了 C++ 编程语言接口,同时也支持其他编程语言,如 Python和QML。 以下是 QT 的一些主要特点: 跨平台:Qt 支持在多个操作系统上进行开发,包括 Windows、macOS、Linux、

    2024年01月17日
    浏览(10)
  • JDK20下载+安装+环境配置入门教程(非常详细),从零基础入门到精通,看完这一篇就够了(附安装包)

    JDK20下载+安装+环境配置入门教程(非常详细),从零基础入门到精通,看完这一篇就够了(附安装包)

    软件下载 软件:JDK 版本:20 语言:简体中文 大小:159.60M 安装环境:Win7及以上版本;64位操作系统 硬件要求:CPU@2.0GHz ;内存@4G(或更高) 下载通道①百度网盘丨64位下载链接: https://pan.baidu.com/s/1AbHK3yqFHhlxb1VX1LnJ7g?pwd=6789 提取码:6789 1、 软件介绍 2,切换Windows系统,然后点

    2024年02月08日
    浏览(16)
  • 【AI绘图 丨 Stable_diffusion 系列教程一】— Window 环境 | Stable Diffusion入门教程 及安装(上篇)

    【AI绘图 丨 Stable_diffusion 系列教程一】— Window 环境 | Stable Diffusion入门教程 及安装(上篇)

    不过确实,Midjourney生成的图片很难精准的控制,随机性很高,需要大量的跑图(为此我也回复了很多很多信息就是让小伙伴们多跑图...),不过没关系,受到社群小伙伴们的强烈建议(也包括我可以少回复点消息),我在这篇文章中为大家分享SD的教程。 这时候肯定有朋友心

    2024年02月09日
    浏览(12)
  • 【AI绘图 丨 Stable_diffusion 系列教程四】— Window 环境 | Stable Diffusion入门教程 及安装(全篇)

    【AI绘图 丨 Stable_diffusion 系列教程四】— Window 环境 | Stable Diffusion入门教程 及安装(全篇)

      最近,AI图像生成引人注目,它能够根据文字描述生成精美图像,这极大地改变了人们的图像创作方式。Stable Diffusion作为一款高性能模型,它生成的图像质量更高、运行速度更快、消耗的资源以及内存占用更小,是AI图像生成领域的里程碑。本篇文章作者将手把手教大家入

    2024年02月13日
    浏览(14)
  • Java入门 (超详细)JDK(1.8)下载与安装及环境变量的配置教程

    Java入门 (超详细)JDK(1.8)下载与安装及环境变量的配置教程

    第一步:下载JDK_8 Oracle官网下载地址:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html 进入官网JDK_8下载地址后在页面内向下浏览找到适合自己电脑操作系统的安装包下载。 注:官网下载需要注册账号,可以注册一下。不想要注册的小伙伴可以选择下载我

    2024年02月13日
    浏览(13)
  • 【OpenCV入门教程Java版之一】安装OpenCV:OpenCV4.6.0+IDEA开发环境配置

    【OpenCV入门教程Java版之一】安装OpenCV:OpenCV4.6.0+IDEA开发环境配置

    在读研期间的研究方向与图像处理有一点相关,后来由于工作可能会有需要,所以晚上回去也闭门研究了OpenCV和图像处理相关的知识。也准备写一个OpenCV系列的专栏作为自己的学习笔记,也分享给大家,如果有写错的地方也欢迎大家及时指出。 好了这篇文章作为OpenCV系列的第

    2024年02月09日
    浏览(10)
  • 【Java基础教程】(二)入门介绍篇 · 下:从JDK下载安装到第一个“Hello World!”程序,解析PATH和CLASSPATH环境变量的妙用~

    【Java基础教程】(二)入门介绍篇 · 下:从JDK下载安装到第一个“Hello World!”程序,解析PATH和CLASSPATH环境变量的妙用~

    JDK 安装与配置; 理解环境变量PATH和CLASSPATH的主要作用; 运行第一个Java程序。 要进行Java的程序开发,必须先有Java开发工具包( JavaDevelopmentKit,JDK )的支持。本节主要基于JDK1.8版本来介绍安装等知识,读者朋友可以直接登录 Oracle官网 去进行下载,也可以在下边链接(包含

    2024年02月13日
    浏览(47)
  • Python入门教程 | Python简介和环境搭建

    Python入门教程 | Python简介和环境搭建

    Python是一种高级编程语言,由荷兰人Guido van Rossum于1991年创建。它以其简单易学、可读性强和丰富的生态系统而受到广泛喜爱。它被广泛应用于各个领域,包括Web开发、科学计算、数据分析、人工智能等。 简洁易读:Python采用清晰简洁的语法,使用缩进来表示代码块,而不是

    2024年02月12日
    浏览(11)
  • Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)

    Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)

         Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对

    2024年02月10日
    浏览(17)
  • SpringCloud--从零开始搭建微服务基础环境入门教程【一】

    SpringCloud--从零开始搭建微服务基础环境入门教程【一】

    😀前言 本篇博文是关于SpringCloud–从零开始搭建微服务基础环境入门教程【一】,希望你能够喜欢😉 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来

    2024年02月10日
    浏览(18)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包