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

roma2 - MKT

roma2

 

安装

环境

#============================== 安装  
检查 CUDA 环境
export CUDA_HOME=/usr/local/cuda-11.8
export PATH=/usr/local/cuda-11.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATHnvcc -V 查看
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

  

安装

conda remove -n romav2 --all -yconda create -n romav2 python=3.11 -y
conda activate romav2pip install \torch==2.5.1 \torchvision==0.20.1 \torchaudio==2.5.1 \--index-url https://download.pytorch.org/whl/cu118pip install --force-reinstall \
torch==2.5.1+cu118 \
torchvision==0.20.1+cu118 \
torchaudio==2.5.1+cu118 \
--index-url https://download.pytorch.org/whl/cu118

  

去掉默认的pytorch

image

 

[project]
name = "romav2"
version = "2.0.1"
description = "RoMa v2: Harder Better Faster Denser Feature Matching"
readme = "README.md"
authors = [{ name = "Johan Edstedt", email = "johan.edstedt@liu.se" }
]
requires-python = ">=3.10"
dependencies = ["einops>=0.8.1","pillow>=12.0.0","rich>=14.2.0","tqdm>=4.67.1","fused-local-corr ; sys_platform == 'linux'",
][build-system]
requires = ["uv_build>=0.8.15,<0.9.0"]
build-backend = "uv_build"[project.optional-dependencies]
eval = ["kornia>=0.8.2","matplotlib>=3.10.7","opencv-python>=4.12.0.88","wandb>=0.23.0","wxbs-benchmark>=0.0.4",
]
dev = ["slurm-util>=0.2.7","ruff>=0.14.5",
]

  

 

 重新安装

pip install -e .

  

报错cudnn  cuda 之类

确保只有一个版本

pip install --force-reinstall \
torch==2.5.1+cu118 \
torchvision==0.20.1+cu118 \
torchaudio==2.5.1+cu118 \
--index-url https://download.pytorch.org/whl/cu118

  

 

 

# 第一次下载模型
Downloading: "https://github.com/Parskatt/RoMaV2/releases/download/v2.0.1/romav2.0.1.pt" to /home/dongdong/.cache/torch/hub/checkpoints/romav2.0.1.pt


1 划线匹配

image

 

 

 

from pathlib import Path
import cv2
import numpy as np
import torch
import matplotlib.cm as cm
from PIL import Imagefrom romav2 import RoMaV2
from romav2.device import device# -----------------------------
# 1. 图像路径
# -----------------------------
img_A_path = '/media/dongdong/新加卷/0ubuntu20/1slam/数据/2RTK/City1-buildings/location21_fog_0325_8pm_133m/images/DJI_00001.jpg'img_B_path = ("/media/dongdong/新加卷/0ubuntu20/1slam/数据/""2RTK/City1-buildings/location11_night_0224_21pm_125m/""pic_0224_night_yintian_2131pm_125/images/DJI_00006.jpg"
)# -----------------------------
# 2. 加载模型
# -----------------------------
model = RoMaV2()
model.apply_setting("precise")
model.eval()# -----------------------------
# 3. 读取图像 & 尺寸
# -----------------------------
im1 = Image.open(img_A_path).convert("RGB")
im2 = Image.open(img_B_path).convert("RGB")H_A, W_A = im1.height, im1.width
H_B, W_B = im2.height, im2.width# -----------------------------
# 4. 密集匹配 + 采样
# -----------------------------
preds = model.match(img_A_path, img_B_path)
matches, overlaps, _, _ = model.sample(preds, 5000)# -----------------------------
# 5. 转像素坐标
# -----------------------------
kptsA, kptsB = model.to_pixel_coordinates(matches, H_A, W_A, H_B, W_B
)# -----------------------------
# 6. RANSAC 估计 F
# -----------------------------
kptsA_np = kptsA.cpu().numpy()
kptsB_np = kptsB.cpu().numpy()F, mask = cv2.findFundamentalMat(kptsA_np,kptsB_np,ransacReprojThreshold=0.2,method=cv2.USAC_MAGSAC,confidence=0.999999,maxIters=10000,
)print("Fundamental Matrix:\n", F)
print("Inliers:", int(mask.sum()) if mask is not None else 0)# -----------------------------
# 7. 可视化匹配(彩色连线)
# -----------------------------
# -----------------------------
# 7. 实时可视化(前 100 个 inlier)
# -----------------------------
if mask is not None and int(mask.sum()) > 0:imgA = np.array(im1)imgB = np.array(im2)vis = np.concatenate([imgA, imgB], axis=1)inliers = mask.ravel().astype(bool)ptsA = kptsA_np[inliers][:100]ptsB = kptsB_np[inliers][:100]N = len(ptsA)cmap = cm.get_cmap("hsv", N)for i, ((x1, y1), (x2, y2)) in enumerate(zip(ptsA, ptsB)):color = tuple(int(c * 255) for c in cmap(i)[:3])cv2.circle(vis, (int(x1), int(y1)), 3, color, -1)cv2.circle(vis, (int(x2 + W_A), int(y2)), 3, color, -1)cv2.line(vis,(int(x1), int(y1)),(int(x2 + W_A), int(y2)),color,1,cv2.LINE_AA,)# 实时显示cv2.namedWindow("RoMaV2 Matches", cv2.WINDOW_NORMAL)cv2.imshow("RoMaV2 Matches", vis[..., ::-1])print(f"[INFO] Showing {N} matches (press ESC to exit)")while True:key = cv2.waitKey(1)if key == 27:  # ESCbreakcv2.destroyAllWindows()
else:print("⚠️ No inliers found, skip visualization")

  

http://www.rkmt.cn/news/1500578.html

相关文章:

  • 四川富实威电气接地服务评测:全流程对接能力解析 - 优质品牌商家
  • 2026年Q2杭州吉岩建筑工程:钻井服务对接及技术支撑推荐 - 优质品牌商家
  • 拓竹打印机工艺参数-温度及材料设置
  • traceback 模块
  • 2026年新消息:杭州知名舞美设备租赁平台综合服务解析 - 品牌鉴赏官2026
  • Mac微信防撤回终极指南:3分钟解锁完整聊天记录保护
  • 基于3D-DFT架构下的ICL文件生成(DFT)
  • Grounding DINO实战:开放词汇目标检测上手指南
  • 2026 湛江市 GEO 推广优化服务商 TOP5 权威排名完整新闻合集(含榜单表格) - 广东科技观察
  • 品牌人,快去劝老板做GEO!告别被动营销,让品牌效果彻底可视化
  • HttpPrinter的url地址或者说json过长的解决问题
  • 苹果秋季将推Siri AI更新,聚焦用户需求带来全新对话体验
  • 2026年5月成都宠物航空托运靠谱服务商攻略|正规有氧舱 安全不踩坑 - TOP10品牌推荐榜单
  • 宇树科技,即将上市!
  • Claude Code 代码库迁移评估流程:目录扫描、依赖分析和风险清单
  • 数据的加密与解密(23:53)
  • 2026年 惠州变压器回收最新推荐:专业处置油式/干式/箱式废旧变压器及二手设备公司盘点 - 品牌发掘
  • 数据的加密与解密(23:39)
  • CompletableFuture 详细讲解
  • 单配六维力传感器采集卡/模块的方法 EtherCAT ECT-FT6B北京锐灵科技ray0.cn
  • 【新 Linux 服务器上手全攻略】系统巡检、存储规划与开发环境初始化
  • 报销流程混乱,问题到底出在哪里?
  • 华为云发布Agentic AI系列新品 打造智能时代“硅基黑土地”
  • 聊天式 AI 剪辑工作流解析:自然语言如何驱动多步视频处理
  • 微信网页版终极解决方案:wechat-need-web 浏览器扩展实用指南
  • Beyond Compare 5终极激活指南:5分钟解锁完整功能
  • i.MX 7ULP异构多核架构解析:平衡性能与功耗的嵌入式设计实践
  • 2026年6月成都本地人私藏高分火锅合集|全店口碑4.8分+,闭眼吃不踩坑 - TOP10品牌推荐榜单
  • 描述符(Descriptors)‌
  • 2026年绕线机厂家推荐榜:电线电缆/铜丝钢丝/高速伺服自动绕线机优质品牌深度解析 - 品牌发掘