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.

[参考译文] AM68A:am68a 上的 yolov8物体检测模型实现

Guru**** 1821780 points
Other Parts Discussed in Thread: AM68A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1369519/am68a-yolov8-object-detection-model-implementation-on-am68a

器件型号:AM68A

工具与软件:

我使用的是 TI AM68A 板。 我有一个 yolov8定制训练模型、需要将该模型移植到 TI 板以进行物体检测。

首先我将模型导出为 onnx 类型、并尝试使用 EdgeAI tidl 工具将其转换为便携类型。 但是要转换的示例 Python 代码在我的模型案例中无法正常工作、因此显示了错误。 如何将模型转换为便携式类型?

此外,我需要使用自定义 gstreamer 插件和 gstreamer 内置插件,我的流媒体解决方案. 例如:onnxruntime 插件、rtmpsink. 并显示未找到元素错误。 如何解决该问题。 我担心、如果我重新安装 gstreamer、在 ti 板上完成的所有配置都将丢失、因此我没有尝试它? 我需要使用 Apt 来安装软件包、是否也可以集成它?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    谢谢提出问题、请期待我们的分析专家提供回复。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    能否在尝试在  DEBUG_LEVEL 设置为2的情况下编译模型时提供完整的错误日志? 这将使我们能够调试您遇到的问题。 如果还可以分享你正在尝试在 edgeai-tidl-tools 中运行的 ONNX 模型,这也将是有益的。

    关于 gstreamer 的问题、您可以发布一个单独的 E2E 文章来描述该错误吗? 这样就可以将问题转给相应的专家。  

    此致!

    阿莎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的,肯定的,

    *****  帧索引1:运行浮点推理*****
    2024年06月04日06:19:01.381133288 [E:onnxruntime:、sequant_executor.cc:494 ExecuteKernel]运行 RetorInput 节点时返回非零状态代码。 名称:'Reordining'状态消息:/onnxruntime/onnxruntime/contrib_ops/cpu/nchwc_ops.cc:17 virtual onnxruntime:common:Status onnxruntime::contrib:ReorderInput::Compute (onnxruntime::OpKernelContext*) const X_RANK == 4为 false。

     

    流程1:
    回溯(最近的调用最后):
     在_bootstrap 配置中、文件"/usr/lib/python3.10/multiprocessing/process.py "、第314行
       self.run()
     文件"/usr/lib/python3.10/multiprocessing/process.py "、第108行、正在运行
       self._target (* self._args、** self._kwargs)
     文件/home/root/examples/osrt_python/ort/onnxrt_ep.py、第239行、位于 run_model 中
       imgs、output、proc_time、sub_graph_time、height、 宽度 = INFER_IMAGE (Sess、INPUT_IMAGES、CONFIG)
     文件/home/root/examples/osrt_python/ort/onnxrt_ep.py、第129行、位于 refer_image 中
       输出= list (sess.run(None、{input_name:input_data})
     文件"/usr/local/lib/python3.10/dist-packages/onnxruntime/capi/onnxruntime_inference_collection.py "、第200行、正在运行
       返回 self._sess.run(output_names、input_feed、run_options)
    onnxruntime.capi.onnxruntime_pybind11_state.RuntimeException:[ONNXRuntimeError]: 6 : RUNTIME_EXCEL:运行"重新订购输入"节点时返回非零状态代码。 名称:'Reordining'状态消息:/onnxruntime/onnxruntime/contrib_ops/cpu/nchwc_ops.cc:17 virtual onnxruntime:common:Status onnxruntime::contrib:ReorderInput::Compute (onnxruntime::OpKernelContext*) const X_RANK == 4为 false。


    我遵循的步骤:

    1.install edgeai_tidl 工具

    更新包含了我的自定义模型的 model_configs.py 文件
    models_configs ={
       'custom-yolov8':{
           'model_path':'/home/root/examples/osrt_python/ort/Ros/best.onnx、
           'imples_dir':'/home/root/examples/osrt_python/ort/Ros/artifacts、
           'MODEL_TYPE':'OD'、   
           'MEAN':[0.485、0.456、0.406]、  
           "分频":[0.229、0.224、0.225]、   
           'num_images ':10、

       }、

    3.run python3 onnxrt_ep.py 文件与模型我的自定义模型  
    root@6e569d2946f0:/home/root/examples/osrt_python/ort # python3 onnxrt_ep.py -c -m custom-yolov8

    完整输出:

    root@6e569d2946f0:/home/root/examples/osrt_python/ort # python3 onnxrt_ep.py -c -m custom-yolov8
    可用的执行提供程序: ['TIDLExecutionProvider '、'TIDLCompilationProvider '、'CPUExecutionProvider ']

     

    运行1个模型-['custom-yolov8']

     

     

    Running_Model: custom-yolov8   

     

     

    在模型/home/root/examples/osrt_python/ort/Ros/best.onnx 上运行形状推理

     

     

    已创建初步子图= 3  
    最终创建的子图数为:3、-卸载节点- 229、总节点- 233  
    图形域到版本: 17
    ***** 帧索引1:正在运行浮点导入*****  

    **               所有型号检查均已通过         **

     

    软限制为2048
    硬限制为2048
    内存:初始化...!!!
    内存:初始化...完成!!
    0.0s: vx_zone_init:已启用
    0.16s: vx_zone_error:已启用
    0.21s: vx_zone_warning:已启用
    0.6233s: vx_zone_init:[tivxInit:190]初始化已完成!!

     

    *****  帧索引1:运行浮点推理*****
    2024年06月04日06:19:01.381133288 [E:onnxruntime:、sequant_executor.cc:494 ExecuteKernel]运行 RetorInput 节点时返回非零状态代码。 名称:'Reordining'状态消息:/onnxruntime/onnxruntime/contrib_ops/cpu/nchwc_ops.cc:17 virtual onnxruntime:common:Status onnxruntime::contrib:ReorderInput::Compute (onnxruntime::OpKernelContext*) const X_RANK == 4为 false。

     

    流程1:
    回溯(最近的调用最后):
     在_bootstrap 配置中、文件"/usr/lib/python3.10/multiprocessing/process.py "、第314行
       self.run()
     文件"/usr/lib/python3.10/multiprocessing/process.py "、第108行、正在运行
       self._target (* self._args、** self._kwargs)
     文件/home/root/examples/osrt_python/ort/onnxrt_ep.py、第239行、位于 run_model 中
       imgs、output、proc_time、sub_graph_time、height、 宽度 = INFER_IMAGE (Sess、INPUT_IMAGES、CONFIG)
     文件/home/root/examples/osrt_python/ort/onnxrt_ep.py、第129行、位于 refer_image 中
       输出= list (sess.run(None、{input_name:input_data})
     文件"/usr/local/lib/python3.10/dist-packages/onnxruntime/capi/onnxruntime_inference_collection.py "、第200行、正在运行
       返回 self._sess.run(output_names、input_feed、run_options)
    onnxruntime.capi.onnxruntime_pybind11_state.RuntimeException:[ONNXRuntimeError]: 6 : RUNTIME_EXCEL:运行"重新订购输入"节点时返回非零状态代码。 名称:'Reordining'状态消息:/onnxruntime/onnxruntime/contrib_ops/cpu/nchwc_ops.cc:17 virtual onnxruntime:common:Status onnxruntime::contrib:ReorderInput::Compute (onnxruntime::OpKernelContext*) const X_RANK == 4为 false。

     

    内存:Deinit…!!!
    内存:alloc:27个分配、共138980105字节  
    内存:free's:27个免费的 ,138980105字节  
    内存:open's:0个分配的0 字节  
    Mem: Deinit...完成!!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否可以确保已设置 DEBUG_LEVEL=2 (请参阅 common_utils.py) 并附加日志? 这将提供层级别信息-根据您看到的 onnx 运行时问题,这可能是由模型中的某个层引起的。  

    此致!

    阿莎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当然可以! 以下是修订版本:

    ——

    但我认为这不是问题。 该工具已成功转换所有给定模型。 该问题可能与我的自定义模型的配置有关。 我怀疑我的模型配置结构中可能有一些不正确的值。 我使用超透镜库创建一个 YOLOv8模型、然后使用超透镜导出函数对其进行转换、从而开发了 ONNX 模型。 您可以参阅此处的流程:

    https://docs.ultralytics.com/modes/export/#key-features-of-export-mode

    我将模型包含在工具的配置文件中、然后运行 Python 脚本、并将模型设置为自定义模型。 该工具的文档没有提供有关如何配置该工具的完整指导。 如果可能、您能否尝试此过程并验证我的做法是否一切正常? 如果您得到没有任何错误的结果、它将指示我漏掉了一些东西、您可以提供有关如何修复的指导。

    这是我使用的模型配置:
       'custom-yolov8':{
           'model_path':'/home/root/examples/osrt_python/ort/Ros/best.onnx、
           'imples_dir':'/home/root/examples/osrt_python/ort/Ros/artifacts、
           'MODEL_TYPE':'OD'、   
           'MEAN':[0.485、0.456、0.406]、  
           "分频":[0.229、0.224、0.225]、   
           'num_images ':10、

       }、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果你尝试附加一个文件(例如调试日志或你的模型)、文件似乎没有包含在 e2e 中。  

    此问题可能与我的自定义模型的配置有关。 我怀疑我的模型配置结构中可能有一些不正确的值。 [/报价]

    在本例中、在您尝试针对 C7x 进行编译之前、您是否验证过您的模型可以使用"仅 ARM 模式"进行编译? 有关该过程的说明、 请访问 https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/docs/tidl_osr_debug.md#model-compilation-issues

    但基本上你会运行  python3 onnxrt_ep.py -d -m custom-yolov8

    此致!

    阿莎

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    仍然有一些问题.像,即使我运行它与-d 启用它期望更多的细节,如会话类型,od_type etc.我 不知道如何找到所有这些. 如果你尝试这样做会很有帮助。并引导我与你的经验。iam 使用一个 yolov8模型,你可以简单地从下载一个,甚至从超透镜生成一个,并尝试转换它。它将给你理解问题。
    此外,我发现一个参考 yolov8步骤的文档. 但提供的内容显示 Not Found。
    https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/docs/tidl_fsg_od_meta_arch.md