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.

[参考译文] TDA4AL-Q1:如何移植具有多个输入的深度学习模型(多个输入:浮点矢量和 uint8图像)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1460809/tda4al-q1-how-to-port-a-deep-learning-model-with-multiple-inputs-multiple-inputs-float-vector-and-uint8-image

器件型号:TDA4AL-Q1

工具/软件:

我开发了一个深度学习模型、需要四个输入:两个是图像、两个是矢量数据。 我希望在 TI 平台上移植该模型并 使其正常运行。

但是、在 TIDL_RT PTQ 过程中、似乎仅支持一个输入、因此必须是一个映像。 您能否针对这一限制提供一个解决方案?

此外、四个输入中的两个是浮点值(32位)、而不是 uint8。 根据我的理解、TI 似乎仅支持 uint8输入。 您能建议如何解决这个问题吗?

谢谢你。

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

    嗨、Minwoo;

    输入格式为图像数据格式。 对于矢量数据、它将取决于模型数据格式。 可能必须转换接口数据格式。

    量化后的内部代码将是 uint8。 但转换将由软件处理。  

    谢谢。此致

    Wen Li  

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

    尊敬的 Wen Li:

    感谢您的答复。 然而、我认为我最初提出的问题没有得到充分解决、我想进一步澄清:

    1. 支持多个输入:
      我的深度学习模型需要 四路输入

      • 两个输入是图像uint8()。
      • 两个输入是浮点矢量float32()。

      期间 TIDL_RT PTQ 处理、我注意到似乎只支持单个输入(图像)。
      您能否澄清一下:

      • 是否有启用方法 多输入 初始引导路径?
      • 如果不直接支持多个输入、如何合并或预处理这些输入以使其与 TI 平台兼容、同时保持模型精度?
    2. 数据格式转换:
      您在回复中提到:

      "输入格式是图像数据格式。 对于矢量数据、它将取决于您的模型数据格式。 您可能必须转换接口数据格式。"

      能否就此提供更多详细信息? 具体来说:

      • 事件 数据格式 是否符合非图像矢量输入的要求?
      • 如果需要将浮点矢量输入(32位)转换为 uint8、那么这应该如何在不损失模型中的关键精度的情况下实现?
      • TIDL 是自动处理该转换、还是需要在推理前对数据进行预处理?
    3. 示例或文档:
      是否有任何示例或文档显示如何处理混合输入类型(图像和矢量)的模型? 这样的例子对解决这一问题非常有帮助。

    感谢您在这些具体问题上提供指导。 如果需要更多详细信息、请告知我。

    谢谢。此致、
    Minwoo

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

    您好:

    为了清晰起见、我对我的问题进行了重新编排:

    1. 支持多个输入:

      • TIDL 是否可以处理具有多个输入的深度学习模型(例如、两个图像)?
    2. 输入格式调整:

      • 我的原始输入位于中float32、但我计划扩展并将其转换为uint16以实现兼容性。 TIDL 是否支持这种方法、并且此类输入转换是否有任何具体要求或限制?
    3. 多输入型号的 PTQ 流程:

      • 如果上述两项均受支持、您能否为每个案例提供特定的 PTQ 流程或步骤?

    我感谢你对这些问题的详细答复。

    谢谢您、
    Minwoo

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

    你好、柳明宇、

    假设您使用的是 TIDLP-RT 接口

    支持多个输入

    TIDL 支持多个输入、必须将所有输入连接在一起、并在模型编译期间提供单个文件作为输入

    输入格式调整:

    您可以调整以下参数以调整数据格式

    rawDataInElementType -应根据输入文件中的数据类型正确设置此选项(例如:如果是浮点、则为6)

    inElementType -这是您的模型所期望的输入的数据类型。 这可能与您在输入文件中输入的类型不同。 因此、通过正确设置这两个选项、您可以转换输入

    例如:设置  rawDataInElementType = 6和 inElementType = 0

    输入以浮点形式出现在输入文件中、然后我们将输入转换为 uint8 (TIDL 测试台具有进行此转换的数据转换代码)

    您还可以使用选项(addDataConvertToNet)在网络中添加数据垂直层-这种方式在 DSP 中进行数据转换、否则在 ARM 内核上进行数据转换。

    多输入模型的 PTQ 流程

    不需要处理多输入的具体选项、以上提到的选项应该足够了。

    有关 TIDLP-RT 选项的文档位于以下位置: https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_05_00_11/exports/docs/tidl_j721e_08_05_00_16/ti_dl/docs/user_guide_html/md_tidl_model_import.html 

    我们建议您使用 OSRT 界面编译模型-由于这会删除所有手动选项设置、因此在使用 OSRT 时、数据转换选项默认设置为。 下面是我们的 edgeai-tidl-tools 存储库链接  

    https://github.com/TexasInstruments/edgeai-tidl-tools/tree/master 

    如果您有任何其他问题、请告诉我。

    谢谢、

    Sai

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

    你好、Minwoo;

    TI 专家(Saideepak B.)是否回答了您的问题? 如果您仍有疑问、请告知我们或提交新 TT。

    谢谢。此致

    Wen Li