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.

[参考译文] TDA4AEN-Q1:[J722S SDK 10.1.0.04]在应用 TI 补丁的 app_tidl_od_cam 上有 3 帧后、PreProcNode 挂起

Guru**** 2434370 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1533700/tda4aen-q1-j722s-sdk-10-1-0-04-preprocnode-hangs-after-3-frames-on-app_tidl_od_cam-with-ti-patches-applied

器件型号:TDA4AEN-Q1


工具/软件:

尊敬的 TI 团队:

我在使用 J722S 一方 SDK 10.1.0.04 app_tidl_od_cam从运行演示dl_demos

PreProcNode在 C7x 上启用、我按照本文中的建议应用了以下补丁:

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1516140/tda4ven-q1-how-to-build-tidl_avp-demo-in-sdk-10_01_00_04

  • img_proc_kerenels_vision_apps.patch

  • sdk_builder_enable_tiadalg.patch

  • img_proc_kernels_tiadalg.patch

最初、如果没有这些修补程序、则PreProcNode无法使用以下日志进行初始化:

vx_zone_error:[ownContextSendCmd:912]命令 ack 消息返回失败 cmd_status:–7
vx_zone_error:[ownNodeKernelInit:604]节点 PreProcNode 的目标内核、TIVX_CMD_NODE_CREATE 失败
vx_zone_error:[ownNodeKernelInit:605]请确保已为此内核注册目标回调
vx_zone_error:[ownNodeKernelInit:606]如果目标回调已注册、请确保此内核的创建回调中没有发生错误
vx_zone_error:[ownGraphNodeKernelInit:690]节点 5 的内核初始化、内核 com.ti.img_proc.img.preprocess ...失败!!!

为了解决该问题、我搜索了 TI 论坛并找到了上面的帖子。 应用修补程序后、图形将生成并运行—但仅部分运行。

当前问题(补丁后):

反馈 50%的测试运行 、管道 恰好在 3 帧后挂起
打开了 无错误或崩溃 、只是没有进一步执行或 FPS 输出。

White check mark 我们已经确认了这一点  通过分频器进行捕获 节点成功完成执行。
 X 出现挂起  施加 10 毫秒延迟 、可能在或之后PreProcNode(在 C7x_2 上)。

发生挂起时、pKey 会打印以下性能统计信息:

图形:app_tidl_od_cam_draph (#nodes = 9、#executions = 3)
节点:CAPTURE1:Capture_node:Avg = 89262 用例
节点:VPAC_VISS1:viss_node:Avg = 14495 个用例
节点:MCU2-0:aewb_node:Avg = 924 个用例
节点:VPAC_LDC1:LDC_NODE:Avg = 16876 个用例
节点:VPAC_MSC1:scaler_node:Avg = 21224 个用例
节点:DSP_C7-2:PreProcNode:Avg = 13740 个用例
节点:DSP_C7-1:tidl_node:Avg = 40154 个用例
节点:DSP_C7-2:DrawBoxDetectionsNode:Avg = 4167 个用例
节点:VPAC_MSC1:马赛克节点:Avg = 9397 个用例

性能:总计:0.0 FPS

在第 3 帧之后、系统 CPU 使用率变为空闲状态。

问题:

  1. PreProcNode在 SDK 10.1.0.04 中的 J722S (C7x) 上使用是否存在已知问题?

  2. 此挂起是否是由于图形同步、缓冲队列或缺少目标注册造成的?

  3. 是否执行任何用于隔离问题的建议调试步骤(例如图形检查/记录)?

  4. 的完整 J722S 支持是否会PreProcNode在未来的 SDK 版本中提供?

非常感谢!

此致、
Leo

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

    嗨、Leo、

    1. 10.1 上的 j722 不支持 PreProcNode、这些修补程序只是为了使其正常工作而创建的。 我们尚未将其作为 SDK 的一部分进行测试。
    2.这个外径演示是从 其他设备派生出来的,在相同的图形中,缓冲器工作正常。 如果缺少目标、那么您首先应该会遇到错误。 此外、该图可以正常工作、50%的时间都不会出现问题。
    3.如果您怀疑 preproc 节点在 3 帧后挂起,请尝试在 preproc 节点的进程回调的开始和结束处添加 print 语句。 通过这种方式,我们可以确保预处理是挂起的。
    4.在 11.0 中、preproc 节点已移至 A53 内核中、其中使用了 ARM neon 指令来优化功能、到目前为止、我们没有计划在 j722 上支持 c7x preproc 节点。

    您可以在 tiovx 上启用信息打印以获取更多日志、从而了解这种情况。

    此致、
    Gokul

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

    尊敬的 Gokul:

    再次感谢先前的澄清。

    我们进一步进行了隔离测试、并发现以下内容:

    1. 已删除 DrawBoxDetectionsNode →仍然挂起

    2. 删除了 PreProcNode 和 TIDLNode →在连续 10 次跑步时工作正常

    3. 添加了 PreProcNode 和 TIDLNode(仅使用虚拟 INIT 跳过实际执行) →在连续 10 次跑步时工作正常

    4. TIDLNode + DrawBoxDetectionsNode、强制 TIDL 在 DSP_C7_2 上运行 →仍然挂起

    5. TIDLNode + DrawBoxDetectionsNode、强制 TIDL 在 DSP_C7_1 上运行 →仍然挂起

    这些结果表明这一点 应用补丁后、TIDLNode 的执行(不仅仅是初始化)可能与挂起有关。

    我们还将日志插入到process每个内核(包括 PreProcNode、TIDLNode、DrawBoxNode 等)和的回调中 已确认在任何进程回调中均未发生挂起 、因为所有日志都显示正确的进入和退出。

    虽然您提到具有 SDK 10.1 的 J722S 不正式支持 PreProcNode、但 Vision Apps 用户指南 明确列出了相关内容 J722S 的支持平台下app_tidl_od_cam

    因此、我们想问:

    在 SDK 10.1 和 J722S 上、在目前没有更改 SDK 版本的情况下、建议使用什么方法通过摄像头输入验证 TIDL 功能?

    是否有任何已知的权变措施或配置来使 TIDLNode 在 J722S(DSP 执行)上保持稳定?

    再次感谢您的支持!

    此致、
    Leo

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

    您好、

    虽然您提到具有 SDK 10.1 的 J722S 不正式支持 PreProcNode、但 Vision Apps 用户指南 明确列出了相关内容 J722S 支持的平台下app_tidl_od_cam

    很抱歉、文档中没有更新 10.1 的版本。

    在 SDK 10.1 和 J722S 上、在目前没有更改 SDK 版本的情况下、建议使用什么方法通过摄像头输入验证 TIDL 功能?

    是否有任何已知的权变措施或配置来使 TIDLNode 在 J722S(DSP 执行)上保持稳定?

    [/报价]

    我们目前没有权变措施。

    我们还将日志插入到process每个内核(包括 PreProcNode、TIDLNode、DrawBoxNode 等)的回调中 已确认在任何进程回调中均未发生挂起 、因为所有日志都显示正确的进入和退出。

    是否可以共享启用 vx_zone_info 区域后应用挂起的日志? 对我来说、分析和评论问题所在将是有益的

    我不怀疑任何与框架相关的问题、因为框架对于其他设备也是相同的、并且可以正常工作。 可能存在未针对 j722 优化 od 模型的情况。 在 11.0 中、我们使用不同的型号。

    此致、
    Gokul

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

    尊敬的 Gokul:

    我想与您确认、这只是一个 TI 异议检测本身未针对 TDA4AEN 进行优化的问题? 或者、具有 SDK 10.1.0.04 的 TDA4AEN 不能支持 TIDL 相关功能、是否必须升级到 SDK 11.0? 因为稍后我们将让第三方制造商在 TDA4AEN 上开发他们的 AI 算法。 如果无法使用 SDK 10.1.0.04、我们必须切换到 SDK 11.0。

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

    尊敬的 Shen:

    最好切换到 SDK 11.0。

    此致、
    Gokul

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

    尊敬的 Gokul:

    作为后续行动、我们在 SDK 10.1 和 SDK 11.0 下执行了其他测试、并收集了日志以供分析。

    1.SDK 10.1–在启用 Vx_zone_info 的情况下挂起

    我们使用以下命令启用调试输出:

    tivx_set_debug_zone (vx_zone_info);
    应用程序挂起后、我们收集了完整日志。

    附加的日志文件:e2e.ti.com/.../j722s_5F00_run_5F00_app_5F00_tidl_5F00_od_5F00_cam_5F00_log_5F00_250703.txt

    根据跟踪、图形在 3 次执行后停止传输。
    没有更多进入队列/出队操作。
    我们还确认所有process回调(包括 TIDLNode 和 PreProcNode) 正常进入和退出 通过打印日志。

    SDK 11.0–PreProcNode 在验证时仍然失败

    我们从 TI SDK 下载 并测试了:

    • ti-processor-sdk-rtos-j722s-evm-11_00_00_06.tar.gz

    如果没有重大更改、运行相同的流水线会导致此错误:

    46.336777 s:vx_zone_error:[ownContextSendCmd:1001]命令 ack 消息返回失败 cmd_status:–7
    46.336857 s:vx_zone_error:[ownNodeKernelInit:704]节点 PreProcNode 的目标内核、TIVX_CMD_NODE_CREATE 失败
    46.336871 s:vx_zone_error:[ownNodeKernelInit:705]请确保已为此内核注册目标回调
    46.336883 s:vx_zone_error:[ownNodeKernelInit:706]如果目标回调已注册、请确保此内核的创建回调中没有发生错误
    46.336898 s:vx_zone_error:[ownGraphNodeKernelInit:793]节点 5 的内核初始化、kernel com.ti.img_proc.img.preprocess ...失败!!!
    46.336955 s:vx_zone_error:[ app_tidl_od_cam_draph ]节点内核初始化失败 46.336967 s:vx_zone_error:[ app_tidl_od_cam_draph ]图形验证失败

    问题

    1. 在 SDK 11.0 中、我们注意到dl_demosSKIPBUILD=1 J722S 仍然有、这是正常现象吗?

    2. 此外、PreProcNode似乎仍然在 DSP 上运行、而不是在 A53 上运行。 我们是否应该手动修改目标分配?

    3. 如果我们继续在 DSP 上运行 TIDL、是否有建议的方法来验证 TIDLNode 功能?

    此致、
    Leo Peng

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

    嗨、Leo、

    我检查一下日志、然后返回给您、

    在 11.0 中、仅启用了 od 演示、默认情况下应使用 A53 预处理内核。

    此致、
    Gokul

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

    尊敬的 Gokul:

    对此有任何更新?

    谢谢、
    Leo

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

    嗨、Leo、

    我看到 VISS 节点完成 6 次并释放参数、但只有 3 次图形完成、这意味着某些东西阻止了图形执行。 这是不够的信息,以供结论。 您还必须共享远程核心 vx_zone_info 日志。 但无论如何、TI 不会在 10.1 SDK 中修复此问题、我们建议仅使用 11.0、所有问题都将在下一个 SDK 版本中修复。

    您是否在 11.0 中尝试过将 A53 内核用于 pre/post proc 的 od 演示?

    此致、
    Gokul

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

    尊敬的 Gokul:

    感谢您的答复。

    我们刚刚app_tidl_od在 SDK 11.0 中进行了测试、并确认使用 A53 内核时、预/后处理工作正常。

    但是、我们注意到、app_tidl_od_cam在 SDK 11.0 中、似乎仍然使用 DSP 内核进行预/后处理、而不是基于 A53 的版本。

    您能否帮助提供修补程序或指导app_tidl_od_cam、以修改用于预/后处理器的 A53 内核、类似于app_tidl_od

    谢谢、
    Leo

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

    嗨、Leo、

     您可以对其进行修改、  

    在 od_cam 演示中、图形如所示  
    Capture -> viss and aewb -> LDC -> scaler -> preproc -> tidl -> postproc -> mosaic -> display

    在 od 演示中
    缩放器->预处理-> tidl ->后处理->显示

     从 od_cam 应用程序获取第一部分(捕获到 LDC ),并在 od 应用程序中修改它,并添加马赛克节点并引用它。

    要处理多个摄像头的代码、请对 vision_apps/apps/dl_demos/app_tidl_od/app_common.h 中的 NUM_CH 进行硬编码

    此致、
    Gokul

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

    尊敬的 Gokul:

    感谢您的建议—我们已经测试了集成。

    我们移植了 app_tidl_od到基于 A53 的预处理和后处理模块 app_tidl_od_cam、并确认在 A53 执行的情况下、整个流水线成功运行。

    但是、图形仅运行 其他参数 tidl_net_onnx_yolo_8200_416.bin从 SDK 11.0 开始(,输入大小为 416x416)app_od.cfg

    如果我们切换回之前的模型tidl_net_peele_300.bin(输入 1024x512)、图形将再次挂起、就像在 SDK 10.1 中一样。

    当新模型运行良好时、 其检测性能会更差 、甚至在 0.05 的阈值。
    相比之下、该peele_300模型在阈值 0.95 时显示的检测结果要好得多。

    是否有办法peele_300在 SDK 11.0 下可靠运行模型、或者您建议完全迁移到更新的 TIDL 模型?

    再次感谢、
    Leo

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

    嗨、Leo、

    正如我之前说过的、SDK 10.1 中的模型没有针对 j722 进行优化。 对 od 演示的实际支持从具有稳定模型的 SDK 11.0 开始。

    是否有办法peele_300在 SDK 11.0 下可靠地运行该模型、或者您是否建议完全迁移到更新的 TIDL 模型?
    如果新模型运行良好、 其检测性能会更差 、即使阈值为 0.05

    请您再提出一个问题。  

    此致、
    Gokul