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

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.lryc.cn/news/307335.html

相关文章:

  • 协议-http协议-基础概念01-发展历程-http组成-http是什么-相关的应用-相关的协议
  • UI学习-学习内容
  • Flink CDC 提取记录变更时间作为事件时间和 Hudi 表的 precombine.field 以及1970-01-01 取值问题
  • 【网络安全】网络安全意识教育实用指南
  • wordpress模板购买网站推荐
  • LeetCode 刷题 [C++] 第240题.搜索二维矩阵 II
  • HP笔记本电脑如何恢复出厂设置?这里提供几种方法
  • Elasticsearch:了解人工智能搜索算法
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • 分享便携式血氧仪单片机方案
  • 【Java设计模式】四、适配器模式
  • RV32/64 特权架构 - 特权模式与指令
  • 多微服务合并为一个服务
  • Springboot企业级开发--开发入门01
  • bash和sh和./的区别
  • LeetCode 3:寻找最长不含重复字符的子串长度
  • 【自然语言处理四-从矩阵操作角度看 自注意self attention】
  • Unity脚本,串行端口的握手协议(流控制)
  • 2023 re:Invent 用 Amazon Q 打造你的知识库
  • ChatGPT 国内快速上手指南
  • Docker 常用操作命令备忘
  • BUU [CISCN2019 华东南赛区]Web4
  • 【卷积神经网络中用1*1 卷积有什么作用或者好处呢?】
  • 分布式系统概念及其应用
  • 数据报文转换
  • Python爬虫-付费代理推荐和使用
  • kubectl使用及源码阅读
  • C++面试宝典第32题:零钱兑换
  • pyspark分布式部署随机森林算法
  • 【Python笔记-设计模式】中介者模式