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.

[参考译文] TDA4VM:TDA4VM:需要支持使用 TIDL 进行 YOLOP 源代码编译并在 TDA 平台上部署

Guru**** 2964790 points

Other Parts Discussed in Thread: TDA4VM, SK-TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1656811/tda4vm-tda4vm-need-support-on-yolop-source-compilation-using-tidl-and-deployment-on-tda-platform

器件型号: TDA4VM

您好、

我正在使用 Processor SDK Linux Edge AI 版本 11_00_06_00 在 TDA4VM 上部署自定义 YLOP 模型。  

https://github.com/hustvl/YOLOP

我希望获得有关此模型在 TDA4VM 上部署工作流程的指导。

我的问题是:

YOLOP 是否通过 SDK 11_00_06_00 上的 TIDL 提供支持?

TDA4VM 上是否可以加速所有三个输出报头(检测,可驾驶区域分段,车道分段)?

使用 edgeai-tidl-tools 编译 YOLOP 源的建议过程是什么?

是否有任何关于部署包含检测和分割输出的多输出 ONNX 模型的参考示例?

如果 TIDL 不支持某些层、这些层是否会通过 ONNX Runtime + TIDL 执行提供程序在 ARM 上自动执行?

我已经将模型导出到 ONNX、并希望获得任何部署指导、示例配置或参考示例。

SDK 版本:11_00_06_00
平台:SK-TDA4VM/ TDA4VM

期待尽快收到您的回复。

谢谢你。

此致
Nandhakumar

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

    我尝试通过 GitHub 链接快速编译模型、它并不完全受支持、因为并非所有层都将加速。 例如、某些层、某些池层与 TIDL 禁忌不匹配、但您可以调整模型以加速完整的模型。

    是否可以在 TDA4VM 上加速所有三个输出磁头(检测,可驱动区域分段,通道分段)?

    是的、在 c7x 上运行的层将提供加速性能、而不支持其他层将在 CPU 中运行。

    使用 edgeai-tidl-tools 编译 YLOP 源代码的建议过程是什么?

    您可以通过 https://github.com/TexasInstruments/edgeai-tidl-tools/tree/11_02_04_00/docs 了解 tidl、编译、推理等

    如果 TIDL 不支持某些层、它们是否会通过 ONNX Runtime + TIDL 执行提供程序在 ARM 上自动执行?

    是的。

    是否有任何部署包含检测和分割输出的多输出 ONNX 模型的参考示例?

    tidl 中有一些示例、可执行多项任务。 但 github.com/.../edgeai-modelzoo 上提供了一些单独的任务编译模型

    此致、
    Vaibhav

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

    尊敬的 Vaibhav:

    我编译了 YOLOP 模型并在编译过程中观察到了相同的层错误。 但是、编译成功完成。 我已附上编译日志以供参考。

    我当前正在修改不受支持的图层。 您能告诉我、需要进行哪些确切的更改才能使该模型在 TDA4VM 板上运行吗?

    我还有几个问题:

      1. NMS 应该包含在 ONNX 模型中、还是建议将 NMS 作为后处理处理?

      2. 对于 YLOP(检测+可驱动区域分段+通道线路分段)、编译过程中是否需要任何特殊配置? 在 SDK 11_00_06_00 中、这些示例在编译期间似乎使用单个任务类型。 应如何编译诸如 YOLOP 之类的多头模型?

      3. 使用 TIDL 编译和部署多头模型的建议方法是什么?

      4. YOLOP 部署是否需要 prototxt 文件、或者 ONNX 模型是否足以进行编译和部署? 如果需要 prototxt 文件,建议使用什么方法来生成它为 YOLOP ?

      5. 如果可能、您能否共享多头模型(如 YOLOP)的参考编译脚本和示例 model_config?

      6. 在 E2E 主题“SK-TDA4VM:YLOP 编译“中、YLOP 模型在较旧的 SDK 版本上共享并进行了验证。 是否可以对 SDK 11_00_06_00 使用相同的模型和部署方法、或者当前 SDK 是否需要进行任何修改?

        https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1161201/sk-tda4vm-yolop-compile/4374851

      7. 为了使 YLOP 与 TDA4VM 兼容、需要进行哪些确切的层更改和修改?

    我已附上编译日志以供参考。

    yolop-s.log  

    谢谢、
    Nandhakumar

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

    您好、我认为文件未正确附加、您能重新附加吗?

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

    e2e.ti.com/.../yolop_2D00_s.log

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

    您使用的是 https://github.com/hustvl/YOLOP/blob/main/export_onnx.py 模型吗?

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

    是的、我使用的是权重目录中导出的 YLOP 模型、输入分辨率为 640×640。 请您尽快就上述问题提供反馈、因为这将帮助我继续部署?

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

    您好、

    对于 YOLOP(检测+可驱动区域分段+车道线分段)、编译过程中是否需要任何特殊配置? 在 SDK 11_00_06_00 中、这些示例在编译期间似乎使用单个任务类型。 应如何编译诸如 YOLOP 之类的多头模型?

    TIDL 编译在输入和输出的数量方面没有差异。 当有多个输入时,ONNx 会返回 dict 作为输出,您可以访问输出(这是 ONNx 的标准配置)。 您可以参考 examples/osrt_python/advanced_examples/unit_tests_validation/ort/onnxrt_ep.py


    使用 TIDL 编译和部署多头模型的推荐方法是什么?

    编译和推理没有区别。 我不知道如何使用某些应用来部署模型、但简单的器件推理在多个输出方面没有区别。


    YOLOP 部署是否需要 prototxt 文件、或者 ONNX 模型是否足以进行编译和部署? 如果需要 prototxt 文件、建议使用什么方法为 YLOP 生成它?

    Prototxt 文件在对象检测模型中是可选的、因为 tidl 具有优化的标准后处理主干网、如 Yolo (github.com/.../od_meta_arch.md)、可提供更好的性能、但它是可选的。

    如果可能、请共享一个参考编译脚本和一个多头模型(如 YOLOP)的 model_config 示例吗?

    多头模型没有什么特别之处。 仅作为处理多个输入的参考、您可以参考 examples/osrt_python/advanced_examples/unit_tests_validation/ort/onnxrt_ep.py


    NMS 应该包括在 ONNX 模型中、还是建议将 NMS 作为后处理处理来处理?

    如果使用 protottxt、则可以在编译选项本身中设置、否则可以在后处理中设置。 https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/docs/model_compilation.md#object-detection-specific-options


    ]在 E2E 主题“SK-TDA4VM:YOLOP 编译“中、YOLOP 模型在较旧的 SDK 版本上共享并进行了验证。 是否可以对 SDK 11_00_06_00 使用相同的模型和部署方法、或者当前 SDK 是否需要进行任何修改?

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1161201/sk-tda4vm-yolop-compile/4374851

    是的、可以使用它(该方法是基于旧文件的方法 TIDLRT)。 因为你正在使用 osrt 所以我建议你使用这个 onnxrt_ep.py 文件本身。

    为了使 YLOP 与 TDA4VM 兼容、需要进行哪些确切的层更改和修改?

    这在编译日志中提到。 对于存在内核大小问题的一些图层(如 maxpool)、您可以使用 https://github.com/TexasInstruments/edgeai-tidl-tools/tree/master/osrt-model-tools/osrt_model_tools/onnx_tools/tidl_onnx_model_optimizer 。 对于其他图层、您可以在此处检查限制 :https://github.com/TexasInstruments/edgeai-tidl-tools/blob/11_00_06_00/docs/supported_ops_rts_versions.md 。