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.

[参考译文] J722SXH01EVM:TIDL 量化中的最小/最大范围计算

Guru**** 2665185 points

Other Parts Discussed in Thread: AM67A

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1584532/j722sxh01evm-min-max-range-calculation-in-tidl-quantization

器件型号: J722SXH01EVM
主题中讨论的其他器件: AM67A

您好:  

我对 TIDL 量化过程中用于计算最小/最大范围的方法有疑问。 (edgeai-tidl-tools 10_00_08_00、SOC=am67a)
我目前正在使用一个由[INPUT -> Relu -> OUTPUT]组成的简单 ONNX 模型进行测试。
1.当使用 numFrames=1 进行测试,并提供一个填充值为 50 的单输入张量时,输出最小/最大范围计算为:最小 50 ,最大 50。 (这是意料之中的)
2.然而,当使用 numFrames=2 进行测试,并提供由两个串联张量(一个填充 50 ,另一个填充 100 )组成的输入时,得到的输出最小/最大范围计算为最小 75,最大 75。 (我预计范围为最小值 50、最大值 100)。

我附加了样本 onnx、import txt、输入二进制文件。

relu-sample.tar 

当 numFrames=2 或更多时、您能否解释在这种特定情况下如何进行范围计算? 我想了解最小值 75 和最大值 75 的机制。

此外、如果我想配置 TIDL、以便在量化范围内使用在所有输入帧上观察到的最小/最大范围、您能否建议使用合适的 TIDL 配置参数及其所需的值?

此致、
杨海恩

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

    嗨、杨海恩:

    请参阅以下指南来设置范围和比例因子。

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j721s2/08_04_00_06/exports/docs/tidl_j721s2_08_04_00_16/ti_dl/docs/user_guide_html/md_tidl_fsg_steps_to_debug_mismatch.html#did_tidl_debug_fimage_norm_2

    此致、

    Chris

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

    您好、Chris、

    感谢您发送指南。 我已经查看了文档、但找不到用于禁用多个输入帧的平均方法的特定参数设置。

    使用多帧运行校准时、每个图层激活的最小/最大范围似乎是使用平均或移动平均 (quantRangeUpdateFactor) 方法计算的。

    为确保在整个多个输入帧集内全局确定和保持最小/最大范围、建议的参数设置或配置是什么?

    此致、
    YoungHeon

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

    尊敬的 YounHeon:

    您是否查看过以下内容:

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_02_00_05/exports/docs/tidl_j721e_08_02_00_11/ti_dl/docs/user_guide_html/md_tidl_model_import.html

    存在:

    校准选项

    WeightRangeMethod

    以及您可以传递来影响范围计算的其他选项。  默认为直方图、这可能是您得到 75 的原因。

    此致、

    Chris

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

    您好、Chris、

    是的、我已经查看了您分享并进行了测试的页面。
    即使更改校准选项值并设置 percentileActRangeShrick=0 和 percentileWtRangeShrick=0、最小/最大范围也是相同的。

    在我之前附加的示例中、当 numFrames=2 时、输入值仅由 50 和 100 组成。
    因此、不能从直方图中得出值 75。

    这就是为什么我假设在对多个帧进行计算时、距离计算可能是使用平均值或移动平均值。
    如果此假设正确、我想知道如何直接使用全局最小值/最大值、而不是多帧的平均值。

    此致、
    杨海恩

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

    嗨、杨海恩:

    我正在运行您的示例、我有几个问题。
    1.为什么需要 quantParams.prototxt?  这导致 TIDL 绕过校准。

    2.您如何确定最小值/最大值是关闭的?  

    通过查看输入和输出数据、我只会在较高的输入值下看到一些削波、但与您之前介绍的内容完全不同。

    从 sample_input.bin 输入数据:

    [50 50 50 50 ...50 50 50 50][50
    50 50 ...50 50 50][50
    50 50 ...50 50 50]...[50 50 50
    ...50
    50][50
    50 50
    50 ...50 50][50 50 50 ...50 50]]
    第 1 帧[100 100 100 ...100 100 100][100 100 100 100 ...100 100 100 100][100 100 100 100...100 100 100 100 100][100 100 100 100 100 100 ...100 100 100 100 100 100
    
    
    
    
    100 ...100 100 100][100 100 100
    ...100 100 100]]
    第 2 帧[[150 150
    150 150 ...150 150 150 150][150 150
    150 ...150 150 150 150][150 150 150 150
    
    ...150 150 150 150]...[150
    150 150 150 150 ...150 150 150]]
    
    
    
    第 3 帧[150 150 150 150 150 ...150 150 150 150 150 150]][200 200 200200 ...200 200 200 200 200][200 200 200 200 200 200] 200 200]...[200 200
    
    200 200 ...200 200 200]
    [200 200 200
    ...200 200 200][200 200 200 ...200 200 200]]
    第 4 帧[250 250
    250 ...250 250 250][250 250 250 250 ...250 250 250]
    [250 250 250 250 ...250 250 250][250 250 250 250 250 250 ...250 250
    
    250][250 250 250 250 250 250 250]
    
    

     

    从 tidl_out.bin 输出数据:

    Out frame 0 [[50 50
    50 ... 50 50 50 50 ]
    [50 50 50 ... 50 50 50 50 ][50
    
    50 50 ... 50 50 50
    50
    ][50 50 50 ... 50 50 50 50
    
    
    ][50 50
    ... 50 50 50 ][ 50 50 ... 50 50 50 ]] Out frame 1 [99 99 99 ... 99 99 99 99 99 99 99 99 99 99 99 .. 99 99 99 99 99 99 99 99 99 99 99 ... 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99 99
    
    99…
    99 99 99 99 99 99…99 99 99 99…99 99 99 99 ]
    
    [ 149 149 149…149 149 149 149 149 149
    ][ 149 149 149 149 149
    …149 149 149 149 149 149 ]
    
    [ 149 149 149
    
    
    
    …149 149 149 198 198 198 [149 149 149…149 149 149 149 149 ][ 149 149 149 149 149 149…149 198 198 198 198 198 198 198 . 198 198 198 198 198
    
    [198 198 198 198 .. 198 198 .
    198 198 . 198 198 198
    198 ][198 198 198 198 198 . 198 198 198 198 ]]
    
    [ 198 198 . 198 198 198 198 198 ]]
    - Out frame 4 [248 248 248 248 ...248 248 248 248 248 248 ][248 248 248 248 248 248 248 248 248 248 248 248 248
    
    
    ][248 248 248 248 248 248 248 248 248 248 248 248 248 248
    

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

    您好、Chris、

    我很抱歉耽误你的时间。

    1. 我分享了保存的 quantparams.prototxt 作为量化结果,而不是要加载的配置文件。

    2.我为 Relu 示例道歉。 这是一个不适当的样本、未能模拟预期结果。 准备好后、我将提供一个实际案例示例。

    此致、
    杨海恩