onnx-runner:使用ORT运行YOLO的ONNX模型
onnx-runner
onnx-runner使用 ORT 运行 ONNX 模型,使用Rust构建。
目前仅支持 YOLO 模型,未来可能会支持其他 ONNX 模型
安装
要求
- 如果您想使用 CPU 运行 onnx-runner,则无需安装
- 如果您想使用 GPU 运行 onnx-runner,则需要安装 CUDA 12.x 和 CUDNN 9.x
Windows
-
下载最新
版本:onnx-runner-0.1.1-windows.tar.gz -
或从发布页面下载:Releases
-
将
onnx-runner-{version}-windows.tar.gz
解压到您的路径。压缩包中已经包含运行 ONNX 和 OpenCV 所需的依赖项。您不需要下载任何其他依赖项 -
使用 CMD 或 PowerShell 运行
onnx-runner
onnx-runner.exe -m <your_onnx_model> -i <your_input> --show
Ubuntu
-
下载并安装
# 下载最新软件包 wget https://github.com/xgpxg/onnx-runner/releases/download/v0.1.1/onnx-runner_0.1.1_amd64.deb # 安装软件包 sudo apt install ./onnx-runner_0.1.1_amd64.deb
注意:OpenCV 将默认安装
-
运行 onnx-runner
onnx-runner -m <your_onnx_model> -i <your_input> --show
其他 Linux
-
下载最新
版本:onnx-runner-v0.1.1-linux.tar.gz -
将
onnx-runner-{version}-linux.tar.gz
提取到您的路径下。 -
将
libonnxruntime.so
复制到/usr/lib
-
安装
Opencv
-
运行 onnx-runner
onnx-runner -m <your_onnx_model> -i <your_input> --show
MacOS
目前暂不支持
用法
CLI
onnx-runner -m yolov8n.onnx -i image.jpg --show
有关更多信息,请参阅帮助:
onnx-runner -h
Usage: onnx-runner.exe [OPTIONS] --model <MODEL> --input <INPUT>
Options:
-m, --model <MODEL> YOLO onnx model file path, support version: v5, v7, v8, v10, and v11
-i, --input <INPUT> Input source, like image file, http image, camera, or rtsp
--yolo-version <YOLO_VERSION> The number of YOLO version, like 5, 7 ,8 ,10, or 11. Specifically, for YOLO 10, it needs to be set up [default: 8]
--show Should the detection results be displayed in the gui window, default is false
-h, --help Print help
-V, --version Print version
支持的输入源:
输入 | 示例 |
---|---|
本地图像文件 | D:/images/img.png |
网络图像文件 | https://cdn.pixabay.com/photo/2019/11/05/01/00/couple-4602505_1280.jpg |
本地视频文件 | D:/images/video.mp4 |
网络视频文件 | https://cdn.pixabay.com/video/2024/06/04/215258_large.mp4 |
本地摄像头 | camera://0 |
IP摄像头(RTSP) | rtsp://192.168.1.5:554 |
Lib
您需要安装rust
和cargo
,然后将onnx-runner添加到您的项目中。
cargo add onnx-runner
示例
fn main() {
//使用默认配置
let mut config = ModelRunConfig::default();
//创建一个新的runner
let runner = ModelRunner::new(args.model.as_str(), config).unwrap();
//运行。input可以是本地图片、网络图片、摄像头或者支持RTSP的远程摄像头
runner.run(args.input.as_str(), ModelRunner::no_pre, |res, mut mat| {
//在这里您的代码。您可以将结果发送到http服务
println!("Result: {:?}", &res);
},
)?;
}
CPU/GPU支持
所有CPU都支持。
目前仅支持Nvidia GPU。您需要在设备上安装CUDA 12.x +和cudnn 9.x +。
问题解答
- 已经安装了CUDA和CUDNN,但为什么仍然使用CPU而不是GPU?
首先检查CUDA环境变量是否已配置,然后检查CUDNN依赖库是否已复制到CUDA目录。注意CUDA和CUDNN的版本。目前仅支持 CUDA12.x 和 CUDNN9.x。