一、下載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也可以用的。