一、下载Onnxruntime

GitHub - microsoft/onnxruntime: ONNX Runtime: cross-platform, high performance ML inferencing and training accelerator

注意win7运行时会出错。

可以下载  https://pan.baidu.com/s/18gIMP7r3lZAmgUTj4H2ugA?pwd=6666  编译好的可在win7下使用。还可以使用CUDA加速。加速方法后面说

二、下载ONNXRuntime AI and Machine Learning Library for Freepascal 

GitHub - hshatti/TONNXRuntime: TOnnxRuntime is a Microsoft ONNXRuntime AI and Machine Learning Library for Freepascal / Delphi

里面有例子。

三、注意事项

1、调用时在单元中要加{$mode delphi}{$H+},因为有些定义使用的是delphi的格式。

2、调用方法时有时会出错。要查看方法的实现,直接写就可以。如

DefaultSessionOptions.SetGraphOptimizationLevel(ORT_ENABLE_BASIC); 这个会出错

查看SetGraphOptimizationLevel方法,写成下面就不会出错了。

ThrowOnError(GetApi().SetSessionGraphOptimizationLevel(DefaultSessionOptions.p_,ORT_ENABLE_ALL));

3、设置CPU线程数后,退出时要关闭,否则会出错

DefaultSessionOptions.SetIntraOpNumThreads(UserCpu); //使用线程数,默认为全开

退出时要调用

session.release;
DefaultSessionOptions.release;

四、CUDA加速

1、在session := TORTSession.Create(ModFile); 创建对象前设置CUDA

OrtSessionOptionsAppendExecutionProvider_CUDA(DefaultSessionOptions.p_,0);

2、复制OnnxruntimeCUDA加速dll

onnxruntime_providers_shared.dll
onnxruntime_providers_cuda.dll

3、复制CUDA动态库

根据运行时提示在Program Files\Nvidia\CUDADevlopment\bin找到相关文件。

4、运行时第一次推理时比较慢,是正常的。

5、在IDE中推理比较慢,原因不明。但直接运行时比CPU推理快得多。

五、如何还要提速,可使用Opencl计算

比如Tbitmap转blob等计算时可以用Opencl进行计算,可以提高整个推理速度。

 

用这个比用Opencv好,对Onnx支持更全。最新的yolov10也可以用的。

posted on 2024-06-23 10:51  禁卫军  阅读(67)  评论(0编辑  收藏  举报