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.

[参考译文] TDA4VEN-Q1:关于 Superpoint 算法的输出张量问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1641815/tda4ven-q1-regarding-the-issue-with-the-output-tensor-of-the-superpoint-algorithm

器件型号: TDA4VEN-Q1

您好、我们正在开发自己的应用、方法是引用 dl_demos 存储库、并 io.bin  net.bin 通过 TIDL 节点调用 Superpoint 模型(通过和文件)以进行关键点检测。 在此过程中、我们遇到了以下问题、感谢您的支持:

  1. 模型输出张量的尺寸不匹配。
  2. 模型的输出张量的数据类型不匹配。

详细说明和验证过程:
1.我们已经确认,我们的 ONNX 模型的输出是:

  • 张量 1:  float32 [1x65x30x30]
  • 张量 2:  float32 [1x256x30x30]
    如下图所示image.png
  • 2.我们验证了在使用 TI 的预打包可执行文件 TI_DEVICE_armv8_test_dl_algo_host_rt.out 调用 Superpoint 模型时、生成的 out.bin 文件大小正好是 [(65×30×30) + (256×30×30)] × 4 bytes。 这与 ONNX 模型的输出规格相匹配、可以成功解析数据。

    3.然而,在开发我们的应用程序时,从二进制文件中提取的输出张量的维度和数据类型一致:

    • 张量 1:  int16 [1x65x45x30]
    • 张量 2:  int16 [1x256x45x30]

    主要问题:
    a.  padB=15 将出现一个意外参数、将空间维度从转换 30x30 为 45x30。   在 ONNX 到二进制转换期间、我们没有配置任何填充相关参数。

    • 是否预计会出现这种行为?
    • 如果有效、我们应该如何处理此输出? 我们  是否应该简单地修整填充的 15 行(即放弃额外的空间维度)?

    B. 张量数据类型从 float32 (ONNX 输出)更改为 int16,因此不清楚如何正确解释这些值。

    具体的代码和结果如下图所示:

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

    您好、张:

    模型输出张量的尺寸不匹配。

    这是预期结果、因为 tidl 将向输入和输出缓冲器添加一些填充、具体在以下链接中进行记录:
    https://github.com/TexasInstruments/edgeai-tidl-tools/blob/11_02_07_00/docs/io_tensors.md#padding

    您必须解析 subgraph_0_tidl_io_1.bin 文件中的填充信息并相应地分配张量,onnxrt 在内部处理所有这些限制,因此您可以从 onnxrt 获得精确的输出。

    模型输出张量的数据类型不匹配。

    类似地检查模型的编译工件的 subgraph_0_tidl_net.bin.html 文件这将显示将在 tidl 中运行的图层,检查该图层中输出层的数据类型。


    如果 DATA_LAYER 之前的输出层为 int16_t 类型、那么您将得到该类型作为输出。

    如果仍需要浮点输出、则在编译期间必须添加 data_convert_ops

    这将在输出端添加 DATA_CONVERT 层、然后您将获得 float32 输出。

    同样、此类型转换由 onnxrt 在内部进行、但在 tidlrt 中不进行。

    您可以参考一些 vision_apps 演示、了解如何为 tidlrt 应用解析输入和输出张量。
    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/11_01_00_04/exports/docs/vision_apps/docs/user_guide/DL_DEMOS.html

    此致、
    Gokul