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.

[参考译文] TDA4VH-Q1:申请将.tflite 模型转换为 TIDL .bin 格式以在 TDA4VH (J784S4) EVM 上部署的步骤

Guru**** 2448780 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1547196/tda4vh-q1-request-for-steps-to-convert-tflite-model-to-tidl-bin-format-for-deployment-on-tda4vh-j784s4-evm

器件型号:TDA4VH-Q1
Thread 中讨论的其他器件:TDA4VHAM69A

工具/软件:

尊敬的 TI 支持团队:

我目前正在努力使用Processor SDK 10.0.0.5 中提供的 edgeai-tidl-tools (github.com/.../rel_10_00) 和 TIDL 运行时、在 TDA4VH (J784S4) EVM 平台上部署深度学习模型。

我们有一个 TensorFlow Lite (.tflite) 格式的预训练模型: https://storage.googleapis.com/mediapipe-assets/face_landmark.tflite 可从下面的论坛链接下载

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1188908/tda4vm-mediapipe-face_landmark-cnn-exit-with-error-message-during-tidl-import#:~:text=Processors-,Processors%20forum,tidl_denylist%20=

我们希望在 EVM(最好是在 DSP 或 C7x-MMA 内核上)上通过硬件加速运行该电机。

请提供以下方面的详细指导:

  使用 edgeai-tidl-tools 将.tflite 模型转换为 TIDL 支持的.bin 格式 (tidl_net.bin 和 tidl_io.bin)**、具体步骤是什么?

  型号要求是什么?

    模型是否需要完全量化为 int8?

    浮点数或混合.tflite 模型可以转换吗?

  如果需要量化:

    建议使用什么方法来量化模型(例如,使用 TensorFlow 训练后量化)?

    是否必须从 TensorFlow SavedModel 或 Keras .h5 格式开始?


我们感谢您提供正式的分步流程或参考文档、以确保我们遵循从模型准备到部署的正确方法。

期待您的指导。

Rupali Jadhav
SRM Technologies Private Limited、金奈
电子邮件:rupali.bhagavan@srmtech.com
目标平台:TDA4VH (J784S4) EVM
SDK 版本:10.0.0.5

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

    尊敬的 Rupali:

    Q1: 您是否 通过转换 https://storage.googleapis.com/mediapipe-assets/face_landmark.tflite 上的.tflite 模型获得了共享的 Face_Landmarking.onnx 模型 e2e.ti.com/.../face\_5F00\_landmark.onnx ?

    是的

    Q1: 您是否 通过转换 https://storage.googleapis.com/mediapipe-assets/face_landmark.tflite 上的.tflite 模型获得了共享的 Face_Landmarking.onnx 模型 e2e.ti.com/.../face\_5F00\_landmark.onnx ?

    TIDL 和整个行业都不再强调 TFlite。

    问题 3 我遵循了关于共享.onnx 模型的建议步骤、如下所示:

    不要担心这个错误。  生成输出图像时、与输入的形状有关。  不重要、不影响输出.bin 文件。   此外、为什么不使用 11x?  它具有更多的层支持。

    此致、

    Chris

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

    您好、Chris、

    感谢您先前的确认和有用的指导。

    我有几个跟进问题:

    1:关于 face_marketing.onnx 模型:
    您提到它是从原始.tflite 模型 (storage.googleapis.com/.../face_landmark.tflite) 转换而来的。
    如果可能、您能否分享将此.tflite 模型转换为.onnx 的步骤?
    拥有准确的流程将有助于我们将来进行模型转换

    2:关于 SDK 11.x:
    您建议升级到版本 11.x 以获得更好的层支持。
    能否请您确认版本 11.x 是否被认为稳定且适合生产使用?
    在从 10.x 迁移之前、是否有任何已知的问题、限制或兼容性注意事项?

    如果 11.x 是稳定的、我们很高兴改用 IT 进行持续的开发和部署。


    再次感谢您的支持!

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

    您好、Chris、

    温馨提示、关于我前面关于 SDK 11.x 版的问题、特别是它是否稳定以及是否推荐用于量产用途。

    如果您有机会分享您的想法、我们将不胜感激。

    再次感谢您的支持!

    此致、

    Rupali J

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

    尊敬的 Rupali:

    1.下面是基本脚本:

    mport tflite2onnx

    #定义输入 TFLite 模型的路径
    tflite_model_path ='./face_marketing.tflite“

    #定义保存转换后的 ONNX 模型的路径
    onnx_output_path ='./face_marketing.onnx'

    #执行转换
    tflite2onnx.convert (tflite_model_path、onnx_output_path)

    打印 (f“模型已成功从{tflite_model_path}转换为{onnx_output_path}“)

    2.是 11.0 和 11.1 更好。  11.1 将 11.0 中的所有修补程序都整合到 11.1 中。  版本越新、稳定性就越高、我们发现的唯一缺点是、通常在后续补丁中会解决性能提升问题。  并非总是,只是以前发生过。

    此致、

    Chris

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

    您好、Chris、感谢您的答复、

    我们有一些关于的后续问题:

    A.SDK 版本控制

      在 TI Processor SDK 门户上、我们看到适用于 TDA4VH (J784S4) 的最新可用 RTOS SDK 版本为 11.00.00.06。 但是、您提到 11.1 是最新且更稳定的版本。

        您能否说明 11.1 是公开发布还是内部版本/预发布版本?
        如果它已发布、我们可以从哪里下载适用于 TDA4VH (RTOS) 的 SDK 11.1?

      关于您提到的较新版本的性能影响:

        您是否为这些问题提供了发布后的常规修补程序修复?

        TI 是否维护了一个论坛或通知系统、用于向用户告知与每个 SDK 相关的补丁版本或性能修复?

    我们正在努力确保我们为我们的项目使用最稳定和生产就绪型的 SDK、并感谢您的指导。

    B.face_marketing.onnx 模型未使用 TIDL 完全转换为.bin

    我注意到、虽然原始 ONNX 模型具有所有预期的层、但生成的.bin 和 subgraph_0_tidl_net.bin.layer_info.txt 仅显示到 conv2d_4 和 max_pooling2d_1 的层。 之后、子图停止、.bin 中未看到输出层。

    我们观察到的情况如下:

      ONNX 模型正确且完整(具有 1404 个地标回归点)。

      生成的 TIDL 子图似乎不完整或被截断。

      因此、预期的输出(例如,标界的 1404 回归点)缺失。


    我希望您能帮助您了解:

      为什么该模型没有完全编译到.bin 中?

      TIDL 10.0 是否支持该 ONNX 模型中的某些层?

      是否会使用 TIDL 11.x 来解决该问题?

    我已随函附上 subgraph_0_tidl_net.bin_netLog.txt 供参考

    e2e.ti.com/.../subgraph_5F00_0_5F00_tidl_5F00_net.bin_5F00_netLog.txt

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

    尊敬的 Rupali:

    A.SDK 版本控制

    11.1 将很快发布并发布在 TI.com 网站上。  TI.com 上有一个选择加入通知机制。  会定期针对 TIDL 提供更新。  兼容性基于 SDK 的前两位数字。  例如、如果您使用的是 10.01.00.02 SDK、并且 GitHub 上发布了包含 10.01.04.00 的 TIDL 更新(请参阅标签)、您可以将其与 10.01.00.02 SDK 和.wic 映像配合使用。

    B.face_marketing.onnx 模型未使用 TIDL 完全转换为.bin

    如果在编译中没有遇到任何错误、则整个模型已转换为一个或多个.bin 文件。   为了进行优化、可以删除一些层。  TIDL 将优化模型、使其在边缘器件上运行得更好。  大多数时候,不需要的图层被删除,有时会添加图层(如 BatchNorm 图层)。  优化后模型的功能相同。  要查看模型、请查看图形/子图形 SVG 文件。

    模型被分解为子图的原因是由于在原始模型上不受支持的图层。  这意味着不受支持的层将在 ARM 内核上运行。  则模型的其余部分将位于另一个子图中。  每个模型的子图限制为 16 个子图。

    这是另一个主题、因为这些主题可搜索、请 使用 新主题继续本次讨论。

    此致、

    Chris