1. 背景与现状
当前使用深度图像作为掩膜后,对每张图使用传统方法做特征匹配效果不佳。尝试不同的策略加上特征匹配方法都无法实现目标效果,遂尝试深度学习方法。
2. ONNX 与 Runtime 简介
ONNX 是模型的中间表示格式,Runtime 是跑 ONNX 的标准引擎。
用 Runtime 跑 ONNX 模型实现 C++ 推理:模型(Python 训练测试得到权重文件)与代码 (C++) 解耦。 它做了三件事:
- 把 PyTorch / TF / JAX 的模型
- 导出成统一的计算图(.onnx)
- 与训练框架完全解耦
可以理解为:ONNX = '深度学习领域的 STL / IR'
使用 ONNX 模型和 Runtime 实现 C++ 模型的推理,让模型'框架无关、部署简单、推理更快、端侧更稳',特别适合 C++ 推理和工程落地。
| 方案 | 适合阶段 | 优点 | 致命点 |
|---|---|---|---|
| PyTorch | 研究 / 验证 | 写得快 | 端侧难部署 |
| TorchScript | 半工程 | 比 Python 好 | 依然重 |
| ONNX + ORT | 产品 / 端侧 | 稳、快、轻 | 导出要规范 |
| TensorRT | 极致性能 | 超快 | 强耦合 NVIDIA |
3. 环境搭建与代码实现
三维深度学习模型 VGGT 中使用 LightGlue 作为特征匹配模块的模型,借鉴它将模型搬到我的项目上,第一步是跨过 Python->C++ 的槛。使用 ONNX 打破壁垒。下面将.onnx 解释为'模型'、将 runtime 解释为'库'。
3.1 下载模型和库
- https://github.com/OroChippw/LightGlue-OnnxRunner/tree/master -- 源代码及模型链接
- https://github.com/microsoft/onnxruntime -- 库链接
下载后解压进入 onnx 模型文件夹打开 CMakeLists.txt,修改对应的库路径-->包含头文件-->链接 lib。
3.2 Cmake 构建配置
按照官方文档或示例进行 CMake 配置。
3.3 代码中本地路径修改
修改 onnx 路径 (注意模型需要匹配正确,否则后续报错 MultiHead...) 和图像路径。
3.4 编译生成
VS(MSVC)build release 生成 exe 并添加 dll 到同文件夹下。

