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:如何在模型导入期间实现输入/输出的 HWC 布局

Guru**** 2458720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1475458/tda4vm-how-to-achieve-hwc-layout-for-input-output-during-model-import

器件型号:TDA4VM

工具与软件:

SDK 版本:tidl_j721e_08_04_00_16

我们将尝试使用 HWC 布局作为模型输入/输出。 但是、由于模型 在 TIDL-RT 中仍在 CHW 模式下运行、因此在模型导入期间需要数据转换层。

我们在 https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_00_00_12/exports/docs/tidl_j7_08_00_00_10/ti_dl/docs/user_guide_html/md_tidl_model_import.html 中找到了以下配置

但是、我们在遵循用户指南中提供的配置方面没有取得很好的成功。 此外、我注意到 SDK 中提供的示例addDataConvertToNet=3使用了该设置、这似乎与用户指南中所述的设置大不相同。

您能否澄清以下几点:

1)如何配置模型导入设置、以实现 HWC 输入和输出?

2) 2)addDataConvertToNet具体而言、价值3是什么意思?

3) 3)是否可以实现 HWC 输入和 CHW 输出(反之亦然)? 如果是、我们应该如何配置导入设置?

谢谢!

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

    您好;我们将很快为您提供数据转换信息。

    谢谢。此致

    文立

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

    您好、Yu、

    OSRT 没有执行此类转换的选项;您需要在网络中添加转置层来执行此操作。

    谢谢!

    Chris

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

    Chris、您好!

    我们已经通过添加转置操作在 EdgeAI SDK 中实现了这一点。

    但是、EdgeAI SDK 仅支持8.6及以上版本。 您能否提供有关如何在 SDK 8.4中实现此功能的说明?

    在 SDK 8.4的说明中、转置仅作为 Pixelshuffle 图层的一部分受支持 、并且"如果未使用 DetectionOut 图层、则不允许使用 Permute & PriorBox & Reshape。 您必须在 TIDL-RT 之外实现它们全部。"

    此致、
    Yu。

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

    你(们)好

    [报价用户 id="489331" url="~/support/processors-group/processors/f/processors-forum/1475458/tda4vm-how-to-achieve-hwc-layout-for-input-output-during-model-import "]

    1)如何配置模型导入设置、以实现 HWC 输入和输出?

    [报价]

    addDataConvertToNet=3是适合此操作的选项、此外、您应该  在导入配置文件中提到 inLayout 和 outLayout 为1

    [报价用户 id="489331" url="~/support/processors-group/processors/f/processors-forum/1475458/tda4vm-how-to-achieve-hwc-layout-for-input-output-during-model-import "]

    2) 2)addDataConvertToNet具体而言、价值3是什么意思?

    [报价]

    值3表示数据转换层应同时添加到网络的输入和输出

    [报价用户 id="489331" url="~/support/processors-group/processors/f/processors-forum/1475458/tda4vm-how-to-achieve-hwc-layout-for-input-output-during-model-import "]

    3) 3)是否可以实现 HWC 输入和 CHW 输出(反之亦然)? 如果是、我们应该如何配置导入设置?

    [报价]

    TIDL 始终以 CHW 格式工作、但用户可以 提供 HWC 输入、也可以获取 HWC 输出、如第一个答案中所述。

    此致、

    Anshu

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

    尊敬的 Anshu:  

    这是否意味着 TIDL 支持 chw 或 hwc 中的所有输入输出、但不支持不同布局中的输入和输出? 客户的需求只能通过添加转置到模型来完成?

    此致、
    Adam

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

    尊敬的 Anshu:

    感谢您的答复。

    我们以前试过这种设置、我刚刚再次进行了试验。 导入模型时会导致以下错误:

    模型无法在 EVM 上运行。

    您对此有什么见解吗?

    此致、

    Yu。

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

    您好、Adam、

    这是否意味着 TIDL 支持 chw 或 hwc 中的所有输入输出、但不支持不同布局中的输入和输出? 客户的需求只能通过添加转置到模型来实现?

    addDataConvertToNet 是位字段、可以有以下值:  

    addDataConvertToNet = 0 (不会向网络添加数据转换)

    addDataConvertToNet = 1 (数据转换层 将只添加到网络的输入中)

    addDataConvertToNet =2 (数据转换层将只添加到网络的输出中)

    addDataConvertToNet =3 (数据隐蔽层将同时添加到网络的输入和输出)

      例如、如果客户用例是网络的输入为 HWC 且输出为 CHW、则只需设置 addDataConvertToNet = 1 且 inLayout = 1  


    此致、

    Anshu

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

    尊敬的 Anshu:

    感谢您的讲解!

    我们还尝试了设置addDataConvertToNet = 2outLayout = 1、这应该会产生 CHW 输入和 HWC 输出。 但是、在8位模式下导入模型时、遇到了与之前回复中提到的相同的错误。

    此致、

    Yu。

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

    您好、Yu、

      您能否共享导入配置文件?


    此致、

    Anshu

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

    modelType = 2
    numParamBits = 8
    InputNetFile ="..//../test/testvecs/models/motovis/onnx/phase_backbone_v9.onnx
    outputNetFile ="..//../test/testvecs/config/tidl_models/onnx/stage1_hwc.bin
    outputParamsFile ="..//../test/testvecs/config/tidl_models/onnx/stage1_hwc_
    inDataNorm = 1
    inMean = 128 128
    缩放= 0.003921568627 0.003921568627 0.003921568627 0.003921568627
    inDataFormat = 0
    InWidth = 640
    InHeight = 384
    inNumChannels = 3
    帧数= 16
    inData ="../../test/testvecs/input/bev/backbone/list.txt
    perfSimConfig =../../test/testvecs/config/import/device_config.cfg
    quantizationStyle = 3
    calibrationOption = 0
    inElementType = 0
    postProcType = 0
    FoldPreBnConv2D = 0
    #添加数据转换层的标志
    addDataConvertToNet = 2
    outLayout = 1

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

    您好、Yu、

    关于该线程的一个基本问题是、您可以转至更新的版本吗?   您正在使用的版本已有三年历史、我们不再支持它。  我们将尽 最大努力做到这一点、但我们可能没有完全解决您问题的基础设施。   

    Chris

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

    Chris、您好!

    关于深度学习、我们在 SDK 9.2、10.0和10.1版本方面拥有丰富的经验、尤其是在使用 EdgeAI 方面。 在 SDK 10.0中、我们成功利用了转置层、并对 HWC 输入/输出进行了一些定制修改

    然而、这个项目目前是基于 SDK 8.4。 升级到较新的版本需要我们公司内部和客户双方的多个团队付出巨大的努力。 此外、这种升级可能会导致车辆的 OTA 交货时间表出现延迟。

    出于这些原因、我们提出了这个问题、并正在与 TIDL 团队积极讨论可能的解决方案。

    此致、
    Yu。

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

    您好、Yu、

    您是在器件上运行还是在仿真模式下运行仿真?  我想我从您的屏幕截图中看到了这两个示例。  您使用什么来运行此(命令行)?

    此致、

    Chris

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

    Chris、您好!

    上面的屏幕截图显示了使用命令行在 SDK 8.4中导入模型(32位到8位)时出现的错误。 尽管出现了错误、但仍然生成了模型 bin 文件、但它无法在器件和仿真模式下运行。

    • 仿真模式错误:
      Error at line: 810 in file /opt/Jenkins_OUT/workspace/J7_TIDL_Parent/c7x-mma-tidl/ti_dl/release/tidl_j721e_08_04_00_16/ti_dl/test/src/pc_linux/../tidl_tb_utils.c, of function: tidl_tb_dataConvert
    • 器件上错误:
      TIDL_RT_OVX: ERROR: Verifying TIDL graph ... Failed !!! TIDL_RT_OVX: ERROR: Verify OpenVX graph failed

    此致、
    Yu。

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

    我现在有点困惑。  该线程的最初点是尝试 按照原生 TIDL CWH 顺序加载 HWC 模型。  Anshu 提出了一种方法来执行此操作、但似乎模型未导入。  它曾经导入过吗?   在中止后具有.bin 文件并不意味着模型已导入。  它可能部分通过失败、并且 model-artifacts 中仅有一个部分.bin 文件。   

     几个问题

    1. 您的模型是否曾在8.4上导入(没有错误)?
    2. 您能在8.4中运行模型吗?
    3. Tommy Song 发送给 Anshu 的 TI_HWC_DEBUG.7z 是否仍然是要测试的有效模型?
    4. Anshu 是否解决了您的张量订单问题? 如果是、模型加载问题应该是一个新的线程。

    此致、
    Chris

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

    Chris、您好!

    1.否(导入上一个回复中显示的 erros )

    2.否(尝试的 bin 文件有导入错误,如你所说,它可能是部分的和毫无价值)

    3.  TI_HWC_DEBUG.7z 包含 onnx 文件、calibratoon 设置和导入配置。 它是有效的、不包含任何 bin 文件。

    4.否,与之前的回复一样,任何配置在导入模型时都将出现错误。

    此致、

    Yu。

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

    您好、Yu、

    因此、您现在的主要目标是导入模型。  对吧?  张量顺序是后面的问题。  在本线程中、我们将研究如何使8.x TIDL 上导入的模型正常工作。  订单问题 需要单独处理。

    如果上述陈述准确、我将着手导入您的模型。

    Chris

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

    Chris、您好!

    我想澄清一个误解。 当我提到模型无法导入时、我的意思是无法导入 Anshu 建议的任何设置。 在不尝试实现 HWC 输出的情况下、该模型在8.4 SDK 上导入并运行时没有问题。 仅当使用专门针对 HWC 输出的建议设置时才会出现错误。

    此外,按照您的建议,我们还在努力说服项目团队将 SDK 更新到10.x 版

    如果您需要更多详细信息、请告诉我。

    此致、
    Yu Chen

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

    您能给我发送一个将会导入的模型版本吗?  一个是您100%确定导入没有错误。  我想设置电平。  然后查看导入和非导入模型之间的差值。

    谢谢!

    Chris  

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

    Chris、您好!

    onnx 模式与  TI_hw_debug.7z 中的相同。 区别在于导入配置。

    添加以下设置时、无法导入。 如果没有此零件、模型可以成功导入。

    #添加数据转换层的标志
    addDataConvertToNet = 2
    outLayout = 1

    此致、

    Yu。

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

    尊敬的所有人:

    我想与您分享一个最新动态。 我们收到了项目/客户的新要求、这需要在网络中添加转置和重新塑造图层。

    正如我所了解的、SDK 8.4不支持这些操作。 为了解决这个问题、我们已促使项目团队将 SDK 升级到10.x 版

    鉴于这种情况、我们当前的优先事项是将 SDK 从8.4升级到10.1、这种情况现在可视为已关闭。

    再次感谢您的支持!

    此致、
    Yu