一、下载Onnxruntime
注意win7运行时会出错。
可以下载 https://pan.baidu.com/s/18gIMP7r3lZAmgUTj4H2ugA?pwd=6666 编译好的可在win7下使用。还可以使用CUDA加速。加速方法后面说
二、下载ONNXRuntime AI and Machine Learning Library for Freepascal
里面有例子。
三、注意事项
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也可以用的。