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:有关充分提高校准精度的指南。

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1569354/tda4vm-guidelines-on-maximizing-accuracy-from-calibration

器件型号:TDA4VM


工具/软件:

您好、

我试着将模型量化为 8 位。 以下是我要使用的参数:

numParamBits    = 8
numFeatureBits   = 8
分位数 Style = 3
校准选项= 7

我使用 10、50,100 张图像测试了 3 次不同的迭代、并观察到当我使用 50 张图像后 10 张图像时、结果最好。 当我使用 100 张图片时、我的 F1 分数下降~8%。

我已经仔细检查了测试集中没有明显的分类不平衡。

我使用过其他校准选项 (16、32、13)、但在使用混合精度与 CalibrationOption 作为 7 时、我获得了最佳结果。 我也尝试了不同的量化样式,但我得到了
最佳结果 3.

当我从 32 位移动到 8 位时,会有显著的 F1 分数损失(最佳结果为~20%,即 50 个校准图像)

您能否告诉我、哪些因素导致通过校准获得良好的分数?

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

    尊敬的 Akshat:

    您能否共享您的模型和正在使用的完整导入配置?  

    当我使用 50 张图像后按 10
    显示效果最好

    为了确保我理解、您是否使用 50 个图像进行校准、然后在 10 个图像上运行推理? 此外、您用于推理的图像是在用于校准的图像中找到的、还是完全不同的图像?

    此外、您使用的是哪个版本的 TIDL/SDK?

    其他一些因素包括:如果您的模型是从 0-1 进行训练的、则使用 inQuantFactor、以及在 8 位中实施的某些层是否会导致精度损失。 有许多不同的因素,我只能在我能够运行你的模型,我的最后调查更好的评论。  

    此致、

    Christina

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

    您好、

    抱歉、我无法为您提供模型。

    我在所有 3 次迭代(1000 张图像)中都保持了推断大小不变。 我只是运行 3 个不同的测试、其中有不同数量的校准图像 (10、50 和 100)、其余的一切都是相同的。

    我使用的是 SDK 8.2。  


    我还在这 3 项测试中进行了内部混合精度测试。 我基本上添加了模型的每一层、与 16 位相比、在理想情况下仍然损失了~10%。

    这是我的导入文件:


    modelType      = 2
    numParamBits    = 8
    numFeatureBits   = 8
    分位数 Style = 3
    校准选项= 7
    inputNetFile     =“../../test/testvecs/pmsa/models/model.onnx
    outputNetFile    =“../../test/testvecs/pmsa/import/output/8_bit_all_rgb_duplicates_removed_100_calib/8_bit_all_rgb_duplicates_removed_100_calib.bin
    outputParamsFile =“../../test/testvecs/pmsa/import/output/8_bit_all_rgb_duplicates_removed_100_calib/8_bit_all_rgb_duplicates_removed_100_calib_paramfile
    inDataNorm = 1
    inMean = 118.065 120.615 124.185
    磅秤= 0.024978 0.024357 0.023068
    InWidth = 512
    InHeight = 320
    inNumChannels = 3
    inDataFormat = 1
    inFileFormat = 2
    writeOutput = 2
    outputFeature16bitNamesList =“模型的所有图层“
    inData =  ../../test/testvecs/proj/input/lists/calib_list.txt
    outDataNamesList =“hm、wh、reg“

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

    尊敬的 Akshat:

    8.2 是一个非常旧的 SDK 版本、自此我们修复了多个错误/改进。 此问题很可能在较新的版本中得到修复。 您是否可以升级到更新的版本?  

    此致、

    Christina

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

    尊敬的 Christina

    由于某些限制、我无法更改我的 SDK 版本。 是否可以在 8.2 SDK 上推断在较新的 SDK 版本中导入和校准的模型?   

    如果没有、请告诉我是否有一条关于图像性质的指南、我们应该使用该指南进行校准。

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

    尊敬的 Akshat:

    由于 SDK 8.2 非常旧、因此我们最新 SDK 没有反向端口兼容版本。 有关此版本支持的更多信息、请联系您当地的 FAE。

     关于校准、本指南涉及: 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_fsg_quantization.html

    此致、

    Christina