当前位置: 首页 > 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.jsqmd.com/news/988832/

相关文章:

  • 百奥几何完成数亿融资,GeoFlow模型迭代加速AI制药商业化进程
  • 四川富实威电气接地服务评测:全流程对接能力解析 - 优质品牌商家
  • 2026年Q2杭州吉岩建筑工程:钻井服务对接及技术支撑推荐 - 优质品牌商家
  • 动态扭矩传感器哪个品牌靠谱?广东犸力提升装配良率至99.2%,实战表现优异 - 品牌速递
  • Java Web员工信息管理系统毕设资源包(含JSP源码、MySQL脚本、论文文档及运行截图)
  • 江苏寄快递怎么收费?哪家便宜?教你3步省一半 - 快递物流资讯
  • Python 后端基础(二):RESTful API 设计规范,接口命名、状态码和返回格式怎么写
  • 拓竹打印机工艺参数-温度及材料设置
  • 温州专业GEO服务商推荐|2026年口碑效果双保障 TOP5-10企业权威榜单 + 完整服务指南 - 玖叁鹿
  • 2026办公编程显示器优选,明基4款RD按工位挑选
  • Claude Code 一键安装指南(Windows/macOS/Linux)
  • 2026年开关有哪些品牌?行业知名品牌推荐 - 品牌排行榜
  • 2026年 系统门窗品牌推荐榜单:高性能隔热与匠心设计之选,深度解析选购关键点与避坑指南 - 品牌发掘
  • AI精准量化碳足迹,企业碳管理不再“摸黑走路”
  • traceback 模块
  • 2026年新消息:杭州知名舞美设备租赁平台综合服务解析 - 品牌鉴赏官2026
  • 意图共鸣科技《AI记忆链商业化白皮书3.0》精读:第二大脑,你的AI参谋
  • 基于3D-DFT架构下的ICL文件生成(DFT)
  • 数据的加密与解密(23:46)
  • Mac微信防撤回终极指南:3分钟解锁完整聊天记录保护
  • 2026广州中高端财税服务商权威测评:合规评级与服务能力双维度排行 - 互联网科技品牌测评
  • RN/hook/TS
  • Makepad 界面怎么做得更像产品,而不是示例
  • 宜兴住宅智能家居装修前应该怎么规划:先把点位、布线和验收边界说清楚
  • Grounding DINO实战:开放词汇目标检测上手指南
  • 终于不用再“盲猜”了:一位硬件工程师的 SC2010 使用手记
  • 2026 湛江市 GEO 推广优化服务商 TOP5 权威排名完整新闻合集(含榜单表格) - 广东科技观察
  • 数据的加密与解密(23:55)
  • 品牌人,快去劝老板做GEO!告别被动营销,让品牌效果彻底可视化
  • Authlib:Python OAuth 与 OpenID Connect 服务端库