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.

[参考译文] TIDL 模型性能比 Caffe-Jacinto 差很多

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/664397/tidl-model-performance-a-lot-worse-than-caffe-jacinto

您好!

我想在 TDA2XEVM 板上运行语义分割模型。 我已经使用 TI Cityscapes 数据集对 Caffe-Jacinto 模型进行了培训、并使用模型转换工具将其转换为 TIDL 模型。 我已经将量化位设置为12。

Caffe 模型的分割结果明显更好。 示例。 这是输入测试图像:

我想在此图中将车辆分段出去。

如果是 Caffemodel、NN 的预测输出如下:

而斑点是识别汽车的像素。

TIDL 模型中 NN 的预测输出如下:

如您所见、当从 Caffe 转换为 TIDL 时、同一个模型(可能具有最高的量化精度)的性能要差得多。

您能指导我如何纠正这种情况吗? 在此处连接模型、输入和输出:

e2e.ti.com/.../caffe_5F00_tidl_5F00_diff.zip

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

    下面的主题中回答了类似的问题、请参阅

    e2e.ti.com/.../2441557


    谢谢、此致、
    Kumar.D
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您还发现导入步骤中的差异。 请按照以下帖子中描述的调试步骤进行操作
    e2e.ti.com/support/arm/automotive_processors/f/1021/p/663395/2437798#2437798

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

    在发布问题之前、我完成了第一个主题。
    正如您在该线程中提到的、由于我的精度在最高量化位设置时不是很好、我共享了 Caffe 和 TIDL 模型。
    您是否可以分析模型并确定精度降低的原因?

    至于您的第二条评论、我不遵循导入步骤中您的意思。 请指导我。

    谢谢、
    Bhargav
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bargav:
    导入工具会生成与每个图层(包括最后一个(输出)图层)的输出相对应的跟踪文件。 导入步骤中生成的输出是否与咖啡因类似。? 如果这个输出与咖啡因输出有很大不同、那么我们需要按照第二篇文章中提到的步骤操作。

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

    e2e.ti.com/.../664397.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bargav:
    我相信您的导入步骤没有正确的参数(输入和格式)。 我可以成功导入您的模型并在导入期间获得正确的输出。 在器件的推理过程中、我也会期待类似的输出。 您能否尝试使用附加的输入并在上一个帖子中导入配置文件。

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

    您好、Kumar、

    我使用您的输入和 cfg 文件生成了 TIDL 模型。 但输出仍然与 Caffemodel 不同。 这是新模型的输出:

    如您所见、未检测到最右侧的车辆。 您能否共享您的模型和 param bin 文件、您可以使用这些文件获得上述输出?

    谢谢、

    Bhargav

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bargav:
    我已在我的最新代码库(不完全是最新版本01.00)上试用了您的模型。 我们最近修复了几个错误、因此我共享的输出可能不完全匹配。 这些大修复程序将是下一版本的一部分。

    BTW、您是否在器件上的推理或导入步骤中获得了上述输出?

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

    上述输出来自器件上的推理。 如何在导入步骤中检查输出?

    此外、如果您可以共享您的网络和参数箱、并且输出更好、至少我们可以确定我的旧版本 TIDL 转换工具存在问题。

    谢谢、
    Bhargav
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bhargav:
    导入步骤输出位于:ti_dl\utils\tidlModelImport\tempDir\stats_tool_out.bin
    从我的最新代码导入的 net 和 param 将与您使用的 TIDL 版本不兼容。

    此致、
    Kumar.D
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    stats_tool_out.bin 的格式是什么? 我尝试了 RGB、但没有显示任何有意义的内容。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它的原始传感器。 每个数据元素一个字节。 在这种情况下、它是512x256字节的数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    啊、好的。 导入统计数据输出似乎正在检测右侧的汽车。 那么、这是推理的问题。
    我已经尝试使用 TIDL v0.08和 v1.0生成模型。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Braagav、
    现在、您需要设置正确的边距和历史参数、如以下文章中所述。
    e2e.ti.com/.../2441557

    平路机、
    Kumar.D
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何"推理期间"设置这些参数?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    按照相关的红色部分中所述设置以下变量。
    createParams.quantHistoryParam1 = 10
    createParams.quantHistoryParam2 = 10
    createParams.quantMargin = 10.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我知道了、但您是否打算将这些设置添加到配置文件中并再次生成 TIDL 模型?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这些参数不是任何配置文件的一部分。 这只能在等中心代码中设置。 请在推理代码中搜索这些自变量捆以进行初始化。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供信息库马尔。

    我将历史参数设置为10、并尝试将裕度从10增加到30。 但我得到的结果相同、即右侧的汽车仍然未被检测到。

    我是否应该进一步增加裕度。

    以下是 chains_semSeg.c 中的代码片段(语义分割演示用例):

    静态空 semSegInit (chains_semSegAppObj *pObj)
    {
    /*读取网络文件*/
    chains_tidlReadNet(&pObj->pAlgCreateParams->net、NET_bin_file);
    
    /*为网络分配内存*/
    chains_tidlAllocNetParamsMem(&pObj->pCreateAlgParams->net);
    
    /*填写新参数*/
    chains_tidlFillNetParamsMem(&pObj->pCreateAlgParams->net、Params_bin_file);
    
    pObj->pCreateAlgParams->quantHistoryParam1 = 10;
    pObj->pCreateAlgParams->quantHistoryParam2=10;
    pObj->pCreateAlgParams->quantMargin = 30;
    
    /*初始化 OCMC 的所有3个实例*/
    utils_cbufOcmcInit (utils_OCMC_RAM1);
    utils_cbufOcmcInit (utils_OCMC_RAM2);
    utils_cbufOcmcInit (utils_OCMC_RAM3);
    
    SystemLink_registerHandler (semSegfileIOHandler);
    }
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请参阅以下中提到的主题、获取与导入相同的结果

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

    通过将历史记录和边距参数设置为0、我可以为上述图像获取结果模拟器到 Caffe 模型。 这是预期吗?

    看起来与此主题中的结果相同: e2e.ti.com/.../
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的。 这是预期的。

    我们建议在视频序列测试时使用以下参数(仅测试一个图像设置零即可)。

    createParams.quantHistoryParam1 = 10;
    createParams.quantHistoryParam2 = 10;
    createParams.quantMargin = 10;