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.

[参考译文] PROCESSOR-SDK-J721S2:使用 SDK 版本 j721s2-evm-09_01进行模型转换时出错

Guru**** 2407550 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1474363/processor-sdk-j721s2-error-occurred-during-model-conversion-using-sdk-version-j721s2-evm-09_01

器件型号:PROCESSOR-SDK-J721S2

工具与软件:

您好、TI 专家:

使用 j721e-evm-08_02 SDK 工具进行模型转换时、没有错误、并成功生成了两个 bin 文件。 但是、在使用 j721s2-EVM-09_01版本和 j721s2-EVM-10_01版本 SDK 进行模型转换时、会出现一个错误:浮点异常(内核转储)。我想知道如何使用 j721s2-EVM-09_01版本或 j721s2-EVM-10_01版本生成两个 bin 文件。

我试图删除模型末尾的 depthtosPace 节点、然后模型转换不再报告错误。 这是因为 j721s2-evm-09_01版本和 j721s2-evm-10_01 versio  SDK 不支持 depthtosPace 运算符吗?

随附的 error_09_01.txt 是 j721s2-evm-09_01错误消息、error_10_01.txt 是 j721s2-evm-10_01错误消息、quicksrnet.zip 是原始 onnx 模型、 onnx_remove_d2s.zip 是不带 depthtosPace 的 onnx 模型。

ONNx 型号删除了 D2S

原始 onnx 模型

ERROR_09_01

ERROR_10_01

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

    您好!

    感谢您的咨询和附件。  DepthToSpace 在9.01和10.01中是受支持的运算符。  在10.01文档(此处)中、我们提到这个层只有在卷积层之后才是最佳的。  当 depthToSpace 不在卷积层之后(问题 ID TIDL-4329)时、似乎存在一个已知问题(不仅仅是次优化)。  我正在检查此问题是否有已知的解决方法。  

    此致!

    会的

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

    您好;

    我们已下载您的模型并尝试运行它们。 但是、我们遇到了一些问题、无法重现您报告的结果。

    以下是我们结束时的更新:

    我已经在"model_configs.py"中添加了一个函数""quicksrnet_large_2x":create_model_config"、并使用 python ONNX 脚本(onnxrt_ep.py)对其进行编译。  

    但 TIDL 编译无法完成。  

    您可以提供您的脚本、还是仅提供"creat_model_config"部分。 我们可以重现您的问题。

      下面是我的这个、您的模型已被命名为"quicksrnet_Large_2x":

    ======================================================================

    "quicksrnet_LARGE_2x":create_model_config (
    source=AttrDict (
    #model_url="/models_base_path/quicksrnet_LARGE_2x_TJ_512_640_v6_sim_opt11.onnx"、
    INFORE_SHAPE=真、
    )、
    preprocess=AttrDict (
    大小调整=256、
    CROP=224、
    DATA_LOADY="NCHW"、
    resize_with_pad=False、
    REVERSE_CHANNELS=False、
    )、
    Session=AttrDict (
    Session_name="onnxrt"、
    #model_path=os.path.join (models_base_path、"quicksrnet_LARGE_2x_TJ_512_640_v6_sim_opset11.onnx")、
    model_path=os.path.join ("quicksrnet_LARGE_2x_TJ_512_640_v6_sim_opset11.onnx"/home/root)、
    input_mean=[123.675,116116.28,103.53]、
    INPUT_SCALE=[0.017125、0.017507、0.017429]
    Input_optimization=True、
    )、
    task_type="分类"、
    EXTRA_INFO=AttrDict (num_images=numImages、num_classs=1000)、
    )、

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

    尊敬的 Wen:

    请尝试以下更改、并将模型放入"模型/公共"。 还请删除 onnxrt_ep.py 中的后处理。

    +
    +"TEST_model1":create_model_config (
    + source=AttrDict (
    + model_url="dummy"、
    + infer_shape=True、
    +)、
    + preprocess=AttrDict (
    + resize=256,
    + CROP=224,
    + data_layout="nchW"、
    + resize_with_pad=False、
    + REVERSE_CHANNELS=False、
    +)、
    + session=AttrDict (
    + Session_name="onnxrt"、
    + model_path=os.path.join (models_base_path、"xxx.onnx")、
    + input_mean=[123.675,116116.28,103.53]、
    + INPUT_SCALE=[0.017125、0.017507、0.017429]、
    + input_optimization=True、
    +)、
    + task_type="分类"、
    + EXTRA_INFO=AttrDict (num_images=numImages、num_classs=1000)、
    +)、

    此致

    Joe

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Joe;
    我的 model_path 与下载的模型所在的位置匹配。 但根据您的输入、我会将它们放入"models/public"目录。 但是、它没有区别。  
    我还注意到、这在您的错误消息日志文件中。 看起来您正在使用10_00_02版本。 因此、我恢复了10_00_02并重写模型配置。 模型编译仍然无法通过。  
    请查看我为旧格式和新格式编写的 python 代码。
    您使用的确切版本是什么? 您是否可以尝试新版本10_01_00_01?
    看起来与您的模型相关。 请告诉我们您是如何通过编译的、因为我们对您的模型和 python 脚本知之甚少。
    如果不成功编译模型、就没有必要更改模型。
    根据下面的代码,你可以看到我已经尝试了你的两个模型.
    //旧格式从10_00_01开始
    # Wli:添加以下 custmer 型号进行测试
    'test_model1':{
    'odel_path': os.path.join (models_base_path ,'quicksrnet_LARGE_2x_TJ_512_640_v6_sim_opset11.onnx'),
    #"source":{'model_url':'git.ti.com/.../resnet18_opset9.onnx','opt': true,'infer_shape': true},
    'MEN':[123.675,116116.28,103.53]
    "量程":[0.0171250.017507、0.017429]
    'num_images': numImages,
    'NUM_CLASSES_': 1000,
    'Session_name':'onnxrt',
    'MODEL_TYPE':'Classification'
    }、

    'test_Model2':{
    "odel_path"os.path.join (models_base_path"quicksrnet_LARGE_2x_tj_512_640_v6_sim_opset11_noD2S.onnx")
    #"source":{'model_url':'git.ti.com/.../resnet18_opset9.onnx','opt': true,'infer_shape': true},
    'MEN':[123.675,116116.28,103.53]
    "量程":[0.0171250.017507、0.017429]
    'num_images': numImages,
    'NUM_CLASSES_': 1000,
    'Session_name':'onnxrt',
    'MODEL_TYPE':'Classification'
    }、
    //新格式
    # Wli:以下是客户测试模型
    "test_model1":create_model_config (
    source=AttrDict (
    model_url="dummy"、
    INFORE_SHAPE=真、
    )、
    preprocess=AttrDict (
    大小调整=256、
    CROP=224、
    DATA_LOADY="NCHW"、
    resize_with_pad=False、
    REVERSE_CHANNELS=False、
    )、
    Session=AttrDict (
    Session_name="onnxrt"、
    model_path=os.path.join (models_base_path、"quicksrnet_LARGE_2x_TJ_512_640_v6_sim_opset11.onnx")、
    input_mean=[123.675,116116.28,103.53]、
    INPUT_SCALE=[0.017125、0.017507、0.017429]
    Input_optimization=True、
    )、
    task_type="分类"、
    EXTRA_INFO=AttrDict (num_images=numImages、num_classs=1000)、
    )、

    "TEST_Model2":create_model_config (
    source=AttrDict (
    model_url="dummy"、
    INFORE_SHAPE=真、
    )、
    preprocess=AttrDict (
    大小调整=256、
    CROP=224、
    DATA_LOADY="NCHW"、
    resize_with_pad=False、
    REVERSE_CHANNELS=False、
    )、
    Session=AttrDict (
    Session_name="onnxrt"、
    model_path=os.path.join (models_base_path、"quicksrnet_LARGE_2x_TJ_512_640_v6_sim_opset11_noD2S.onnx")、
    input_mean=[123.675,116116.28,103.53]、
    INPUT_SCALE=[0.017125、0.017507、0.017429]
    Input_optimization=True、
    )、
    task_type="分类"、
    EXTRA_INFO=AttrDict (num_images=numImages、num_classs=1000)、
    )、
    //以下是编译挂起的两个屏幕截图;对于两个不同版本的软件
    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Joe;

    在这里进行校正。  

    我现在刚刚通过了 test_Model2 (noD2S)模型编译。 这花了很长的时间,但它通过了。 很抱歉输入错误信息。

    将随时向您通报最新情况。

    谢谢。此致

      

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

    您好、Joe。
    当前 TIDL 中不支持 DepthToSpace 运算符、但作为一种变通方法、您可以将 depthToSpace 运算符转换为以下整形和转置组合:

    如果您不喜欢按照上述建议进行 Onx 修改、我们可以为您提供实用程序。

    您可以在 主 TexasInstruments/edgeai-tidl-tools··GitHub 上的 edgeai-tidl-tools/docs/version_compatibility_table.MD中参阅版本兼容性表。 我们使用以下组合进行了测试、它可以正常工作:

    此致、

    Gourav

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

    您好、Joe。
    我们通过 SDK 9.1提供了一个补丁来启用相同的模型:

    链接: tidrive.ext.ti.com/.../89f78c08-37c9-49a4-9b92-c39b5246eba7

    密码: A (1RVv1H

    上面的补丁使用 与 SDK 9.1兼容的10_01_03_00 TIDL 工具。 以上链接中的自述文件详细介绍了如何使用补丁(请注意您需要在导入配置中设置的 c7xFirmwareVersion)。 我们还介绍了如何  在使用 TIDL 进行编译之前转换模型、从而获取受支持的转置模式、而不是 D2S (在功能上等效)-这是当前版本中的必要步骤(我还在已验证的同一链接中上传了转换后的模型、并导入和推断配置)。 请尝试使用补丁、如果在应用时遇到任何问题(或在任何步骤中)、请告诉我

    谢谢!

    SAI

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

    Joe -另外、如果您使用的是最新的 SDK:10.1、则只需 在模型编译前运行 ONNX 优化器(github.com/.../tidl_onnx_model_optimizer)  

    此致、
    Varun