Ubuntu18.04 系统上配置并运行SuperGluePretrainedNetwork(仅使用CPU)

SuperGlue是Magic Leap在CVPR 2020上展示的研究项目,它是一个图神经网络(Graph Neural Network)和最优匹配层(Optimal Matching layer)的结合,训练用于对两组稀疏图像特征进行匹配。这个项目提供了PyTorch代码和预训练的权重,可以在SuperPoint关键点和描述子的基础上运行SuperGlue匹配网络。给定一对图像,你可以使用这个项目来提取图像对之间的匹配特征

SuperGlue作为一个“中端”操作,执行上下文聚合、匹配和过滤等功能,是一个端到端的架构。

要在Ubuntu系统上配置并运行SuperGluePretrainedNetwork而不使用CUDA(即不使用GPU),你可以按照以下步骤进行。这些步骤基于SuperGlue的官方GitHub仓库的指导,但已修改为适应仅使用CPU的情况。

1. 克隆仓库

首先,打开一个终端,并使用以下命令克隆SuperGlue的GitHub仓库:

git clone https://github.com/magicleap/SuperGluePretrainedNetwork.git
cd SuperGluePretrainedNetwork

2. 创建Python虚拟环境

创建一个新的Python虚拟环境以避免依赖项与系统的其他项目冲突。这一步需要你已经安装了Python3和pip。

sudo apt-get install python3-venv
python3 -m venv superglue-env
source superglue-env/bin/activate

3. 安装依赖

在虚拟环境中安装所有必要的Python依赖。由于不使用CUDA,可以忽略与CUDA相关的依赖。

pip install -r requirements.txt

 有可能提醒你安装wheel

pip install wheel

4. 强制使用CPU

要确保代码在没有CUDA的情况下运行,在执行脚本时添加--force_cpu标志。例如,如果要运行demo_superglue.py脚本:

demo_superglue.py脚本接受的参数有:

  • --input: 输入图像或图像文件夹的路径。
  • --output_dir: 输出目录的路径。
  • --image_glob: 用于匹配输入目录中图像文件的glob模式。
  • --skip: 在处理连续帧时跳过的帧数。
  • --max_length: 处理的最大帧数。
  • --resize: 调整图像大小的参数,接受一个或两个值(宽度和高度)。
  • --superglue: 使用的SuperGlue模型的类型(outdoorindoor)。
  • --max_keypoints: 每个图像提取的最大关键点数。
  • --keypoint_threshold: 关键点检测的置信度阈值。
  • --nms_radius: 非最大抑制(NMS)的半径。
  • --sinkhorn_iterations: Sinkhorn算法的迭代次数。
  • --match_threshold: 匹配阈值。
  • --show_keypoints: 是否显示关键点。
  • --no_display: 不显示图像结果。
  • --force_cpu: 使用CPU而不是GPU。
python demo_superglue.py --input assets/scannet_sample_images/ --output_dir output/ --resize -1 -1 --force_cpu

 这里,我假设--resize -1 -1意味着你不想调整图像大小。你需要根据实际的demo_superglue.py脚本接受的参数来调整这个命令。如果你需要针对特定图像对运行匹配过程,你可能需要查看脚本内部的实现,看是否支持直接指定图像对,或者你可能需要手动调整脚本来适应你的需求。

5. 使用KITTI 00进行测试的结果

 

 

 

 

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

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

相关文章

前端的文字的字体应该如何设置

要设置文字的字体,在CSS中使用font-family属性。这个属性可以接受一个或多个字体名称作为其值,浏览器会按照列表中的顺序尝试使用这些字体渲染文本。如果第一个字体不可用,浏览器会尝试使用列表中的下一个字体,依此类推。 字体设…

iOS消息发送流程

Objc的方法调用基于消息发送机制。即Objc中的方法调用,在底层实际都是通过调用objc_msgSend方法向对象消息发送消息来实现的。在iOS中, 实例对象的方法主要存储在类的方法列表中,类方法则是主要存储在原类中。 向对象发送消息,核心…

推荐一个屏幕上鼠标高亮显示的小工具

在视频录制等特定场景下,很多人希望在点击鼠标时能够在屏幕上及时进行显示,便于别人发现,提高别人的注意力。 因此,很多录屏软件中都内含显示鼠标点击功能。那如果不支持该怎么办呢?其实,也是可以通过其他工…

Python 实现Excel自动化办公(上)

在Python 中你要针对某个对象进行操作,是需要安装与其对应的第三方库的,这里对于Excel 也不例外,它也有对应的第三方库,即xlrd 库。 什么是xlrd库 Python 操作Excel 主要用到xlrd和xlwt这两个库,即xlrd是读Excel &am…

算法刷题day20:二分系列

目录 引言概念一、借教室二、分巧克力三、管道四、技能升级五、冶炼金属六、数的范围七、最佳牛围栏 引言 这几天一直在做二分的题,都是上了难度的题目,本来以为自己的二分水平已经非常熟悉了,没想到还是糊涂了一两天才重新想清楚&#xff0…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的口罩识别系统(Python+PySide6界面+训练代码)

摘要:开发口罩识别系统对于提升公共卫生安全和疫情防控具有重要意义。本篇博客详细介绍了如何利用深度学习构建一个口罩识别系统,并提供了完整的实现代码。该系统基于强大的YOLOv8算法,并结合了YOLOv7、YOLOv6、YOLOv5的对比,给出…

如何更好的引导大语言模型进行编程的高效开发流程?

这张图片展示了一种如何更好地引导大语言模型进行编程的方法。 首先,最简单也是最有效的方法是让大语言模型重复运行多次,每次增加一些额外的信息,直到获得想要的结果。这种方法虽然简单,但可能需要多次尝试才能得到满意的结果。…

2024绿色能源、城市规划与环境国际会议(ICGESCE 2024)

2024绿色能源、城市规划与环境国际会议(ICGESCE 2024) 一、【会议简介】 随着全球气候变化和环境问题日益严重,绿色能源和可持续发展已成为全球关注的焦点。本次会议旨在汇聚全球在绿色能源、城市规划与环境领域的专家、学者和实践者,共同探讨和分享关于…

Vue.js大师: 构建动态Web应用的全面指南

VUE ECMAScript介绍什么是ECMAScriptECMAScript 和 JavaScript 的关系ECMAScript 6 简介 ES6新特性let基本使用const不定参数箭头函数对象简写模块化导出导入a.jsb.jsmain.js Vue简介MVVM 模式的实现者——双向数据绑定模式 Vue环境搭建在页面引入vue的js文件即可。创建div元素…

1、jQuery介绍、css()、选择器、事件、动画

一、jQuery介绍&#xff1f; 1、什么是jQuery&#xff1f; 是一个JavaScript函数库 2、jQuery特点 写的少&#xff0c;做的多 3、jQuery的安装 直接下载引入 <script src"jquery-1.10.2.min.js"></script>通过cdn引入 <script src"https…

python自动化之项目架构搭建与思路讲解(第二天)

1.自动化测试的概念 自动化测试是指使用自动化工具和脚本来执行测试任务,以验证软件或系统的正确性和稳定性。它可以提高测试的效率和准确性,并节约时间和成本。 2.自动化脚本编写的思路 xmind文档如有需要,可在资源里自行下载 3.项目代码工程创建 lib :基本代码库包 …

瑞_Redis_Redis命令

文章目录 1 Redis命令Redis数据结构Redis 的 key 的层级结构1.0 Redis通用命令1.0.1 KEYS1.0.2 DEL1.0.3 EXISTS1.0.4 EXPIRE1.0.5 TTL 1.1 String类型1.1.0 String类型的常见命令1.1.1 SET 和 GET1.1.2 MSET 和 MGET1.1.3 INCR和INCRBY和DECY1.1.4 SETNX1.1.5 SETEX 1.2 Hash类…

Android 12.0 framework关于systemUI定制之导航栏透明背景的功能实现

1.概述 在12.0的系统rom产品定制化开发中,在对于系统原生SystemUI的导航栏背景在沉浸式导航栏的 情况下默认是会随着背景颜色的变化而改变的,在一些特定背景下导航栏的背景也是会改变的,所以由于产品开发需要 要求需要设置导航栏背景为透明的,所以就需要在Activity创建的时…

《秦时明月》IP新高度:与陕西历史博物馆共同书写文化传承新篇章!

在IP产业风起云涌的今天&#xff0c;如何以创意和匠心为传统文化注入新的活力&#xff0c;成为了摆在每一位文化工作者面前的重要课题。近日&#xff0c;《秦时明月》作为一部深受观众喜爱的国产动画IP&#xff0c;在迎来其十七周年之际&#xff0c;联手陕西历史博物馆&#xf…

2024理解这几个安全漏洞,你也能做安全测试!

如今安全问题显得越来越重要&#xff0c;一个大型的互联网站点&#xff0c;你如果每天查看日志&#xff0c;会发现有很多尝试攻击性的脚本。 如果没有&#xff0c;证明网站影响力还不够大。信息一体化的背后深藏着各类安全隐患&#xff0c;例如由于开发人员的不严谨导致为Web应…

网络安全学习笔记1

1.了解kali及安装 vmware安装&#xff0c;用户名密码均为kali 2.metasploit是什么 3.metasploit攻击windows系统 在kali中打来终端 数据msfconsole 进入metasploit的控制终端界面 msf的使用法则&#xff1a; 1.使用模块 2.配置模块必选项 3.运行模块 三步操作、实现对…

逻辑回归与交叉熵--九五小庞

什么是逻辑回归 线性回归预测的是一个连续值&#xff0c;逻辑回归给出的“是”和“否”的回答 Singmoid sigmoid函数是一个概率分布函数&#xff0c;给定某个输入&#xff0c;它将输出为一个概率值 逻辑回归损失函数 平方差所惩罚的是与损失为同一数量级的情形&#xff0…

8、Redis-Jedis、Lettuce和一个Demo

目录 一、Jedis 二、Lettuce 三、一个Demo Java集成Redis主要有3个方案&#xff1a;Jedis、Lettuce和Redisson。 其中&#xff0c;Jedis、Lettuce侧重于单例Redis&#xff0c;而Redisson侧重于分布式服务。 项目资源在文末 一、Jedis 1、创建SpringBoot项目 2、引入依赖 …

电商小程序10分类管理

目录 1 分类数据源2 搭建功能3 创建变量读取数据4 绑定数据总结 本篇我们介绍一下电商小程序的分类管理功能的开发&#xff0c;先看我们的原型图&#xff1a; 在首页我们是展示了四个分类的内容&#xff0c;采用上边是图标&#xff0c;下边是文字的形式。使用低代码开发&#…

【系统分析师】-需求工程

一、需求工程 需求工程分为需求开发和需求管理。 需求开发&#xff1a;需求获取&#xff0c;需求分析&#xff0c;需求定义、需求验证。 需求管理&#xff1a;变更控制、版本控制、需求跟踪&#xff0c;需求状态跟踪。&#xff08;对需求基线的管理&#xff09; 1.1需求获取…