在OpenCV基于深度学习的超分辨率模型实践

1. 引言

OpenCV是一个开源的计算机视觉库,拥有大量优秀的算法。基于最新的合并,OpenCV包含一个易于使用的接口,主要用于实现基于深度学习方法的超分辨率(SR)。该接口包含预先训练的模型,这些模型可以非常容易和有效地用于推理。在这篇文章中,我将解释它可以做什么,并逐步展示如何使用它。

闲话少说,我们直接开始吧!

2. 版本说明

首先我们的第一步是安装OpenCV库。一些功能都是在逐渐发布,所以需要注意版本:4.2.0用于C++,4.3.0添加Python接口,4.4.0添加GPU推理。大家可以按照OpenCV文档中的说明进行相应的操作。大家注意安装contrib模块,因为这是SR接口代码所在的位置。本文中我们将使用的接口或模块称为dnn_superres(dnn代表深度神经网络;superres代表超分辨率)。

3. 模型下载

接着我们需要单独下载预先训练好的模型,因为OpenCV代码库不包含它们。原因是有些模型相当大。这里有几种模型可供选择,所有这些模型都是流行SR论文中的实现。现在,让我们选择一个小模型,大家可以在这里下载。

4. 实践

我们在Python中可以通过以下代码进行相应的实现:


import cv2
from cv2 import dnn_superres

# Create an SR object
sr = dnn_superres.DnnSuperResImpl_create()

# Read image
image = cv2.imread('./input.png')

# Read the desired model
path = "EDSR_x3.pb"
sr.readModel(path)

# Set the desired model and scale to get correct pre- and post-processing
sr.setModel("edsr", 3)

# Upscale the image
result = sr.upsample(image)

# Save the image
cv2.imwrite("./upscaled.png", result)

代码相对简单,参考相应的注释即可。

5. 推荐模型

目前在OpenCV中主要支持4种不同的SR模型。它们都可以按2、3和4的比例放大图像。LapSRN甚至可以升级8倍。它们在准确性、大小和速度上各不相同。

  • EDSR: 这是目前表现最好的模型。然而,它也是参数量最大的模型,因此具有最大的文件大小和最慢的推理。大家可以在这里下载。

  • ESPCN: 这是一个相对较小的模型,具有快速和良好的推理能力。它可以进行实时视频放大(取决于图像大小)。大家可以在这里下载。

  • FSRCNN: 这也是一个具有快速准确推理的小模型。还可以进行实时视频放大。大家可以在这里下载。

  • LapSRN: 这是一款中等大小的模型,可以提升8倍分辨率。大家可以在这里下载。

有关这些模型的更多信息和实现,请参阅模块的GitHub中的ReadME文件。关于上述模型的基准和比较,请访问此处。

6. 具体实例

接着让我们看具体实例如下:(如果在移动设备上查看,建议放大后进行直观的对比)

输入图像如下:
在这里插入图片描述
双线性插值放大三倍后的图像如下:
在这里插入图片描述
使用模型FSRCNN放大三倍后的效果如下:
在这里插入图片描述
使用模型ESDR放大三倍后的效果如下:
在这里插入图片描述
正如大家所看到的,这些模型产生了令人非常满意的结果,特别是EDSR给出了惊人的结果,尽管它有点慢(几秒钟的推理时间),但是绝对值得等待。大家可以自己试试!

7. 注意事项

事实上,在上述具体实现中,有以下几点注意事项:

  • 如果在使用.jpg图像时出现错误,请尝试切换到.png格式

  • 确保大家的setModel()中的参数与大家在readModel()中使用的模型匹配。

  • 尝试不同的模型,在速度和性能方面获得不同的结果。

  • 如果大家想使用GPU进行推理(默认是CPU),大家可以在读入模型后将后端设置为CUDA。这是一个新的特性,因此大家需要4.4.0版本。请参阅相关的拉取请求。部门代码参考如下:

path = "EDSR_x3.pb"
sr.readModel(path)

# Set CUDA backend and target to enable GPU inference
sr.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
sr.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

8. 总结

本文重点介绍了在OpenCV中,利用深度学习的方法来进行超分辨率的实现,被给出了具体的代码实例,和几种常用的模型。

您学废了吗?

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8s构建的mysql无法远程连接

最近在写一个老师布置的大作业,都是老师写好的yaml文件,都是没问题的,但是构建的mysql无法远程连接。 尝试了网上的很多方法,都失败了,我的构建过程应该是没什么错误的,所以网上的方法并不奏效&#xff0c…

使用webstrom编写vue开启提示

1.语言服务器选择 2.文件类型–忽略的文件和文件夹,删去,node_modules,就可以点进去库了 3.禁用JSLint、TSLint 4.开启node辅助 5.如果是vite,开启自动读取,或手动指定 6.如果是Webpack,开启自动读取&#…

修改移远提供的GobiNet、quectel-CM源码,使其支持有方N720 4G模块

最近在研究imx6ull linux下4G模块驱动的移植,参考的移远ec20的移植方法,添加了GobiNet驱动,编译了quectel-CM工具,并且可以正常拨号,分配到ip,如下: ping外网也没有压力,如下…

CAN 二: STM32 CAN控制器

1、CAN控制器介绍 (1)STM32 CAN控制器(bxCAN),支持CAN 2.0A和CAN 2.0B Active版本协议。 bxCAN存在于F1、F4、F7系列的STM32。H7系列称作FDCAN。 (2)CAN 2.0A 只能处理标准数据帧且扩展帧的内容会识别错别,而CAN 2.0B Active可以处理标准数据帧和扩展…

unity中:搭建在线AR应用

使用Imagine WebAR - Image Tracker插件部署WebGL应用 在使用Imagine WebAR - Image Tracker插件进行WebGL应用开发时,有两个关键知识点需要掌握: 1. 部署到支持HTTPS的服务器 由于WebGL应用需要访问用户的摄像头,因此必须在支持HTTPS的服…

挡墙边界提取

基于点云对挡墙边界进行提取 算法思路 将点转到极坐标系下,并得到极坐标系下的索引值,并输出距离信息。 double getCellIndexFromPoints(double x, double y, int& chI) {// 计算点到原点的欧几里得距离double distance sqrt(x * x y * y);// 将…

s26.Rocky Linux、CentOS和Ubuntu系统初始化脚本v7版

Rocky Linux、CentOS和Ubuntu系统初始化脚本 Shell脚本源码地址: Gitee:https://gitee.com/raymond9/shell Github:https://github.com/raymond999999/shell 可以去上面的Gitee或Github仓库代码拉取脚本。 版本功能v7版更新内容1.由于v…

请将图转换成以某个结点为根结点的树

题目要求:请将图转换为以某个结点为根结点的数。然后,输出所有从根结点到叶子结点的路径。 例如: 示例输入, 6 0 1 1 2 1 4 3 4 4 5期望输出, 1 0 1 2 1 4 3 1 4 5 解题思路1:创建一个全局布尔型数组…

煤老板自述三十年

《煤老板自述三十年》 这本书是一位煤老板站在他的角度与高度为读者所描写的他们眼中的社会与江湖,大胆、真实、开拓眼界。这本书讲述了很多真相,它无所不包,充满了各种江湖气息。煤老板们身为财富领军人物,经历过我们大部分人难…

基于Java技术的选课管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Vue3.0在软件开发中的能力展示

经过技术的调整与迁移之后,JNPF开发平台已经上线了Vue3.0版本。 JNPF是从 2014 开始研发低代码前端渲染,2018 年开始研发后端低代码数据模型,发布了JNPF开发平台。 基于SpringBootVue3的全栈开发平台,微服务、前后端分离架构&…

LeetCode-数组-重叠、合并、覆盖问题-中等难度

435. 无重叠区间 我认为区间类的题型,大多数考验的是思维能力,以及编码能力,该类题型本身并无什么算法可言,主要是思维逻辑,比如本题实际上你只需要能够总结出重叠与不重叠的含义,再加上一点编码技巧&#…

学生备考使用台灯到底好不好?公认好用的护眼台灯推荐

在现代生活中,许多学生的学习压力越来越大,面临的近视几率也越来越大,特别是初中生,眼睛发育还未完全,使用不恰当的灯光也会对眼睛造成损害,特别是护眼台灯。虽然护眼台灯在功能上能够提供充足、柔和的光线…

【投稿优惠|检索稳定】2024年信息系统、工程与数字化经济国际会议(ICISEDE 2024)

2024年信息系统、工程与数字化经济国际会议(ICISEDE 2024) 2024 International Conference on Information Systems and Engineering and the Digital Economy(ICISEDE 2024) [会议简介] 2024 年信息系统、工程与数字化经济国际会议(ICISEDE 2024)将于 2024 年 1 月 20 日在厦门…

Docker 部署 2FAuth 服务

拉取最新版本的 2FAuth 镜像: $ sudo docker pull 2fauth/2fauth:latest在本地预先创建好 2fauth 目录, 用于映射 2FAuth 容器内的 /2fauth 目录。 使用以下命令, 在 前台 运行 2FAuth 容器: $ sudo docker run -it --rm --name 2fauth -p 10085:8000/tcp -v /ho…

【漏洞复现】FLIR AX8红外线热成像仪命令执行漏洞

漏洞描述 eledyne FLIR 设计、开发、制造以及强大的传感和意识技术。自透射热图像、可见光图像、可见频率分析、来自测量和诊断的先进威胁测量系统以及日常生活的创新解决方案。 Teledyne FLIR 提供多种产品用于政府、国防、工业和商业市场。我们的产品,紧急救援人员,军事人…

SAP UI5 walkthrough step9 Component Configuration

在之前的章节中,我们已经介绍完了MVC的架构和实现,现在我们来讲一下,SAPUI5的结构 这一步,我们将所有的UI资产从index.html里面独立封装在一个组件里面 这样组件就变得独立,可复用了。这样,无所什么时候我…

基于物联网的智能仓管理系统方案

基于物联网的智能仓管理系统方案 一、项目背景 随着企业业务的快速发展,传统的人工仓库管理方式已经无法满足现代企业的需求。仓库运营效率低下、货物出入库错误、库存不准确等问题不断涌现。因此,我们提出一个基于物联网技术的智能仓管理系统方案&…

3DMAX UV贴图修改插件安装卸载方法

3DMAX UV贴图修改插件安装卸载方法 3dMax贴图修改插件PolyUnwrapper是为纹理艺术家设计的一整套专业工具,尤其适用于建筑和游戏行业。 它包含许多功能,将大大帮助您改进UV展开的工作流程。 【主要功能特点】 -多重缝合。一次缝合多个壳 -自定义打包算…

基于ssm志愿者招募网站源码和论文

网络的广泛应用给生活带来了十分的便利。所以把志愿者招募管理与现在网络相结合,利用java技术建设志愿者招募网站,实现志愿者招募的信息化。对于进一步提高志愿者招募管理发展,丰富志愿者招募管理经验能起到不少的促进作用。 志愿者招募网站…