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.

[参考译文] J721EXCPXEVM:无法使用 edgeai-tidl-tools 将 onnx (edgeai-yolov5)转换为 bin

Guru**** 2487425 points
Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1393845/j721excpxevm-using-edgeai-tidl-tools-to-convert-onnx-edgeai-yolov5-into-bin-does-not-work

器件型号:J721EXCPXEVM
主题中讨论的其他器件:TDA4VM

工具与软件:

尊敬的 TI 专家:
公司想利用 TDA4VM 平台的物体检测功能实现停车电网检测功能
我们公司根据 github.com/.../edgeai-yolov5制作了 yolov5-ti-pld-20240521.onnx 和 yolov5-ti-pld-20240521.prototxt。
然后使用 github.com/.../09_02_07_00 将 yolov5-ti-pld-20240521.onnx 转换为 subgraph_0_tidl_io_1.bin 和 subgraph_0_tidl_net.bin。
并确认 edgeai-tidl-tools/output_images/py_out_yolov5-ti-pld-20240521_ADE_val_00000000.jpg、以确认已获得所需停车位角。

因此、我想使用 vision_apps app_tidl_od (vision_apps/apps/dl_demos/app_tidl_od)来测试 tidl bin 和视觉应用是否可以相互结合。
我的测试步骤如下:
1.首先将 subgraph_0_tidl_net.bin 和 subgraph_0_tidl_io_1.bin 复制到 SD 卡的/media/georgelin/rootfs/opt/model_zoo/yolov5-ti-pld-20240521/artifacts 目录中。
2.将要用于测试的 YUV 文件复制到/rootfs/opt/vision_apps/test_data/psdkra/tidl_demo_images 目录、即0000002307.YUV ~ 0000002706.YUV。
0000002307.YUV ~ 0000002706.YUV 全部是512x512 YUV 图像文件。
3.然后修改 SD 卡的/rootfs/opt/vision_apps/app_od.cfg 以匹配我的测试
-tidl_config  /opt/vision_apps/test_data/psdkra/tidl_models/tidl_io_peele_300_1.bin
+tidl_config  /opt/model_zoo/yolov5-ti-pld-20240521/artifacts/subgraph_0_tidl_io_1.bin
-tidl_network /opt/vision_apps/test_data/psdkra/tidl_models/tidl_net_peele_300.bin
+tidl_network /opt/model_zoo/yolov5-ti-pld-20240521/artifacts/subgraph_0_tidl_net.bin

开始帧500
+START_FRAME 2307

  第1024节
  512

-dl_size  1024 512
+dl_size  512 512

 第1024节
 512

第90章我是谁
第20节

4.最后、将 SD 卡插入 TDA4VM EVB。 引导并以 root 身份登录后、执行以下命令:
CD /opt/vision_apps
资料来源:vision_apps_init.sh
CD /opt/vision_apps
./vx_app_tidl_od.out --cfg app_od.cfg

结果:
此时、您会发现屏幕为黑色、EVB 似乎已崩溃、无法看到图像、也没有 UART 输出。
如何解决此问题?

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

    您好!

    感谢您问这个问题。

    由于带宽有限、我无法查看、我将在下周尝试回拨。

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

    Pratik Kedar、

    我将 edgeai_tidl_tools 复制到 SD 卡后、在 TDA4VM EVB 板上成功运行了"/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools/scripts/run_python_examples.sh"。

    root@j721e-evm:~# cd /edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools
    root@j721e-evm:/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools# export SOC=am68pa
    root@j721e-evm:/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools# export LD_LIBRARY_PATH=:/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools/tidgeai-tidgeai-tiddl_tools/tidgeai-tidgeai-tidgeai-t02_tools/工具
    root@j721e-evm:/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools# export ARM64_GCC_PATH=/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools/gcc-arm-x86-2019.12-none-linux-arch64-none.
    root@j721e-evm:/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools# export CGT7X_root=/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools/ti-cgt-c7000_3.1.0.LTS
    root@j721e-evm:/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools# export tidl_tools_path=/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools/tidl_tools
    root@j721e-evm:/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools# source ./scripts/run_python_examples.sh
    ARM 架构
    运行 python3 onnxrt_ep.py
    可用的执行提供程序: ['TIDLExecutionProvider ','TIDLComplationProvider ','CPUExecutionProvider ']

    运行1个模型-['yolov5-ti-pld-20240521']


    Running_Model : yolov5-ti-pld-20240521.  

    libtidl_onnxrt_EP 已加载0xaf2cc70
    最终创建的子图数为:1、-卸载节点- 293、总节点- 293
    应用程序:初始化...!!!
    内存:初始化...!!!
    MEM:已初始化的 DMA 堆(FD=5)!!!
    内存:初始化...完成!!!
    IPC:初始化...!!!
    IPC:初始化...完成!!!
    remote_servic: init…!!
    Remote_servic:初始化...完成!!!
     1081.603541s:GTC 频率= 200 MHz
    应用程序:初始化...完成!!!
     1081.606716 s: vx_zone_init:Enabled
     1081.606725 s: vx_zone_error:Enabled
     1081.606731 s: vx_zone_warning:Enabled
     1081.610638 s: vx_zone_init:[tivxPlatformCreateTargetId:116]添加了目标 MPU-0
     1081.611043 s: vx_zone_init:[tivxPlatformCreateTargetId:116]添加了目标 MPU-1
     1081.611142 s: vx_zone_init:[tivxPlatformCreateTargetId:116]添加了目标 MPU-2
     1081.611214 s: vx_zone_init:[tivxPlatformCreateTargetId:116]添加了目标 MPU-3
     1081.611223 s: vx_zone_init:[tivxInitLocal:136]初始化已完成!!
     1081.615559 s: vx_zone_init:[tivxHostInitLocal:101]主机初始化已完成!!!

    正在将映像保存到 ../../../output_images

     
    Completed_Model :    1,名称: yolov5-ti-pld-20240521,                           总时间:      7.78,卸载时间:      7.55, DDR RW MBs : 0,输出文件: py_out_yolov5-ti-pld-20240521_ADE_val_00000000.jpg
     
     
     1085.545489 s: vx_zone_init:[tivxHostDeInitLocal:115]取消初始化已完成主机!!
     1085.549895 s: vx_zone_init:[tivxDeInitLocal:204]取消初始化已完成!!!
    应用程序:Deinit ...!!!
    Remote_service:Deinit ...!!!
    Remote_servic: Deinit...完成了!!!
    IPC:Deinit ...!!!
    IPC: DeInit ...完成!!
    内存:Deinit ...!!!
    DDR_SHARED_MEM:分配:7个、共17622080个字节
    DDR_SHARED_MEM:free's:7 free's of 17622080 bytes.
    DDR_SHARED_MEM:open's:0个分配 字节
    MEM: Deinit ...完成!!
    应用程序: Deinit ...完成!!
    root@j721e-evm:/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools#

    检查"/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools/output_images/py_out_yolov5-ti-pld-20240521_ADE_val_00000000.jpg"、我可以找到我的预期结果。
    因此、我假设"/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools/model-artifacts/yolov5-ti-pld-20240521/subgraph_0_tidl_net.bin"和"/edgeai-tidl-tools-09_02_07_00/edgoli-tidl-tid-tools/tidl-tiv-tools/tion_20240521是正常工作的工具。
    然后、我将"/edgeai-tidl-tools-09_02_07_00/edgeai-tidl-tools/model-artifacts/yolov5-ti-pld-20240521/subgraph_0_tidl_net.bin"和"/edgeai-tidl-tools-09_02_07_00/edgoli-tid-tools/tid-bin-tid-b"复制到/opt/model_zoo/yolov5-ti-pld-20240521/artifacts/subgraph_0_tidl_net.bin /opt/model_zoo/yolov5-ti-pld-20240521/artifacts/subgraph_0_tidl_io_1.bin 和"tid-b_tid-b_tid-bin-tid-tid-b"。
    修改"vx_app_tidl_od.out /opt/vision_apps/app_od.cfg 可以加载 net 和 io bin。
    执行 vx_app_tidl_od.out 后、EVB 将无法正常显示屏幕。

    root@j721e-EVM:~# cd /opt/vision_apps
    root@j721e-evm:/opt/vision_apps source ./vision_apps_init.sh
    root@j721e-evm:/opt/vision_apps cd /opt/vision_apps
    root@j721e-evm:/opt/vision_apps #./vx_app_tidl_od.out --cfg app_od.cfg

    恢复 tidl_config 和 tidl_network 的设置。 也就是说、设置为 tidl_io_peele_300_1.bin 和 tidl_net_peel_300.bin 时、屏幕将正常显示。

    我猜 subgraph_0_tidl_io_1.bin 和 subgraph_0_tidl_net.bin 应该会有一些问题、但我不知道如何排除。

    请帮帮我。

    Besr Consent、
    George Lin

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

    Pratik Kedar、

    我可以给您我的 onnx、然后您可以帮助我尝试使用您的工具将 onnx 传输到 bin 吗?
    我想检查我的 edgeai-tidl-tools 是否工作正常。

    此致、
    George Lin

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

    您好!

    感谢您继续对此感兴趣、由于我的带宽有限、我将在下周回圈更新该主题。

    谢谢  

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

    Pratik Kedar、

    我一直在等待您的帮助回复超过11天。
    如果您此时仍无法返回办公室、请将此问题转发给您的另一位同事、他们可以对此问题负责。


    因为我的部门经理已经开始关注这一进展、所以我不能仅仅依靠自己的分析来解决这个问题。 需要 TI 的专家来帮助我解决这个问题。
    我们公司目前已完成的调试工作如下:

    1、澄清 Onnx 是否由我们公司自行制作。
    测试方法:使用 GitHub 中 edgeai-yolov5的 yolov5s6_640_ti_lite_37p4_56p0.onnx 和 yolov5s6_640_ti_lite_metaarch.prototxt 创建 detections_tidl_io_1.bin 和 detections_tidl_net.bin、并将其放入 EVB 板进行测试。
    结果:问题仍然存在。

    2.澄清这是否是 edgeai-tidl-tools 执行环境的问题。
    测试方法:找到两台计算机、两个人执行 edgeai-tidl-tools 来制作 bin 文件、并将其放入 EVB 板进行测试。
    结果:问题仍然存在。

    注:在两台计算机上执行 edgeai-tidl-tools 也可能存在问题、因此尚不清楚这是否是 edgeai-tidl-tools 环境和执行方法的问题!
    我需要 TI 帮助将我公司提供的 ONNX 转换为 BIN、然后向我的公司提供 BIN 以进行测试、以澄清问题。
    PLC ONNX:yolov5-ti-pld-20240521.onnx

    PLC PROTOTXT:yolov5-ti-pld-20240521.prototxt

    output_images:py_out_yolov5-ti-pld-20240521_ADE_val_00000000.jpg

    3.调试代码以查找问题点。

    结果发现、/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/vision_apps/kernels/img_proC/C66/vx_draw_box_detections_target.c 中 drawBox ()中的代码被注释掉。
    不让它执行它原来的工作不存在这个问题。
    所以这个问题是由绘制框引起的。
    但是,由 drawBox()替代的参数都是 AI 识别的结果。
    但是、在何处以及如何解决这些问题都需要 TI 专家的帮助。 非常感谢!

    此致、
    George Lin

    Pratik Kedar、
    我如何将 yolov5-ti-pld-20240521.onnx 和 yolov5-ti-pld-20240521.prototxt 传递给您?
    此致、
    George Lin

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

    您好、George:

    由于带宽有限、AM 目前无法评估此问题、所以我会尽力再回来解决此问题。

    请联系当地 FAE 以了解此问题的优先级。

    谢谢  

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

    您好、George:

    我想总结一下您目前遇到的问题以及您到目前为止已采取的步骤-如果以下任何内容不正确、请更正我。  

    1. 您有一个基于 edgeai-yolov5示例的 YOLOV5模型、并且您已确认 edgeai-tidl-tools
      Unknown 说:
      正确推理 py_out_yolov5-ti-pld-20240521_ADE_val_00000000.jpg、以确认获得了所需停车位角。[/dl]
    2. 更改深度学习物体检测演示应用(此处链接)的默认配置后、要指向您的模型、您将看不到屏幕上的任何结果
      、此时、您将发现屏幕为黑色、EVB 似乎已崩溃、无法看到任何图像、并且没有 UART 输出。
      如何解决此问题?[/QUOT]
    3. 您已尝试运行此演示应用支持的默认型号、并看到预期的行为。
      如果您恢复 tidl_config 和 tidl_network 的设置。 也就是说、当设置为 tidl_io_peele_300_1.bin 和 tidl_net_peele_300.bin 时、屏幕将正常显示。[/QUOT]

      发现/ti-processor-sdk-rtos-j721e-evm-09_02_00_05/vision_apps/kernels/img_proc/C66/vx_draw_box_detections_target.c 中 drawBox ()中的代码被注释掉。
      不让它执行它原来的工作不存在这个问题。
      所以这个问题是由绘制框引起的。
      但是,由 drawBox()替代的参数都是 AI 识别的结果。
      但是、在何处以及如何解决这些问题都需要 TI 专家的帮助。 感谢!

      此时、您能否进一步说明您的调试步骤?

      我发现问题出在 C7x_1。
      [C7x_1    ] 412.419688 s:vx_zone_info:[ownetNodeDescNode=7268][pipe=361146]3[crowd:pipe=完整 的节点!

      您能否说明一下这是否是使用模型运行演示应用程序时的远程内核日志? 在这一点之后日志是否以不可恢复的方式挂起?  

      另请注意、Vision Apps 中的演示应用具有预先和后处理 OpenVX 代码、这与在 edgeai-tidl-tools 上运行推理不同、您的模型需要与为该应用显示的数据流图兼容。 您是否修改过该代码?  

      此致!

      Asha

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

    尊敬的 TI 专家:


    是否有任何有关此问题的更新?
    此致、


    George Lin

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

    尊敬的 TI 专家:


    我正在寻找一个可以定制的 yolov5模型。
    但我找不到任何可以使用 app_tidl_od 运行的现有 yolov5模型。
    您能告诉我哪些现有的 yolov5模型可用于 app_tidl_od 吗?


    此致、
    George Lin

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

    尊敬的 TI 专家:
    我有一个关于"numDetObjects"的问题。
    我可以在"/vision_apps/kernels/img_proc/c66/vx_draw_box_detections_target.c"和"/c7x-mma-tidl/ti_dl/algo/tidl_detectionOutput.c"中找到"numDetObjects" src。
    我打印它的值。
    我发现在正式版本中运行时、该值始终相同。
    [C6x_2 ]    39.689065 s : AAaa /home/georgelin/ti-processor-sdk-rtos-j721e-evm-09_02_00_05_work/vision_apps/kernels/img_proc/c66/vx_draw_box_detections_target.c : 276 tivxKernelDrawBoxDetectionsProcess ()
    [C6x_2 ]    39.689122 s:aaaa (Det 数) pHeader->numDetObjects:14.000000
    [C7x_1 ]    39.686665 s:aaa ada/tidl_detectionOutput.c:394 src tidl_detectionOutputProce()
    [C7x_1 ]    39.686690 s:AAAA keepKCnt:14.
    [C7x_1 ]    39.686705 s:aaaa params->keepTopK:200
    [C7x_1 ]    39.686727 s:aaaa outputData->numDetObjects:14.000000
    "/vision_apps/kernels/img_proc/C66/vx_draw_box_detections_target.c"和"vid/tidl_detectionOutput.c"中的 numDetObjects 值 src 为14.000000。

    但是、当我在/rootfs/opt/vision_apps/app_od.cfg 中修改 tidl_config 和 tidl_network 进行自定义后、numDetObjects 将不再同步。
    [C6x_2 ]   236.878782 s : AAAA /home/georgelin/ti-processor-sdk-rtos-j721e-evm-09_02_00_05_work/vision_apps/kernels/img_proc/c66/vx_draw_box_detections_target.c : 276 tivxKernelDrawBoxDetectionsProcess ()
    [C6x_2 ]   236.878830 s:aaaa (Det 数) pHeader->numDetObjects:-1.000000
    [C7x_1 ]   236.876966 s:AAaa src / tidl_detectionOutput.c:394 TIDL_detectionOutputProcess ()
    [C7x_1 ]   236.876992 s:AAAA keepKCnt:0
    [C7x_1 ]   236.877008 s:aaaa params->keepTopK:200
    [C7x_1 ]   236.877029 s:aaaa outputData->numDetObjects:0.000000
    您可以在"/vision_apps/kernels/img_proc/C66/vx_draw_box_detections_target.c"中找到 numDetObjects 为-1.000000。
    但在"numDetObjects/tidl_detectionOutput.c"中、src 为0.000000。
    为什么? 这是一个奇怪的问题!
    如果我要更改 AI​​模型、除了修改 app_od.cfg 外、还应该修改什么?
    此致、
    George Lin

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

    您好、George:

    我对因出差而延迟回复深表歉意。  

    感谢您确认、当您在目标设备上运行时、该模型本身可与 edgeai-tidl-tools 配合使用。  

    我重新分配给我们的视觉应用/视象专家、让您更清楚地了解如何将其集成到演示中并调试您看到的错误。 请期待他们的回复。

    此致!

    Asha

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

    尊敬的 Asha:
    很长时间以来一直没有关于这个问题的反馈。
    您能否在星期五之前指派某人处理此问题?
    此致、
    George Lin

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

    您好、George:

    很抱歉这里的响应延迟。

    您能否将日志与  tidlLogLevel = 2和 tidWriteLevel = 0共享?

    我想检查是否在层执行中看到挂起?

    此外、我看到你们已经将课程数量从90个减少到20个。 我相信这是根据您的模型对齐的吗?

    此致、
    Nikhil

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

    Nikhil

    很抱歉这么晚才收到反馈。 我将新日志上传到以下 URL:
    https://drive.google.com/drive/folders/14_8rOc6Q_e9T21_XKyj6K1yCOze-5wzE?usp=sharing

    请看一下。
    或有任何故障时对其进行重新编程。 或者、如果您有任何其他要求、请随时告诉我。 谢谢。

    此致、
    George Lin

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

    您好、George:

    感谢您分享日志。

    我期待您共享的日志中出现以下错误、但似乎模型(即 tidl 节点)已成功执行。

    请问您当前的问题是什么?

    它是否在后处理节点中?

                       [C7x_1 ]    82.061042 s: vx_zone_info:[ownTargetNodeDescReleaseParameter:515] Re 触发(node=59)
                       [C7x_1 ]    82.061083 s: vx_zone_info:[ownTargetNodeDescReleaseParameter:496]参数未发布(node=62、pipe=1、data_ref_q=175、ref=97、users=1)
                       [C7x_1 ]    82.061128 s: vx_zone_info:[ownTargetNodeDescNodeExecute:616] Node (node=63、pipe=2)正在获取目标00000200上的参数
                       [C7x_1 ]    82.061164 s: vx_zone_info:[ownTargetNodeDescAcquireParameter:211]已获取参数(node=63、pipe=2、data_ref_q=169、ref=30)
                       [C7x_1 ]    82.061201 s: vx_zone_info:[ownTargetNodeDescAcquireParameter:174]参数获取失败...阻塞(node=63、pipe=2、data_ref_q=176、queue=180)
                       [C7x_1 ]    82.061232 s: vx_zone_info:[ownTargetNodeDescAcquireAllParameters:564]参数获取...正在中止(node=63, pipe=2)
                       [C7x_1 ]    82.061259 s: vx_zone_info:[ownTargetNodeDescNodeExecute:717]节点(node=63、pipe=2)...已阻止目标00000200上的资源
                       [C7x_1 ]    82.070026 s: vx_zone_info:[ownTargetNodeDescNodeExecute:726]节点(node=64、pipe=3)...已阻止上一个管道实例节点(node=63)以完成!!

    此致、

    Nikhil

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

    您好、Nikhil:

    我认为 TIDL 节点可能会成功运行。 但输出应该是错误的。
    因为我将 tivxKernelDrawBoxDetectionsProcesses()中 numDetObjects 的值打印为<0。
    "[C6x_2 ]   236.878830 s:aaaa (Det 数) pHeader->numDetObjects:-1.000000"
    numDetObjects 的值应>= 0。

    请查看第261行。

    当 pHeader->numDetObjects 为-1.000000时、numObjs 将被分配4,294,967,295。
    因此、第269行上的 for 循环将运行4,294,967,295次。
    C6x_2需要太多的时间来运行。
    然后阻止 C7x。
                       [C7x_1 ]    82.060935 s: vx_zone_info:[ownTargetKernelExecute:398]已完成内核[com.ti.tidl]的执行过程回调
                       [C7x_1 ]    82.060969 s: vx_zone_info:[ownTargetNodeDescNodeExecute:683] Node (node=62、pipe=1) executing on target 00000200…done!!!
                       [C7x_1 ]    82.061009 s: vx_zone_info:[ownTargetNodeDescReleaseParameter:478]已发布参数(node=62、pipe=1、data_ref_q=168、queue=173、ref=95)
                       [C7x_1 ]    82.061042 s: vx_zone_info:[ownTargetNodeDescReleaseParameter:515] Re 触发(节点=59)
                       [C7x_1 ]    82.061083 s: vx_zone_info:[ownTargetNodeDescReleaseParameter:496]参数未发布(node=62、pipe=1、data_ref_q=175、ref=97、users=1)
                       [C7x_1 ]    82.061128 s: vx_zone_info:[ownTargetNodeDescNodeExecute:616] Node (node=63、pipe=2)正在获取目标00000200上的参数
                       [C7x_1 ]    82.061164 s: vx_zone_info:[ownTargetNodeDescAcquireParameter:211]已获取参数(node=63、pipe=2、data_ref_q=169、ref=30)
                       [C7x_1 ]    82.061201 s: vx_zone_info:[ownTargetNodeDescAcquireParameter:174]参数获取失败...阻塞(node=63、pipe=2、data_ref_q=176、queue=180)
                       [C7x_1 ]    82.061232 s: vx_zone_info:[ownTargetNodeDescAcquireAllParameters:564]参数获取...正在中止(node=63, pipe=2)
                       [C7x_1 ]    82.061259 s: vx_zone_info:[ownTargetNodeDescNodeExecute:717]节点(node=63、pipe=2)...已阻止目标00000200上的资源
                       [C7x_1 ]    82.070026 s: vx_zone_info:[ownTargetNodeDescNodeExecute:726]节点(node=64、pipe=3)...已阻止上一个管道实例节点(node=63)以完成!!!

    我更改了 vision_apps/kernels/img_proC/C66/vx_draw_box_detections_target.c 中的一些代码来避免该错误。
    我更改后的代码如下:
    @@-239、7 @@ 242、11 μ A
            TIDL_O双层 HeaderInfo * pHeader;
            TIDL_O双层 ObjInfo * pObjInfo;
            vx_float32 *输出;
    +#if 1.
    +       vx_int32 numObjs;
    +#else
            vx_uint32 numObjs;
    +#endif
            vx_float32 * output_buffer;
            vx_size output_sizes[4];


    我需要您帮助我分析为什么 pHeader->numDetObjects < 0?

    此致、

    George Lin

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

    您好、George:

    您的模型是否需要浮点数据类型的张量、或者它是8位/16位整数器数据类型?

    这个问题的原因是, 在这个应用程序中的预处理中使用的 tivxImgPreProcNode ()仅支持 8位/16位 interger 数据类型张量输出。

    此致、

    Nikhil

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

    您好、Nikhil:

    您的模型是否需要浮点数据类型的张量、或者它是8位/16位整数器数据类型?
       <--我们的模型是浮点数据类型的张量。
    我有三个问题要问你们。
    1.所有 TI 视觉应用都不支持浮点数据类型?
    2.如何将张量更改为8位/16位整数数据类型?
    3.如果 edgeai-tidl-tools 中的"python3 onnxrt_ep.py"可以正确解析 AI 模型。 我认为"视觉应用"应该在 EVB 板上正确执行 AI 模型。 但为什么不呢?

    此致、
    George Lin

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

    您好、George:

    在 vision_apps 框架中、pre-proc 和 post-proc 节点是特定于模型的定制节点。  

    在您的情况下,您不能使用 tivxImgPreProcNode (),因为它不支持浮点数据类型。

    张量的数据类型从 subgraph 0_tidl_io_1.bin 中的配置(iobufdesc)中提取。

    您可以改用 TIVxDLPreProc 节点来支持对浮点数据类型传感器进行预处理。

    此致、

    Nikhil

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

    您好、Nikhil:

    我使用了 tivxDLPreProcNode ()来替换 app_create_graph_pre_proc ()中的 tivxImgPreProcNode ()。
    您可以看到我的更改文件-"diff_change.txt"。
    但我仍然无法在 tivxKernelDrawBoxDetectionsProcesses()中获得正确的 pHeader->numDetObjects。
    pHeader->numDetObjects 不大于0。
    可以帮帮我吗?
    我更新了新的日志文件—"TeraTerm_vx_app_tidl_od_20240913-1826.log"。
    您可以访问 drive.google.com/.../1dvOD8OoTIMOVx9qjP33Yjkmo830PlK3e 获取它们

    此致、
    George Lin

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

    您好、Nikhil:

    我是否应该使用 tivxDLDrawBoxNode ()而不是 tivxDrawBoxDetectionsNode ()?
    我将尝试一下、稍后报告结果。

    祝你一切顺利。
    George Lin

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

    您好、George:

    很抱歉响应延迟。 我上周在度假。

     tivxDLDrawBoxNode ()不是完整的实现。 我看到目标实现将由用户填写。

    pHeader->numDetObjects < 0

    该信息来自 TIDL 节点的输出张量、对吧?

    您是否可以将张量输出和张量输入转储到 TIDL 节点、并使用黄金基准进行检查(工作情况)?

    此致、

    Nikhil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否将张量输出和张量输入转储到 TIDL 节点并使用黄金基准检查这两项数据(工作案例)?

    尊敬的 Nikhil:

    您能教我如何转储张量输出和张量输入吗?

    此致、

    George Lin

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

    您好、George:

    添加了新的符号 vision_apps/modules/app/tidl_module.c src  您可以看到一个函数  writeTIDL 输出 ()。 这会将 TIDL 节点的输出张量转储到文件中。

    你也可以对输入传感器执行相同的操作。

    此致、

    Nikhil

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

    尊敬的 Nikhil:
    我已添加以下代码来转储日志。
    ----------------------------------------------------------------------------------------
    @@μ A -78、7 @@ 78、7 μ A
     #include "app_display_module.h"
     #include "app_test.h"
     
    -/*#define WRITE_INTERMETER_OUTPUTS */
    +#define WRITE_INTERMEDIATE_OUTPUTS     // AAAA
     
     #ifndef x86_64
     #define APP_ENABLE_PIPIENT_FLOW
    @@-1132/6 +1132/20 @@μ s
                if ((obj->en_out_img_write == 1)&&(status == vx_Success))
                {
                    APP_printf ("App Writing Outputs Start...\n");
    +
    +// AAAA
    +#ifdef write_intermediate_outputs
    +               snprintf (output_file_name、app_MAX_file_path、"%s"、"%s/%010d_scaler_%DX%d.YUV"、obj->output_file_path、frame_id、 obj->scalerObj.output[0].width、obj->scalerObj.output[0].height);
    +               writeScalerOutput (output_file_name、scalerObj->output[0].arr);
    +
    +               snprintf (output_file_name、app_MAX_file_path、"%s/pre_proc_output_%010d"、obj->output_file_path、frame_id);
    +               writePreProcOutput(output_file_name,&obj->preProcObj);
    +
    +               snprintf (output_file_name、app_MAX_file_path、"%s/tidl_output_%010d"、obj->output_file_path、frame_id);
    +               writeTIDLOutput (output_file_name ,&obj->tidlObj);
    +#endif
    +// AAAA
    +
                    snprintf (output_file_name、app_MAX_file_path、"%s/mosace_output_%010d_1920x100.00.yuV"、obj->output_file_path、(FRAME_id - app_buffer_Q_depth);
                    status = writeMosaicOutput (output_file_name、mosaca_output_image);
                    APP_printf ("应用程序写入输出已完成!\n");
    ----------------------------------------------------------------------------------------
    我已将转储日志上传至我的 google 驱动程序(drive.google.com/.../1octum1yy55R3hr6EJx-KdFRceK4A_wy2。 请帮助进行分析。 当然,我也会继续同时分析。
    解包"vision_app_dump.tar.gz"后、将出现一个 vision_app_dump 文件夹。 我将解释此文件夹中包含哪些信息。

    1."vision_app_dump"下有两个文件夹。 一个是"tidl_io_peele_300_1"。 另一个是"yolov5s6_640_ti_lite_37p4_56p0"。
    因为我想澄清一下这个问题、所以我使用​​TI 提供的 AI 模型进行测试。
       a."tidl_io_peele_300_1"是​​app_tidl_od 最初使用的 AI。
       我还将 SD 卡中的"tidl_io_peele_300_1"放入"vision_app_dump/tidl_io_peele_300_1/ONNX_bin"。
       vision_app_dump/tidl_io_peele_300_1/ONNX_bin/tidl_io_peele_300_1.bin
       vision_app_dump/tidl_io_peele_300_1/ONNX_bin/tidl_net_peele_300.bin
       "tidl_io_peele_300_1"目录下有"app_tidl_od_out_1024x512"和"app_tidl_od_out_1280x720"文件夹。
       它们都使用相同的 AI 模型(tidl_io_peele_300_1)进行测试、但输入图像尺寸不同。
       "app_tidl_od_out_1024x512"使用 TI 的原始1024x512图像文件测试。
       使用我添加的1280x720图像文件测试"app_tidl_od_out_1280x720"。
       尽管"app_tidl_od_out_1280x720"识别并不理想、但可以实现。
       
       b."yolov5s6_640_ti_lite_37p4_56p0"是使用 TI yolov5s6_640_ti_lite_37p4_56p0.onnx 进行测试后的转储。
       此测试的步骤如下:
           i. 下载"yolov5s6_640_ti_lite_37p4_56p0.onnx"、"yolov5s6_640_ti_lite_metaarch.prototxt" from"">github.com/.../edgeai-yolov5-gplv3"
           II.通过"edgeai-tidl-tools"(标签:08_06_00_05)转换为"detections_tidl_io_1.bin"和"detections_tidl_net.bin"。
           ps.i 无法使用 edgeai-tidl-tools (tag:09_02_09_00)转换为 bin。 将出现"Segmentation fault (core dumped)(分割故障(转储内核))"错误。 所有版本09都存在此问题。 我也无法使用版本10、因为我的测试版无法使用版本10 Vision 应用程序启动。 最后、我们必须返回08版进行测试。
           三、   将生成的"detections_tidl_net.bin"和"detections_tidl_io_1.bin"放置到 SD 卡中、并在 app_od.cfg 中修改 tidl_config 和 tidl_network。
           tidl_config /opt/model_zoo/yolov5s6_640_ti_lite_37p4_56p0/artifacts/detections_tidl_io_1.bin
           tidl_network /opt/model_zoo/yolov5s6_640_ti_lite_37p4_56p0/artifacts/detections_tidl_net.bin
           iv.调用"./vx_app_tidl_od.out -cfg app_od.cfg"进行测试。
           
           "detections_tidl_io_1.bin"、"detections_tidl_net.bin"、"yolov5s6_640_ti_lite_37p4_56p0.onnx"和"yolov5s6_640_ti_lite_metaarch.prototxt"上述内容都存储在"vision_app_dump/yolov5s6_640_ti_lite_37p4_56p0/ONNX_bin"中。

       D.但在执行方面仍然存在问题。 问题仍然是、"/vision_apps/kernels/img_proC/C66/vx_draw_box_detections_target.c"中的 pHeader->numDetObjects 将变为-1。
    2.由于这次我们使用"yolov5s6_640_ti_lite_37p4_56p0.onnx"进行测试、因此应该不需要使用"tivxDLPreProc ()"。
    3.我发现 yolov5s6_640_ti_lite_37p4_56p0下的 pre_proc_output...yuv 内容不正确。 但我不知道如何解决这个问题。 请再次提醒我。 感谢!!

    此致、
    George Lin

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

    您好、George:  

    感谢您共享文件。

    更加详细一点的说明

    由于这次我们使用的是"yolov5s6_640_ti_lite_37p4_56p0.onnx"进行测试、因此不需要使用"tivxDLPreProc ()"。

    我想知道为什么此处不需要 DLPreProc 吗? 是因为此模型要求的数据类型不是浮动的吗?

    我发现 yolov5s6_640_ti_lite_37p4_56p0下的 pre_proc_output...YUV 内容不正确。 但我不知道如何解决这个问题。 请再次提醒我。 感谢!

    如果模型需要浮点输入、则使用的 pre_proc 节点(即 ImgPreProc 节点)不支持相同的输入。 因此、建议使用支持浮点数据类型的 DLPreProc。

    此致、

    Nikhil

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

    尊敬的 Nikhil:

    您能用 tidlLogLevel  = 2和 tidWriteLevel =  0与我共享日志吗?

    在 vision_app (08_06_00_12)中、我找不到 tidlLogLevel 和 tidWriteLevel。

    如果我要与 VISION_App (09_02_00_05)中的日志相同、那么我应该修改 VISION_App (08_06_00_12)中的哪个文件? 如何修改?
    感谢!!

    此致、

    George Lin

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

    您好、George:  

    是否可以搜索 traceLogLevel 和 traceWriteLevel。 在 vision_apps/modules/app/tidl_module.c 中 src?

    此致、

    Nikhil

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

    尊敬的 Nikhil:


    我使用了 tivxDLPreProcNode ()来替换 tivxImgPreProcNode (),并将修改后的代码上传至 google 驱动程序。
    (drive.google.com/.../1eucmlK5DaBrdWdeigqjN30f7vdm2VGCQ
    路径:/sdr 2024年10月18日 consecure/vision_apps/apps/dl_demos/app_tidl_od/appe_pre_proc_module.c
    由于没有参考代码,我通过引用 tivxImgPreProcNode ()自行修改了它。
    与之相关的代码都在目录 sources/sdorcode/vision_apps/apps/dl_demos/app_tidl_od 下2024年10月18日
    但不幸的是、它仍然没有成功实现。
    我修改了2024年10月18日/source3/vision_apps/kernels/img_proc/c66/vx_draw_box_detions_target.c、使其打印 pHeader->numDetObjects 的值。
    另请附加 uart log --> 2024年10月18日/UART/teraterm_vx_app_tidl_od_20241018-1728.log
    在 TeraTerm_vx_app_tidl_od_20241018-1728.log 中、您可以看到、当 pHeader->numDetObjects:-1.000000时、应用程序不再​​打印日志!!
    因此、使用 tivxDLPreProcNode ()不足以使此程序正确执行。
    我发现/uV/yolov5s6_640_ti_lite_37p4_56p0/app_tidl_od_out/pre_proc_output_0000000501_640x640_ch0.yuv 的内容2024年10月18日 不正确。

    我使用"writePreProcOutput (output_file_name、&obj->preProcObj);"转储它。

    您是否有办法使 pre_proc_output_0000000501_640x640_ch0.yuv 的内容正确?

    此致、
    George Lin

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

    尊敬的 Nikhil:
    我使用了 vision_apps/modules/vision/tidl_module.c. src
    --------------------------------------------------------
    PRMS->isInfsPaded = 1;
    PRMS->quantRangeExpansionFactor = 1.0;
    PRMS->quantRangeUpdateFactor = 0.0;
    +#IF 1 // aaaa
    + PRM->traceLogLevel = 2;
    + PRM->traceWriteLevel = 0;
    +#else // aaa
    PRMS->traceLogLevel = 0;
    PRMS->traceWriteLevel = 0;
    +#endif // aaaa
    + printf ("AAAA %s:%d %s () PRMs->traceLogLevel:%d\n"、__file__、__line__、__function__、PRMs->traceLogLevel);
    + printf ("AAAA %s:%d %s () PRMs->traceWriteLevel:%d\n"、__file__、__line__、__function__、PRMs->traceWriteLevel);
    }
    设计

    --------------------------------------------------------
    并获取失败的运行日志并传递运行日志。
    我已将两个新的 UART 日志上传到 Google Drive。
    您可以从""> drive.google.com/.../1NMQgVoQ6SjnXsw_Ng 1qScad28S7S07mT 获取它们
    在此文件夹中有两个 UART 日志。
    一个是"TeraTerm_vx_app_tidl_od_20241021-1429_yolov5s6_640_ti_lite_37p4_56p0.log"、另一个是"TeraTerm_vx_app_tidl_od_20241021-1433_tidl_io_peele_300_1.log"。

    "TeraTerm_vx_app_tidl_od_20241021-1429_yolov5s6_640_ti_lite_37p4_56p0.log"是失败的运行日志。
    运行失败的是使用"/opt/model_zoo/yolov5s6_640_ti_lite_37p4_56p0/artifacts/detections_tidl_io_1.bin "和"/opt/model_zoo/yolov5s6_640_ti_lite_37p4_56p0/artifacts/detections_tidl_net.bin "。
    "detections_tidl_net.bin"和"detections_tidl_net.bin"从"yolov5s6_640_ti_lite_37p4_56p0.onnx"转换为"edgeai-tidl-tools"(08_06_00_05)。
    --------------------------------------------------------
    #位置
    -tidl_config /opt/vision_apps/test_data/psdkra/tidl_models/tidl_io_peele_300_1.bin
    +tidl_config /opt/model_zoo/yolov5s6_640_ti_lite_37p4_56p0/artifacts/detections_tidl_io_1.bin

    #网络的位置
    -tidl_network /opt/vision_apps/test_data/psdkra/tidl_models/tidl_net_peele_300.bin
    +tidl_network /opt/model_zoo/yolov5s6_640_ti_lite_37p4_56p0/artifacts/detections_tidl_net.bin
    --------------------------------------------------------

    "TeraTerm_vx_app_tidl_od_20241021-1433_tidl_io_peele_300_1.log"是成功运行日志。
    成功运行中使用的是/opt/vision_apps/test_data/psdkra/tidl_models/tidl_io_peele_300_1.bin 和/opt/vision_apps/test_data/psdkra/tidl_models/tidl_net_peele_300.bin。
    --------------------------------------------------------
    #位置
    tidl_config /opt/vision_apps/test_data/psdkra/tidl_models/tidl_io_peele_300_1.bin

    #网络的位置
    tidl_network /opt/vision_apps/test_data/psdkra/tidl_models/tidl_net_peele_300.bin
    --------------------------------------------------------

    此测试也使用 TIVxDLPreProcNode ()而不是 TIVxImgPreProcNode ()。

    请帮助分析出错了!

    此致、
    George Lin

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

    您好、Nikhil:

    当前情况是、我使用 TI 提供的 yolov5s6_640_ti_lite_37p4_56p0.onnx 和 yolov5s6_640_ti_lite_metaarch.prototxt、并使用 TI 提供的 edgeai-tidl-tools (08_06_00_05)将其转换为 detections_tidl_io_1.bin 和 detections_tidl_net.bin。
    然后、我使用 TI 提供的 ti-processor-sdk-rtos-j721e-evm-08_06_00_12/vision_apps/apps/dl_demos/app_tidl_od 进行了测试。 替换 tidl_config 和 tidl_network 这两个设置。
    --------------------------------------------------------
     #位置
    -tidl_config /opt/vision_apps/test_data/psdkra/tidl_models/tidl_io_peele_300_1.bin
    +tidl_config /opt/model_zoo/yolov5s6_640_ti_lite_37p4_56p0/artifacts/detections_tidl_io_1.bin

     #网络的位置
    -tidl_network /opt/vision_apps/test_data/psdkra/tidl_models/tidl_net_peele_300.bin
    +tidl_network /opt/model_zoo/yolov5s6_640_ti_lite_37p4_56p0/artifacts/detections_tidl_net.bin
    --------------------------------------------------------
    但执行始终失败。
    所以我都使用​​TI 提供的 AI 模型、转换工具和执行程序。
    不能正确实现这一点是不合理的。
    您能否在贵公司内进行测试并使用 yolov5s6_640_ti_lite_37p4_56p0.onnx 和 yolov5s6_640_ti_lite_metaarch.prototxt 使 vision_apps_tidl_od 正确执行?

    此致、
    George Lin

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

    您好、Nikhil:

    实际上、我的问题非常简单。
    我想问的是、​​vision_apps 的 AI 模型 app_tidl_od 是否可以替换为 yolov5s6_640_ti_lite_37p4_56p0.onnx?

    此致、
    George Lin

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

    您好、George:  

    所以、

    1.无法在 vision_apps 应用程序中直接替换它、因为两个模型(即 yolov5和 peele)所需的预处理是不同的、并且当前的 ImgPreProc 不支持浮点数据类型张量。

    2.第一处更改是使用 DLPreProc。

    3. edgeAI tidl 方法和 vision_apps 方法的区别在于 EdgeAI TIDL 中的预处理在 A72上、而在 vision_apps 中则在 C66上。

    4.还有,正确我如果我错了,我相信你已经把 RGB 输入图像给 edgeAI tidl 和 YUV 图像给 vision_apps 作为输入正确?

    5.所以有两种方法可以向前走。

    -一个是在 VISION-APPS 上创建您自己的预处理节点,将 YUV 转换为 RGB 图像,并根据模型处理平均值和缩放值

    -第二是我要重新创建这个问题在我的终端,然后集成 DL preproc 节点,然后检查为什么发生这个错误。 这当然需要一些时间。

    因此、TI 对于任何模型的典型建议是使用 edgeAI tidl 工具(就像以前一样)验证模型、这意味着 TIDL 节点可以正常运行。 然后为预处理和后处理创建自定义节点、以便将其集成到 vision_apps 中。  

    请告诉我您对此有何想法。

    此致、

    Nikhil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    4. 此外、请更正我如果我错了、我认为您已将 RGB 输入图像提供给 edgeAI tidl 、将 YUV 图像提供给 VISION_APPS 作为正确的输入?

    您好、Nikhil:

    在"edgeAI tidl"中,我使用 h264文件作为其"输入"。
    也许"edgeAI tidl"从 h264文件中提取 RGB 图像。

    此致、
    George Lin

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    -一种方法是在 vision-apps 上创建您自己的预处理节点、该节点将 YUV 转换为 RGB 图像、并根据模型处理平均值和换算值

    您好、Nikhil:

    我的理解是、如果我的预处理读取 BMP 图像、可以吗?
    如果不正确、请告诉我。
    我想我可以先尝试这种方法。
    此致、
    George Lin

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

    您好、George:

    预处理节点的目的是满足输入源对模型所需数据类型的张量的要求。 输入源可以是任何内容、除非您有工具将相同的内容转换为所需的格式

    例如、demo pre-proc 将 YUV 输入图像(vx_image)转换为 RGB 输出传感器(vx_tensor)(节点中实现的逻辑)

    因此可以有一个自定义节点、该节点会将 bmp 图像读取到 OpenVX 对象 vx_image、然后将其转换为 vx_tensor。

    此致、

    Nikhil

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

    您好、Nikhil:

    我在 TIDL_Process ()(位于 tidl_j721e_08_06_00_10/tidl/algo/tidl/tidl_alg.c src)中发现死锁。
    2233       IF (intAlgHandle->isPreEmptionEnable)
    2234       {
    2235         IF (TIDL_isThisLayerOptimalForPreemption (intAlgHandle->preemptHandle、i))
    2236         {
    2237           /*在恢复中断之前等待层填充 DMA */
    2238           TIDL_syncPadTransfer (intAlgHandle、trMem);
    2239           状态= TIDL_updateContextMemPtrsForPreemption (&intAlgHandle->preemptContextInfo、intAlgHandle->privContext、
    2240           intAlgHandle->preemptHandle、intAlgHandle->perfSimOutput、intAlgHandle->sysScratchPtr.l2BasePtr、
    2241           intAlgHandle->sysScratchPtr.l3BasePtr、i、intAlgHandle->createParams->net->numLayers);
    2242  
    2243           TIDL_unlockForPreemption (oldIntState、intAlgHandle->createParams、&lockState);
    2244         }
    2245       }
    TIDL_isThisLayerOptimalForPreemption()将始终为 false、因此将不执行 TIDL_UnlockForPreemption()。
    所以死锁将会发生!!
    为什么 TIDL_isThisLayerOptimalForPreemption()总是为 false?
    因为 TIDL_init ()尚未完全执行。
    由于 TIDL_init ()未在第1686行的 TIDL_initializeHandleForPreemption ()执行,因此执行被强制停止,因为 TIDL_process ()已执行。
    1665     IF (algHandle->isPreEmptionEnable)
    1666     {
    1667       /*为占先句柄分配存储器*/
    1668       algHandle->preemptHandle =(uint8_t *) TIDL_getMemoryChunkFromSysmem (algHandle->sysMems、
    1669         (uint32_t) TIDL_getHandleSizeForPreemption (algHandle->createParams->net->numLayers)、
    1670         128U、
    1671         TIDL_SYSMEM_L3_SCRATCH、(uint32_t) IALG_PERSIST);
    1672.  
    1673       if (algHandle->preemptHandle ==空)
    1674       {
    1675         状态= IALG_EFAIL;
    1676         tidl_printf (0、"无法分配占先句柄\n");
    1677       }
    1678  
    1679       /*初始化占先句柄*/
    1680       if (STATUS == IALG_EOK)
    1681       {
    1682         algHandle->preemptPerfHW = 1;
    1683         /*避免在 L3中初始化 preemptHandle、而是在 contextMemPtr (DDR)中初始化
    1684            并在 ACTIVATE 函数中将其复制到 L3中的 preemptHandle
    1685         */
    1686         TIDL_initializeHandleForPreemption (algHandle->preemptContextInfo.contextMemPtr、algHandle->perfSimOutput、
    1687         algHandle->createParams->net->numLayers, algHandle->createParams->maxPreEmptDelay
    1688         algHandle->sysScratchPtr.l2BasePtr、algHandle->ddrBytesPerCPUCycle、
    1689         algHandle->perfSimOutput -> simConfig.freqMHz);
    1690         /*要将此 contextMemPtr 复制到 ACTIVATE 函数中的 premptHandle */
    1691         algHandle->preemptContextInfo.contextBufInfo[0].ptBufInfo= src (uint8_t *) algHandle->preemptHandle;
    1692         algHandle->preemptContextInfo.contextBufInfo[0].dst =(uint8_t *) algHandle->preemptContextInfo.contextMemPtr;
    1693         algHandle->preemptContextInfo.contextBufInfo[0].size = TIDL_getHandleSizeForPreemption (algHandle->createParams->net->numLayers);
    1694         algHandle->preemptContextInfo.earlyPreEmptt = 1;
    1695         algHandle->preemptContextInfo.numContextBufs = 1;
    1696       }
    1697       tidl_printf (1、"TIDL_initializeHandleForPreemption 已完成\n");
    1698     }
    1699   }

    我想询问何时调用和执行 TIDL_PROCESS()??
    如何在 TIDL_init ()完成执行后调用 TIDL_Process ()?

    此致、
    George Lin

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

    您好、George:

    我建议为这个问题打开一个单独的主题、因为这个问题将由另一位专家处理、现在这个问题与这个 e2e 标题有偏差。

    感谢您的理解

    此致、

    Nikhil

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

    您好、Nikhil:

    "我想你了。"
    我目前正在分析 ti-processor-sdk-rtos-j721e-evm-08_06_00_12/tidl_j721e_08_06_00_10/ti_dl/algo/ src。
    我认为这仍然在 tidl 的范围内。
    我的问题是为什么 TIDL_Process ()(位于 tidl_j721e_08_06_00_10/tidl/algo/tidl/tidl_alg.c src)具有死锁。

    行:2243不能始终执行。
    2233       IF (intAlgHandle->isPreEmptionEnable)
    2234       {
    2235         IF (TIDL_isThisLayerOptimalForPreemption (intAlgHandle->preemptHandle、i))
    2236         {
    2237           /*在恢复中断之前等待层填充 DMA */
    2238           TIDL_syncPadTransfer (intAlgHandle、trMem);
    2239           状态= TIDL_updateContextMemPtrsForPreemption (&intAlgHandle->preemptContextInfo、intAlgHandle->privContext、
    2240           intAlgHandle->preemptHandle、intAlgHandle->perfSimOutput、intAlgHandle->sysScratchPtr.l2BasePtr、
    2241           intAlgHandle->sysScratchPtr.l3BasePtr、i、intAlgHandle->createParams->net->numLayers);
    2242  
    2243           TIDL_unlockForPreemption (oldIntState、intAlgHandle->createParams、&lockState);
    2244         }
    2245       }
    如何解决死锁?

    谢谢!

    此致、
    George Lin

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

    您好、Nikhil:

    我的工作很简单、就是让 vision app 使用 yolov5的 ai 模型。
    但我已经工作了几个月,仍然不能成功。
    您能告诉我视觉应用可以使用哪个 yolov5 ai 模型吗?

    此致、
    George Lin

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

    您好、George;

    感谢您的提问。 由于此线程变得太长、并包含各种信息。 为了有效解决您的问题、我们建议您打开一个新主题。 这样、我们就能在合适的专家的帮助下快速回答您的问题。

    如果您同意、请关闭此主题。 并打开一个新文件夹、您可以在此处复制并粘贴相关信息。

    此致

    文立  

      

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

    李文强


    好的、我已经创建了新主题。
    (e2e.ti.com/.../j721excpxevm-vision_apps-uses-the-yolov5-ai-model-for-inference)

    请帮助为新主题分配所有者。
    我不想抱怨。 但这个问题已经解决太久了。
    我现在只想举一个简单的示例。 让我来证明 vision_apps 可以使用 yolov5 AI 模型进行推理。


    此致、
    George Lin