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:有关 TIDL 仿真的问题。 输入为10通道浮点原始数据

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1027116/tda4vm-problem-about-tidl-simulation-the-input-is-10-channel-float-raw-data

器件型号:TDA4VM

大家好、我对 TIDL 仿真有一些问题。

我们的模型的输入是1x10x128x512浮点原始数据、而不是图像。 首先、我们在 TIDL 上以 float32测试模型、TIDL 的输出与 py火炬 相同。 然后、我们在 Int16中测试我们的模型、我们发现 TIDL 的输出与 py火炬 有很大不同。 我们认为问题是输入数据。 因为我们的输入数据是 float32、所以当在 TIDL 中测试 float32和 Int16模型时、输入将会不同。

您能给我们一些解决此问题的建议吗? 在导入和测试 TIDL 模型时、我们是否需要设置一些额外的命令?

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

    您好、bro、问题是否已解决? 我遇到了同样的问题、您是否有任何解决方案来解决该问题? 请分享。

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

    不、我们还没有解决问题。

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

    大家好、yizhao、我已经解决了这个问题。 您需要修改两个位置。

    (1) 在 tidl_tb_utils.c 中的 tidl_ReadNetInput 函数中、添加以下代码

    if (params->inFileFormat  =  1)
       元件大小字节 =  tidltb_getDatElementSize (ioPrms->rawDataInElementTyp[numBuffs]);
      char  ponitcloudFileName[500]
      getFileNameAndIdxFromList((char*)params->inData、framCount、numBuffs、ponitcloudFileName);
      readRawFeatureData (ponitcloudFileName、(float32_tidl  *) ins[numBuffs]->ptr、 c、w、h、  sizeof (float));
     readRawFeatureData 如下所示
    int32_t readRawFeatureData (char  *文件名、 void  * ptr、 int16_t  n、 int16_t  width、 int16_t  height、  int32_t  elemSize)
      TI_file  * fptr  =  FOPEN (文件名、 "rb");
       int32_t freadStatus  =  FREAD (ptr、elemSize、n  * width  * height、fptr);
       if (freadStatus != (宽度 * 高度 * n  * elemSize))
       {
          返回 0
       }
       返回 1

    在测试目录中、重新编译代码
    使 target_platform=PC
    (2)参考以下导入配置、尝试不同的 inQuantFactor、在本例中、inQuantFactor = 64能够生成正确的结果
    modelType = 2.
    numParamBits = 8
    numFeatureBits = 8
    inputNetFile ="../../test/testvecs/models/public/onnx/polaris/model.onnx
    outputNetFile ="../../test/testvecs/config/tidl_models/onnx/tidl_net_model.bin
    outputParamsFile ="../../test/testvecs/config/tidl_models/onnx/tidl_io_model_
    InWidth = 1024
    InHeight = 320
    inNumChannels = 8

    inQuantFactor = 64

    rawDataInElementType = 6.

    InElementType = 1.
    元件类型= 1
    inFileFormat = 1.
    inData =./../test/testvecs/config/feature.txt
    enableHighResOptimization = 1.
    enableLayerPerfTraces = 1.
    PostProcType = 0
    NumFrames = 10
    perfSimConfig =./../test/testvecs/config/import/device_config.cfg

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

    推理过程中、TIDL 的输入数据应位于定点8位或16位。 Float32位模式仅用于验证。

    以下参数可用于输入文件是否与模型执行时间不同的情况

    rawDataInElementType 此参数仅在 inFileFormat 为1并指示原始文件格式时适用。 当这2个元件不同时、TIDM-RT 测试台执行从 rawDataInElementType 到 InElementType 的转换。
    "支持的值包括:
    0:无符号字符
    1:签名字符
    2:无符号短整型
    3:签署简短声明
    6:浮动

    software-dl.ti.com/.../md_tidl_sample_test.html

    BTW、我们 建议 使用 开源运行时 API 以避免出现此类问题。

    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/usergroup0.html

    有关相同和示例(PYTHY/C++)的更多详细信息、请单击此处

    github.com/.../edgeai-tidl-tools