This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
嗨、团队:
我尝试按照以下步骤对自定义模型运行推理、但遇到了一个问题:
引导 RTOS CPU : ONNX file --> convert to TIDL format --> run inference
edgeai-tidl-tools/tidl_tools/tidl_model_import.out
将 ONNX 模型转换为 TIDL 格式、然后尝试运行推理时、会遇到错误、说明param.yaml
不存在。 我的转换模型(左侧)与 Model Zoo 中的示例模型(右侧)不同。
问题:
是否可以生成config.yaml
、dataset.yaml
和param.yaml
使用tidl_model_import.out
? 如果是、如何正确配置它们?
您能否提供一个将 ONNX 文件转换为 TIDL 格式并运行推理的示例?
我还尝试了 自定义模型评估 方法。(github.com/.../custom_model_evaluation.md(github.com/.../custom_model_evaluation.md
EP Error Unknown Provider Type: TIDLCompilationProvider when using ['TIDLCompilationProvider', 'CPUExecutionProvider']
。 import torch import onnx import onnxruntime as rt import subprocess import os # 定義參數 onnx_model_path = "model.onnx" simplified_onnx_model_path = "model_simplified.onnx" tidl_artifacts_folder = "./model-artifacts-dir/" tidl_tools_path = "./app/ken/tda4/TIDL10.00.06.00/edgeai-tidl-tools/tidl_tools/" # Step 1: 導出 ONNX 模型 (以 PyTorch 為例) def export_pytorch_model_to_onnx(model, input_shape): dummy_input = torch.randn(*input_shape) torch.onnx.export(model, dummy_input, onnx_model_path, opset_version=11) print(f"ONNX model exported to {onnx_model_path}") # Step 2: 檢查模型有效性並推斷形狀 def check_and_infer_shape(onnx_model_path): model = onnx.load(onnx_model_path) inferred_model = onnx.shape_inference.infer_shapes(model) onnx.save(inferred_model, "inferred_model.onnx") print("Shape inference complete and saved to inferred_model.onnx") # Step 3: 簡化 ONNX 模型 def simplify_onnx_model(onnx_model_path, simplified_model_path): subprocess.run(["python3", "-m", "onnxsim", onnx_model_path, simplified_model_path]) print(f"Simplified ONNX model saved to {simplified_model_path}") # Step 4: 設定 ONNX Runtime TIDL 編譯會話 def setup_tidl_session(simplified_model_path): # 設置編譯參數 options = { "artifacts_folder": tidl_artifacts_folder, "tidl_tools_path": tidl_tools_path } so = rt.SessionOptions() ep_list = ['TIDLCompilationProvider', 'CPUExecutionProvider'] # 設置編譯會話,使用 TIDLCompilationProvider 進行編譯 sess = rt.InferenceSession(simplified_model_path, providers=ep_list, provider_options=[options, {}], sess_options=so) print("TIDL model compilation session created.") return sess # Step 5: 驗證模型的輸出 def validate_model_output(sess, input_data): # 確保 TIDL 編譯模型可以產生正確輸出 input_name = sess.get_inputs()[0].name output_name = sess.get_outputs()[0].name output = sess.run([output_name], {input_name: input_data}) print(f"Model output: {output}") # 主流程 if __name__ == "__main__": # 假設這是 PyTorch 模型和輸入維度 model = torch.nn.Sequential( torch.nn.Conv2d(3, 16, 3, stride=2, padding=1), torch.nn.ReLU(), torch.nn.Flatten(), torch.nn.Linear(16 * 112 * 112, 10) ) input_shape = (1, 3, 224, 224) # 導出、檢查、簡化、編譯和驗證模型 export_pytorch_model_to_onnx(model, input_shape) check_and_infer_shape(onnx_model_path) simplify_onnx_model(onnx_model_path, simplified_onnx_model_path) session = setup_tidl_session(simplified_onnx_model_path) # 使用隨機數據進行驗證 input_data = torch.randn(*input_shape).numpy() validate_model_output(session, input_data) print("Available providers:", rt.get_available_providers())
感谢您的帮助。
大家好、Ken。我们来看看这个问题。 首先,我们将确切地做你所做的,以找出我们是否会有同样的问题。 您能否提供软件版本号、每一步的命令以及您的 Linux 环境? 因此我们可以在我们这边复制它们。
谢谢。此致
文立
您好 Ken、感谢您提供的信息。 我将尝试设置与您相同的配置/环境;并将更新您的配置/环境。
此致
文立
尊敬的 Wen:
非常感谢您的关注、我期待收到您的回复。
此致
你好、Ken、我还在为您的工作。
同时、您是否还在查看此信息?
谢谢。此致
温
您好、温:
我已经按照此链接中的指示执行了该过程:
https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/examples/jupyter_notebooks/custom-model-onnx.ipynb、
但我遇到了错误"TIDLCompilationProvider Type (EP 错误未知提供程序类型:TIDLCompilationProvider)"。
感谢您的帮助。
此致
您好、Ken;
我将运行它
Jupyter 首先看一下我是否会得到相同的结果。 如果不是、我们将比较记录。
谢谢。此致
温
您好、温:
很抱歉打扰您、运行上述步骤后您能得到相同的结果吗?
感谢您的帮助。