当前位置: 首页 > news >正文

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

在这里插入图片描述

目录

  • 一、BSRN网络总结
  • 二、源码包准备
  • 三、环境准备
    • 3.1 报错KeyError: "No object named 'BSRN' found in 'arch' registry!"
    • 3.2 安装basicsr源码包
    • 3.3 参考环境
  • 四、数据集准备
  • 五、训练
    • 5.1 配置文件参数修改
    • 5.2 启动训练
      • 5.2.1 命令方式训练
      • 5.2.2 配置Configuration方式训练
    • 5.3 模型保存
  • 六、测试
    • 6.1 配置文件参数修改
    • 6.2 启动测试
      • 6.2.1 命令方式测试
      • 6.2.2 配置Configuration方式测试
    • 6.3 测试结果
  • 七、推理速度
  • 八、效果展示
  • 九、总结

一、BSRN网络总结

BSRN(Blueprint Separable Residual Network)是一种轻量级的单图像超分辨率网络。它的设计灵感来自于残差特征蒸馏网络 (RFDN)和蓝图可分离卷积 (BSConv)。BSRN采用了与RFDN类似的架构,同时引入了一种更高效的蓝图浅残差块 (blueprint shallow residual block, BSRB),即在RFDN的浅层残差块 (shallow residual block, SRB)中使用BSConv替换标准卷积。

BSRN的特点:

高效性:BSRN-S的一个较小的变体在NTIRE 2022 Efficient SR Challenge的模型复杂度赛道中获得了第一名。

轻量级:BSRN的设计目标是在保持高性能的同时,降低模型的复杂性和计算成本。

注意力机制:BSRN引入了两个注意力模块,即增强空间注意力 (ESA)和对比通道注意力 (CCA),从空间和通道的角度增强模型的能力。

二、源码包准备

本教程配套源码包获取方法文章末扫码到公众号「视觉研坊」中回复关键字:超分辨率重建BSRN。获取下载链接。

官网源码包链接为:BSRN

论文地址:论文

我提供的配套源码包下载解压后的样子如下:

在这里插入图片描述

源码包中提供了100张训练集,还有部分测试集,位于跟目录下的datasets文件夹中,见下:

在这里插入图片描述

三、环境准备

3.1 报错KeyError: “No object named ‘BSRN’ found in ‘arch’ registry!”

如果下载官网源码包后,直接运行测试,可能会报错:
在这里插入图片描述
该问题是由于之前使用pip install basicsr命令安装了basicsr包,对于该网络,必须安装basicsr源码包,具体安装方法见3.2。

3.2 安装basicsr源码包

源码包中根目录下有setup.py文件。

在终端使用安装命令,版本为1.3.4.9:

python setup.py develop

在这里插入图片描述

安装成功的样子如下:

在这里插入图片描述

3.3 参考环境

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

在这里插入图片描述

四、数据集准备

该网络要求为lmdb格式的数据集,关于lmdb格式数据集的制作,参考我的另外一篇博文:lmdb文件制作

在我提供的源码包中,make_lmdb.py脚本就是制作lmdb数据集的,修改路径后可直接使用。

制作好后的lmdb文件内容如下:

在这里插入图片描述

五、训练

5.1 配置文件参数修改

训练前,需要在train_BSRN_x4.yml配置文件中修改一些参数,常用修改参数见下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.2 启动训练

下面有两中启动训练方式,任选一种都可以。

5.2.1 命令方式训练

在终端输入命令:

python basicsr/train.py -opt options/train/train_BSRN_x4.yml

在这里插入图片描述

5.2.2 配置Configuration方式训练

先打开Configuration,在其中添加参数。

在这里插入图片描述

在这里插入图片描述

配置好后,直接run就行。

在这里插入图片描述

正常训练过程如下:

在这里插入图片描述

5.3 模型保存

训练的最终结果保存在路径下:BSRN\experiments\

在这里插入图片描述

六、测试

6.1 配置文件参数修改

在benchmark_BSRN_x4.yml配置文件中修改相关测试参数。

修改超分倍数:

在这里插入图片描述

修改测试集路径:

在这里插入图片描述

修改模型路径:

在这里插入图片描述

6.2 启动测试

测试方式也是有两种,任选一种即可。

6.2.1 命令方式测试

在终端输入测试命令:

python basicsr/test.py -opt options/test/benchmark_BSRN_x4.yml

6.2.2 配置Configuration方式测试

配置文件中添加参数:

在这里插入图片描述

输出如下:

在这里插入图片描述

6.3 测试结果

测试结果最终会自动保存到根目录下的BSRN\results文件夹中:

在这里插入图片描述

七、推理速度

GPU测试环境:Nvidia GeForce RTX 3050。

CPU测试环境:12th Gen Intel® Core™ i7-12700H 2.30 GHz。

下面是不同分辨率在不同平台即不同超分倍数下推理耗时:

在这里插入图片描述

八、效果展示

下面展示图中,最左侧图为原图通过OpenCv直接上采样4倍图,中间为BSRN网络超分4倍结果,最右侧为高分辨率原图。

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

九、总结

以上就是超分辨率重建BSRN网络训练自己数据集并推理测试的详细图文教程,超分效果学者自行评价,对比其它网络效果参考我超分辨率重建专栏。

总结不易,多多支持,谢谢!

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

相关文章:

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

目录 一、BSRN网络总结二、源码包准备三、环境准备3.1 报错KeyError: "No object named BSRN found in arch registry!"3.2 安装basicsr源码包3.3 参考环境 四、数据集准备五、训练5.1 配置文件参数修改5.2 启动训练5.2.1 命令方式训练5.2.2 配置Configuration方式训…...

C语言实现贪吃蛇

目录 前言一 . 游戏背景1. 背景介绍2. 项目目标3. 技术要点 二 . 效果演示三 . 游戏的设计与分析1. 核心逻辑2. 设计与分析游戏开始Gamestart()函数游戏运行Gamerun()函数游戏结束Gameend()函数 四 . 参考代码五 . 总结 前言 本文旨在使用C语言和基础数据结构链表来实现贪吃蛇…...

高可用系列四:loadbalancer 负载均衡

负载均衡可以单独使用,也常常与注册中心结合起来使用,其需要解决的问题是流量分发,这是就需要定义分发策略,当然也包括了故障切换的能力。 故障切换 故障切换是负载均衡的基本能力,和注册中心结合时比较简单&#xf…...

Ruby递归目录文件的又一种方法

经常派得上用场,记录一下。 递归文件做一些操作 #encoding:utf-8require pathnamedef recursive_enum_files(from_path)from_path Pathname.new(from_path)raise ArgumentError,must start at a directory. unless from_path.directory?from_path.enum_for(:fin…...

【爬虫】爬取A股数据写入数据库(一)

1. 对东方财富官网的分析 步骤: 通过刷新网页,点击等操作,我们发现https://datacenter-web.eastmoney.com/api/data/v1/get?请求后面带着一些参数即可以获取到相应数据。我们使用python来模拟这个请求即可。 我们以如下选择的页面为切入点…...

1-38 流资源类结构

一 简介 1. Java中所说的流资源--IO流 2.为什么学习留资源? --要操作文件中的数据 将数据写入指定的文件 将数据从指定的文件读取 3.分类 -- 四大基流 , 八大子流 (重点) 按照流向分 : 输入流 和输出流 按照操作数据资源的类型划分 字符流 (重点) Reader -- 字符…...

nginx的前世今生(二)

书接上回: 上回书说到,nginx的前世今生,这回我们继续说 3.缓冲秘籍,洪流控水 Nginx的缓冲区是其处理数据传输和提高性能的关键设计之一,主要用于暂存和管理进出的数据流,以应对不同组件间速度不匹配的问题…...

浏览器跨域详解

一、什么是跨域 浏览器跨域是指当一个Web应用程序试图访问另一个协议、主机或端口不同的资源时,所发生的情况。这主要是由于浏览器的同源策略造成的,它是为了网站的安全而设置的安全限制,防止一个网站恶意访问另一个网站的资源。当然这是比较…...

华为5700配置

恢复出厂设置,清空配置 1、更改名字 system-view sysname tp-10-50-01-04 2、配置管理接口 int vlan 1 ip add 10.50.1.4 255.255.254.0 quit 2、链路汇聚 interface eth-trunk 1 mode lacp quit 3、绑定端口 interface eth-trunk 1 trunkport gigabitethernet …...

使用Axios从前端上传文件并且下载后端返回的文件

前端代码: function uploadAndDownload(){showLoading();const fileInput document.querySelector(#uploadFile);const file fileInput.files[0];const formData new FormData()formData.append(file, file)return new Promise((resolve, reject) > {axios({…...

open 函数到底做了什么

使用设备之前我们通常都需要调用 open 函数,这个函数一般用于设备专有数据的初始化,申请相关资源及进行设备的初始化等工作,对于简单的设备而言,open 函数可以不做具体的工作,你在应用层通过系统调用 open 打开设备…...

ue引擎游戏开发笔记(32)——为游戏添加新武器装备

1.需求分析: 游戏中角色不会只有一种武器,不同武器需要不同模型,甚至可能需要角色持握武器的不同位置,因此需要添加专门的武器类,方便武器后续更新,建立一个武器类。 2.操作实现: 1.在ue5中新建…...

【个人博客搭建】(17)使用FluentValidation 参数校验

FluentValidation 是一个用于 .NET 的开源验证库,它提供了一种流畅的接口和强类型验证规则,使得验证逻辑表达得更加清晰和简洁。(Apache-2.0) FluentValidation 的主要作用包括: 提高代码可读性:通过使用 F…...

数据结构===散列表

文章目录 概要散列思想散列函数散列冲突开放寻址法装载因子 链表法 代码Java小结 概要 散列表是一种很有趣的数据结构。 散列表是一个很有用的数据结构。它是数组演练而来的,又是一个基于数组的扩展的数据结构。接下来看看。 散列思想 散列表用的是数组支持按照下…...

10G MAC层设计系列-(2)MAC RX模块

一、概述 MAC RX模块的需要进行解码、对齐、CRC校验。 因为在空闲的时候10G PCS/PMA会一直向外吐空闲符(x07)所以需要根据开始符、结束符将有效数据从码流中截取,也就是解码。 因为开始字符的所在位置有两种形式,而结束字符的位…...

解码Starknet Verifier:深入逆向工程之旅

1. 引言 Sandstorm为: 能提交独立proof给StarkWare的Ethereum Verifier,的首个开源的STARK prover。 开源代码见: https://github.com/andrewmilson/sandstorm(Rust) L2Beat 提供了以太坊上Starknet的合约架构图&…...

【C++语言】类和对象--默认成员函数 (中)

文章目录 前言类的六个默认成员函数:1. 构造函数概念特性做了什么?易错注意:显式定义和默认构造函数 2. 析构函数概念特征做了什么?注意事项: 3.拷贝构造函数概念特征做了什么?注意事项: 4.赋值运算符重载…...

前端递归常见应用

概览 在 JavaScript 中,递归是一种编程技术,指的是函数直接或间接调用自身的过程。 递归通常用于解决可以分解为相同子问题的问题。通过不断地将问题分解成更小的、相似的子问题,直到达到某种基本情况(不再需要进一步递归的简单情…...

AI工具如何改变我们的工作与生活

AI工具在当今社会中扮演着越来越重要的角色,它们已经开始改变着我们的工作方式和生活方式。在接下来的2000字篇幅中,我将详细探讨AI工具如何影响我们的工作和生活。 AI工具在工作中的影响: 自动化和智能化生产流程: AI工具可以通…...

深入了解C/C++的内存区域划分

🔥个人主页:北辰水墨 🔥专栏:C学习仓 本节我们来讲解C/C的内存区域划分,文末会附加一道题目来检验成果(有参考答案) 一、大体有哪些区域?分别存放什么变量开辟的空间? …...

C++构造函数和析构函数的调用顺序

一般情况下,调用析构函数的次序正好与调用构造函数的次序相反,也就是最先被调用的构造函数,其对应的析构函数最后被调用,而最后被调用的构造函数,其对应的析构函数最先被调用。 当然对象的构造函数和析构函数调用时机和…...

智能家居1 -- 实现语音模块

项目整体框架: 监听线程4: 1. 语音监听线程:用于监听语音指令, 当有语音指令过来后, 通过消息队列的方式给消息处理线程发送指令 2. 网络监听线程:用于监听网络指令,当有网络指令过来后, 通过消息队列的方…...

Leetcode 3139. Minimum Cost to Equalize Array

Leetcode 3139. Minimum Cost to Equalize Array 1. 解题思路2. 代码实现 题目链接:3139. Minimum Cost to Equalize Array 1. 解题思路 这一题是一道hard的题目,而且看了一下答出率低的离谱,就一开始被吓到了,不过实际做了一下…...

【element-ui】el-table横向滚动后,通过is-scrolling-left获取滚动高度失效的问题

el-table横向滚动后,通过is-scrolling-left获取滚动高度失效的问题 需求 现在有一个需求,需要监听el-table的纵向滚动,当滚动高度达到特定值时进行一些操作。 代码如下: methods:{throttledHandleScroll() {// 如果已经有定时器…...

JAVA中的日期

获取当前的日期 LocalDate LocalDate today LocalDate.now();System.out.println("今天是:"today);//今天是:2024-05-06String format today.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日"));System.out.println("今天是:"…...

一起了解开源自定义表单的优势表现

随着社会的进步和科技的发展,越来越多的中小企业希望采用更为先进的软件平台,助力企业实现高效率的流程化管理。低代码技术平台、开源自定义表单已经慢慢走入大众视野,成为一款灵活、高效的数字化转型工具。流辰信息专注于低代码技术平台的研…...

体育老师工资高吗,奖金有吗

教师的薪资水平与多种因素相关,包括教育经验、工作地点、学校类型以及个人的教学成果等。在讨论体育教师的工资问题时,不能仅仅关注数字,更应了解教育价值和个人发展。 初中体育教师的工资水平受多种因素影响。根据网络统计的数据&#xff0c…...

Linux驱动开发——(十一)INPUT子系统

目录 一、input子系统简介 二、input驱动API 2.1 input字符设备 2.2 input_dev结构体 2.3 上报输入事件 2.4 input_event结构体 三、代码 3.1 驱动代码 3.2 测试代码 四、平台测试 一、input子系统简介 input子系统是管理输入的子系统,和pinctrl、gpio子…...

大数据毕业设计Python+Django旅游景点评论数据采集分析可视化系统 NLP情感分析 LDA主题分析 bayes分类 旅游爬虫 旅游景点评论爬虫 机器学习 深度学习 人工智能 计算机毕业设计

毕业论文(设计)开题报告 学生姓名 学 号 所在学院 信息工程学院 专 业 指导教师姓名 指导教师职称 工程师 助教 指导教师单位 论文(设计)题目 基于朴素贝叶斯算法旅游景点线上评价情感分析 开 题 报 告…...

FSNotes for Mac v6.7.1中文激活版:强大的笔记管理工具

FSNotes for Mac是一款功能强大的文本处理与笔记管理工具,为Mac用户提供了一个直观、高效的笔记记录和整理平台。 FSNotes for Mac v6.7.1中文激活版下载 FSNotes支持Markdown语法,使用户能够轻松设置笔记格式并添加链接、图像等元素,实现笔记…...

wordpress固定链接后500错误/百度指数分析报告案例

Django端: 根目录下打开powershell新建项目: django-admin startproject weixinproject 打开weixinproject文件夹下,powershell新建app: python manage.py startapp weixin 用 tree /F命令看看文件结构:项目文件夹&#xff0…...

做风水网站赚钱吗/中国网站排名

snackbar 使用Vuetify吐司快餐 (Vuetify Toast Snackbar) Basic Vue toast service that uses Vuetify Snackbar component. 使用Vuetify Snackbar组件的基本Vue Toast服务。 View Demo 查看演示 Download Source 下载源 安装 (Installation) npm install vuetify-toast-snack…...

宁波网站搜索引擎优化/想要推广页

试试...

wordpress 同步登录/网站建设软件

解析:此题手算或者用excel很快,这里我用代码代码量较大但思路简单。 星系炸弹 在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹2015年1月1日放置&am…...

企业建网站得多少钱/提高工作效率的工具

转载于:https://www.cnblogs.com/kekeoutlook/p/7475547.html...

旅行社网站 模板/长沙网络推广

1、提出boosting 简单的弱分类器很好计算,但是偏差很大。 下图说明,我们需要更强的分类器。 boosting在1990年代被提出来,现在在工业广泛应用,并且在kaggle比赛中频频获胜。 2、级联分类器 每一个特征进行分类,再进行…...