matchanything_eloftr 是基于 EfficientLoFTR 的关键点匹配模型,能够在两张图像之间进行特征点匹配。该模型使用 Transformer 架构实现高效的特征匹配,适用于视觉定位、图像配准、3D 重建等任务。
matchanything_eloftr-ascend/
├── inference.py # 推理测试脚本
├── test.log # 测试日志
├── README.md # 本文档source /usr/local/Ascend/ascend-toolkit/set_env.sh模型文件位于 /opt/atomgit/mxy/matchanything_eloftr/zju-community/matchanything_eloftr/ 目录下:
pip install transformers torch_npu pillow numpy运行推理脚本进行关键点匹配:
cd /opt/atomgit/mxy/matchanything_eloftr-ascend/
python3 inference.py
python3 inference.py --mode inference运行精度对比测试:
cd /opt/atomgit/mxy/matchanything_eloftr-ascend/
python3 inference.py --mode precision_test| 参数 | 说明 | 默认值 |
|---|---|---|
--mode | 测试模式: all, inference 或 precision_test | all |
| 指标 | 实测值 | 阈值 | 状态 |
|---|---|---|---|
| 最大相对误差 | ~0% | < 1.00% | PASS |
| CPU 推理时间 | 84.239s | - | - |
| NPU 推理时间 | 0.175s | - | - |
| 加速比 | 482.18x | > 1x | PASS |
输入: 两张图像 (640x480)
输出:
import torch
from PIL import Image
from transformers import AutoImageProcessor, EfficientLoFTRForKeypointMatching
MODEL_DIR = "/opt/atomgit/mxy/matchanything_eloftr/zju-community/matchanything_eloftr"
processor = AutoImageProcessor.from_pretrained(MODEL_DIR)
model = EfficientLoFTRForKeypointMatching.from_pretrained(MODEL_DIR)
model = model.to("npu:0").eval()
image1 = Image.open("image1.jpg").convert("RGB")
image2 = Image.open("image2.jpg").convert("RGB")
inputs = processor(images=[image1, image2], return_tensors="pt")
inputs = {k: v.to("npu:0") for k, v in inputs.items()}
with torch.no_grad():
outputs = model(**inputs)
keypoints0 = outputs.keypoints[0]
keypoints1 = outputs.keypoints[1]
print(f"Keypoints image 0: {keypoints0.shape}")
print(f"Keypoints image 1: {keypoints1.shape}")| 组件 | 说明 |
|---|---|
| backbone | 多阶段特征提取 CNN |
| transformer | 4层Transformer编码器 |
| head | 关键点预测头 |
从 config.json 提取的关键参数:
{
"hidden_size": 256,
"num_attention_heads": 8,
"num_attention_layers": 4,
"intermediate_size": 512,
"image_size": [832, 832]
}A: 检查 NPU 驱动是否正确安装。LoFTR 模型在 CPU 和 NPU 上应保持数值一致。
A: NPU 相比 CPU 有极其显著的加速(482x),特别适合实时匹配场景。
A: 模型会将输入图像 resize 到 832x832 进行处理。
本项目遵循 Apache-2.0 许可证