开源图像超分ECBSR项目源码分析

在这里插入图片描述

相关介绍

  1. 项目GitHub地址:https://github.com/xindongzhang/ECBSR
  2. 项目相关论文:https://www4.comp.polyu.edu.hk/~cslzhang/paper/MM21_ECBSR.pdf(也可以点这里下载)
  3. 论文解读:Edge-oriented Convolution Block for Real-time Super Resolution on Mobile Devices
  4. Windows环境训练搭建:Windows 环境下训练开源图像超分项目 ECBSR 教程

ECBSR项目源码

源码说明

  1. 目录结构:
.
├── LICENSE
├── README.md
├── configs
│   ├── ecbsr_x2_m4c16_prelu.yml
│   ├── ecbsr_x2_m4c8_prelu.yml
│   ├── ecbsr_x4_m4c16_prelu.yml
│   └── ecbsr_x4_m4c8_prelu.yml
├── convert.py
├── datas
│   ├── __init__.py
│   ├── benchmark.py
│   └── div2k.py
├── deploy
│   ├── README.md
│   ├── ai-benchmark
│   │   └── README.md
│   ├── mininet
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── activation.cpp
│   │   ├── activation.h
│   │   ├── config.h
│   │   ├── convolution.cpp
│   │   ├── convolution.h
│   │   ├── elementwise.cpp
│   │   ├── elementwise.h
│   │   ├── main
│   │   ├── main.cpp
│   │   ├── padding.cpp
│   │   ├── padding.h
│   │   ├── pixelshuffle.cpp
│   │   ├── pixelshuffle.h
│   │   ├── tensor.cpp
│   │   ├── tensor.h
│   │   └── test.h
│   ├── mnn
│   │   └── README.md
│   └── rknn
│       └── README.MD
├── experiments
├── legacy
│   ├── README.md
│   └── src
│       ├── model
│       │   ├── ecb.py
│       │   └── ecbsr.py
│       └── option.py
├── models
│   ├── __init__.py
│   ├── ecb.py
│   ├── ecbsr.py
│   ├── plainsr.py
│   └── tf
│       ├── __init__.py
│       └── plainsr.py
├── requirements.txt
├── scripts
│   └── README.md
├── train.py
└── utils.py
  1. 安装依赖包文件:requirments.txt
imageio==2.9.0 //用于读写图像数据的Python库
numpy==1.18.0 //是一个开源的Python科学计算库,它提供了一个强大的N维数组对象和相应的工具集,用于快速操作数组。
pytorch_msssim==0.2.1 //是一个用于计算多尺度结构相似性(MS-SSIM)和结构相似性(SSIM)指数的快速且可微分的工具,它基于 PyTorch 框架实现,并提供了与 TensorFlow 和 scikit-image 相一致的结果。
tqdm==4.36.1 //是一个快速、可扩展的Python进度条库,它可以在长循环中添加一个进度条,以便用户实时查看迭代过程的进度。
torchvision==0.9.0 //是 PyTorch 的一个扩展库,专门用于处理图像和视频数据,广泛应用于计算机视觉领域。它提供了数据集、预训练模型、图像转换工具等,极大地简化了图像数据的处理过程。
scikit_image==0.15.0 // 是一个基于 Python 的图像处理库,它建立在 NumPy、SciPy 和其他图像处理库之上,提供了丰富的图像处理算法和工具。
torch==1.8.1 //是一个开源的机器学习库,广泛用于计算机视觉和自然语言处理等应用。
PyYAML==5.4.1 //是一个用于处理 YAML 文件的 Python 库,它允许你轻松地加载和转储 YAML 格式的数据。
skimage==0.0 //Scikit-image(简称 skimage)是一个基于Python的图像处理库,它建立在NumPy和SciPy的基础上,提供了丰富的图像处理功能,适合于快速开发和实验。
  1. 数据集:DIV2K、benchmark
    • DIV2K:https://cv.snu.ac.kr/research/EDSR/DIV2K.tar
    • benchmark:https://cv.snu.ac.kr/research/EDSR/benchmark.tar

源码分析

数据处理模块

  1. datas/div2k.py
    • 功能:定义一个 DIV2K 的类,继承自 PyTorch 的 data.Dataset。这个类用于加载和处理 DIV2K 数据集;
    • 逻辑图:
      在这里插入图片描述
  2. datas/benchmark.py
    • 功能:定义一个 Benchmark 的类,继承自 PyTorch 的 data.Dataset。这个类用于加载和处理 Benchmark 数据集;
    • 逻辑:

在这里插入图片描述

实用函数与类

  1. utils.py
    • 功能:定义了一些用于图像超分辨率任务的实用函数和类,包括计算峰值信噪比(PSNR)和结构相似性指数(SSIM),将HWC格式的NumPy数组转换为CHW格式的PyTorch张量,记录实验日志,以及跟踪和统计不同数据集的性能指标。
    • 逻辑:
      在这里插入图片描述

训练

  1. train.py
    • 功能:完成 ECBSR 算法的训练过程。需要导入数据处理类 Benchmark、DIV2K,以及超分网络模块类 ECBSR 类。
    • 逻辑:
      在这里插入图片描述

模型

  1. models/ecbsr.py
    • 功能:定义了一个 ECBSR 的类,核心是使用 ECB 的类作为主要得构建块
    • 逻辑:
      在这里插入图片描述
  2. models/ecb.py
    • 功能:实现 ECBSR 算法的核心神经网络模块。
    • 逻辑:
      在这里插入图片描述
  3. models/plainsr.py
    • 功能:是一个简单的超分辨率网络,它没有使用任何残差连接或复杂的结构,如残差块或密集块。
    • 逻辑:
      在这里插入图片描述

转换

  1. convert.py
    • 功能:将训练好的 model 从 pt 格式转换为 onnx 格式;需要导入ECBSR 类和 PlainSR 类
    • 逻辑:
      在这里插入图片描述

其他

  1. legacy 文件夹:旧的版本
  2. deploy 文件夹:部署相关介绍

注意

  1. 该项目没有推理,可以根据根据需求写个 inference 过程处理 图片或视频,比如在gitcode仓库里增加了相关代码。

总结

  1. ECBSR 算法针对图像 Y 通道进行训练和推理,因此输入图像转化为 YUV,对 Y 进行训练;推理时,需要将低分辨率图像上采样到高分辨率,然后将超分好的 Y 通道替换到上采样好的高分辨率图像,作为最后的输出超分图像。
  2. ECBSR训练网络专门为训练推理使用,核心网络 ECB 跟论文介绍一样,是由3x3、1x1-3x3、1x1-sobelx、1x1-sobely、1x1-laplacian卷积层构成;在重参数可以将其权重和偏置组合合并后赋值给常规 3x3 卷积层作为PlainSR 网络的权重和偏置。
  3. 推理验证也利用跟训练一样的网络结构ECBSR,不过要开启模型的 eval 属性。
  4. PlainSR 网络专门为移动端应用,核心网络跟论文中介绍一样,多个 3x3 卷积层构成,它没有使用任何残差连接或复杂的结构。
  5. 转换成 onnx 时,将 ECBSR 网络训练好的模型权重和偏置赋值给简单网络 Plainsr的权重和偏置,然后利用 torch.onnx.export导出 onnx 格式模型。

后续

  1. 后续进行更详细的分析原理和应用ECBSR。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/57265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

秃姐学AI系列之:语义分割 + 数据集 | 转置卷积 + 代码

语义分割 语义分割将图片中的每个像素分类到对应的类别 通常来说现在的会议软件的背景虚化这个功能用的就是语义分割技术 无人车进行路面识别也是语义分割技术 语义分割 vs 实例分割 语义分割将图像划分为若干组成区域,这类问题的方法通常利用图像中像素之间的相关…

基于Multisim三极管B放大系数放大倍数测量电路设计(含仿真和报告)

【全套资料.zip】三极管B放大系数放大倍数测量电路电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.用三个数码管显示B的大小,分别显示个位、十位和百位。 2.显示范围…

【论文精炼分享】GPU Memory Exploitation for Fun and Profit 24‘USENIX

今天分享的论文《GPU Memory Exploitation for Fun and Profit》来自2024年USENIX Security。在本文中,作者团队对 CUDA 程序中的缓冲区溢出问题进行了全面的研究: (1)对用于访问各种 GPU 内存空间的机制进行了逆向工程&#xff…

纯css 轮播图片,鼠标移入暂停 移除继续

核心 滚动&#xff1a; animation: 动画名称 20s linear infinite normal;停止&#xff1a; animation: 动画名称 20s linear infinite paused; 完整例子&#xff1a; html: <div class"carousel-wrapper"><div class"carousel"><div cl…

Docker学习笔记(2)- Docker的安装

1. Docker的基本组成 镜像&#xff08;image&#xff09;&#xff1a;Docker镜像就像是一个模板&#xff0c;可以通过这个模板来创建容器服务。通过一个镜像可以创建多个容器。最终服务运行或者项目运行就是在容器中。容器&#xff08;container&#xff09;&#xff1a;Docker…

【JavaEE初阶】网络编程TCP协议实现回显服务器以及如何处理多个客户端的响应

前言 &#x1f31f;&#x1f31f;本期讲解关于TCP/UDP协议的原理理解~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不多说…

ParallelsDesktop20最新版本虚拟机 一键切换系统 游戏娱乐两不误

让工作生活更高效&#xff1a;Parallels Desktop 20最新版本虚拟机的神奇之处 大家好&#xff01;&#x1f44b; 今天我要跟大家安利一款让我工作效率飞升的神器——Parallels Desktop 20最新版本虚拟机。作为一个日常需要在不同操作系统间来回穿梭的人&#xff0c;这款软件简直…

算法的学习笔记—(牛客JZ50)

&#x1f600;前言 在处理字符串时&#xff0c;寻找第一个只出现一次的字符是一项常见的任务。本文将探讨几种有效的解法&#xff0c;包括使用 HashMap 和位集&#xff08;BitSet&#xff09;。 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 &#x1f970;第一个只出现…

生命科学的前沿挑战与未来机遇

生命科学的前沿挑战与未来机遇 一、引言 21世纪被誉为生命科学的世纪&#xff0c;生命科学的迅猛发展为人类的健康、环境和社会经济带来了巨大的变革。从基因编辑技术的突破&#xff0c;到合成生物学的兴起&#xff0c;再到生物医药的快速进步&#xff0c;生命科学的前沿挑战…

Xmind一款极简思维导图和头脑风暴软件,支持PC和移动端,Xmind 2024.10.01101版本如何升级到Pro版?简单操作,最新可用!

文章目录 Xmind下载安装Xmind免费升级到Pro Xmind 是一款全功能的思维导图和头脑风暴软件&#xff0c;不限制节点和文件数&#xff0c;创新无限&#xff0c;界面纯净简洁无广告&#xff0c;支持PC和移动端&#xff0c;思维导图和大纲视图自由切换&#xff0c;可本地化文档存储&…

虚拟机数据恢复—通过拼接数据库页碎片的方式恢复数据库的数据恢复案例

虚拟机数据恢复环境&#xff1a; 某品牌服务器通过同品牌某型号的RAID卡&#xff0c;将4块STAT硬盘为一组RAID10阵列。上层部署XenServer虚拟化平台&#xff0c;虚拟机安装Windows Server系统&#xff0c;每台虚拟机有两个虚拟机磁盘&#xff08;系统盘 数据盘&#xff09;&am…

jmeter 从多个固定字符串中随机取一个值的方法

1、先新增用户参数&#xff0c;将固定值设置为不同的变量 2、使用下面的函数&#xff0c;调用这写变量 ${__RandomFromMultipleVars(noticeType1|noticeType2|noticeType3|noticeType4|noticeType5)} 3、每次请求就是随机取的值了

优化多表联表查询的常见方法归纳

目录 一、使用mybatis的嵌套查询 二、添加表冗余字段&#xff0c;减少联表查询需求 三、分表预处理&#xff0c;前端再匹配 一、使用mybatis的嵌套查询 【场景说明】 前端需要展示一张列表&#xff0c;其中的字段来源于多张表&#xff0c;如何进行查询优化&#xff1f; 【…

飞凌嵌入式FET527N-C核心板已适配OpenHarmony4.1

近期&#xff0c;飞凌嵌入式为FET527N-C核心板适配了OpenHarmony4.1系统——进一步提升了核心板的兼容性、稳定性和安全性。 OpenHarmony4.1在应用开发方面展现了全新的开放能力&#xff0c;以更加清晰的逻辑和场景化视角提供给开发者丰富的API接口&#xff0c;应用开发能力得…

让你的 IDEA 使用更流畅 | IDEA内存修改

随着idea使用越来越频繁&#xff0c;笔者最近发现使用过程中有时候会出现卡顿现象&#xff0c;例如&#xff0c;启动软件变慢&#xff0c;打开项目的速度变慢等&#xff1a; 因此如果各位朋友觉得最近也遇到了同样的困惑&#xff0c;不妨跟着笔者一起来设置IDEA的内存大小吧~ …

基于ECS和NAS搭建个人网盘

前言 在数字化时代&#xff0c;数据已成为我们生活中不可或缺的一部分。个人文件、照片、视频等数据的积累&#xff0c;使得我们需要一个安全、可靠且便捷的存储解决方案。传统的物理存储设备&#xff08;如硬盘、U盘&#xff09;虽然方便&#xff0c;但存在易丢失、损坏和数据…

登录前端笔记(二):vuex管理用户数据;跨域;axios封装;环境;请求响应拦截;权限;用户资料Vuex共享

一、Vuex登录流程之用户模块&#xff1a; 简言之&#xff1a;点击登录调用actions且得到token&#xff0c;把得到的token提交给mutations从而修改state里的数据。 原视频 &#xff08;1&#xff09;Vuex用户模块流程 组件页面里点击登录后&#xff0c;调用stores里的actions&…

09_实现reactive之代理 Set 和 Map

目录 创建代理建立响应式联系避免污染原始数据处理 forEachfor...ofvalues 与 keys 方法 Set 和 Map 都有特定的属性和方法来操作自身&#xff0c;因此需要单独处理。 创建代理 我们来看一段案例代码&#xff0c;体验一下和它们的独特之处&#xff0c;如下&#xff1a; const…

《使用Gin框架构建分布式应用》阅读笔记:p108-p126

《用Gin框架构建分布式应用》学习第8天&#xff0c;p108-p126总结&#xff0c;总计18页。 一、技术总结 1.Redis eviction policy (1)什么是 eviction policy? The eviction policy determines what happens when a database reaches its memory limit. (2)配置示例 在r…

基于Multisim电子配料秤电路设计(含仿真和报告)

【全套资料.zip】电子配料秤电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 电子配料秤仿真功能: 准确测量物体重量&#xff0c;精确度0.1Kg使用两位数码管显示重量信息 使用拨码…