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.

[参考译文] 如何使用 edgeai-tidl-tools python 示例将 onnx 模型转换为 TIDL 格式模型(.bin)?

Guru**** 2485965 points
Other Parts Discussed in Thread: AM68A

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1264819/how-can-i-convert-onnx-models-to-tidl-format-models-bin-using-edgeai-tidl-tools-python-examples

主题中讨论的其他器件:AM68A

嗨,我正在使用 edgeai-tidl-tools python 示例来转换我的 onx 模型,因为我的模型中有一些不受支持的层。 我的目标是获取可以在 TDA4上部署的 TIDL 格式模型。 是否可以仅使用 edgeai-tidl-tools python 示例来实现该目标、或者需要使用 SDK 等进一步的步骤? 此外、是否有必要为要转换的每个模型准备输入数据?

谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否可以仅使用 edgeai-tidl-tools python 示例来实现这一目标,

    是的、不支持的层将在 ARM 内核上运行、支持的层将在目标内核上加速。

    Unknown 说:
    是否需要执行诸如使用 SDK 之类的更多步骤?

    请详细说明您想在这里说什么?

    是否需要为要转换的每个模型准备输入数据?

    在这里讨论校准图像数据集吗?

    --

    普拉蒂克

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

    感谢您的回复。 我的输出文件仅包含 onnx 模型和 param.yml、因此我想知道我应该执行任何其他步骤。

    在这里讨论校准图像数据集吗?

    是的、就像这里的图片。 我的一些模型使用.raw 作为输入、可能需要在我的代码中进行一些修改

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

    首先、

    您编译了模型吗? 想知道这里的输出是什么吗? (请注意、发布模型编译后、您将获得.bin 文件)

    我们建议研究我们提供的自定义模型编译服务、基于 OSRT Python 的示例应该是不错的起点。

    链接: https://github.com/TexasInstruments/edgeai-tidl-tools

    如上所述、校准图像集必须为.JPG。 对于星型、您可以使用标准图像集、确保编译流程是正确的发布、以便您可以添加项目特定的图像。

    ——

    普拉蒂克

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

    首先、我使用示例模型运行 python3 onnxrt_ep.py -c、然后接收错误 AttributeError:'InferenceSession'对象没有属性'get_TI_benchmark_data'。

    $ python3 onnxrt_ep.py -c
    可用的执行提供程序: ['CPUExecutionProvider']

    运行3个模型-["cl-ort-resnet18-v1"、"ss-ort-deeplabv3lite_mobilenetv2"、"od-ort-ssd-lite_mobilenetv2_FPN"]


    Running_Model : cl-ort-resnet18-v1  

    2023年08月30日13:59:41.886917739 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer4.0.downsample.1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.886949872 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer4.0.bn2.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.886959369 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer4.1.bn2.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.886968699 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer2.0.bn1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.886978354 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer1.1.bn2.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.886986088 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer3.0.bn2.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.886994853 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer1.0.bn2.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887002689 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer1.1.bn1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887010527 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer2.0.downsample.1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887025392 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer1.0.bn1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887033408 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer2.0.bn2.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887041167 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer4.1.bn1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887048805 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer4.0.bn1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887057007 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer3.1.bn2.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887065078 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer2.1.bn2.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887072849 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'bn1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887081862 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer2.1.bn1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887090648 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer3.0.bn1.num_socs_tracked'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887099232 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer3.0.downsample.1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    2023年08月30日13:59:41.887107099 [W:onnxruntime:、graph.cc:3543 CleanUnusedInitializersAndNodeArgs] Removing initializer 'layer3.1.bn1.num_batches_traced'。 它不被任何节点使用、应从模型中删除。
    回溯(最近的调用最后):
     文件"/media/tsingyueliu/1e871d72-bcd5-485f-99b4-e0a85ce8bf1d/edgeai-tidl-tools/examples/osrt_python/ort/onnxrt_ep.py "、第281行、位于
       RUN_MODEL (model、mIdx)
     文件/media/tsingyueliu/1e871d72-bcd5-485f-99b4-e0a85ce8bf1d/edgeai-tidl-tools/examples/osrt_python/ort/onnxrt_ep.py、第201行、位于 run_model 中
       imgs、output、proc_time、sub_graph_time、height、 宽度 = INFER_IMAGE (Sess、INPUT_IMAGES、CONFIG)
     文件/media/tsingyueliu/1e871d72-bcd5-485f-99b4-e0a85ce8bf1d/edgeai-tidl-tools/examples/osrt_python/ort/onnxrt_ep.py、第121行、位于 infer_image 中
       copy_time、sub_graphs_proc_time、totaltime = get_benchmark_output (sess)
     文件"get_benchmark_output "/media/tsingyueliu/1e871d72-bcd5-485f-99b4-e0a85ce8bf1d/edgeai-tidl-tools/examples/osrt_python/ort/onnxrt_ep.py "、第70行
       benchmark_dict =解释器.get_TI_benchmark_data ()
    AttributeError:'InferenceSession'对象没有属性'get_TI_benchmark_data'

     然后我注释了这些行,代码工作,但我没有收到 bin 文件。

    # copy_time、sub_graphs_proc_time、totaltime = get_benchmark_output (sess)
    # proc_time = totaltime - copy_time
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正如我所怀疑的那样、  

    您的模型编译没有正确完成。

    您正在使用哪个 SDK ? 标准支持的型号应能正常工作。

    您能否再次查看环境设置说明?

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

    感谢您的回复、我使用的是 rel_8_6版本、SOC=am62。 在我替换 python 之后

    从3.9到3.6、然后再次设置 env、python3 onnxrt_ep.py -c 可以运行而不出现任何错误。 但是、输出文件夹中仍然只有 onnx 文件和 param.YAML。 我的环境中是否仍有一些问题?

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

    这似乎有问题。

    例如:如果你编译 cl-ort-resnet18-v1生成的工件应该看起来像  

    191_tidl_io_1.bin 191_tidl_net.bin allowedNode.txt onnxrtMetaData.txt param.YAML resnet18_opset9.onnx tempDir

    尽管如此、请设置 Docker 容器并告知我们是否仍然存在此问题(我们建议仔细阅读文档)

    https://github.com/TexasInstruments/edgeai-tidl-tools/blob/master/docs/advanced_setup.md#docker-based-setup-for-x86_pc

    --

    普拉蒂克

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

    我尝试按照这个文档中的步骤操作、但是在运行 setup.sh 时遇到一些错误。

    Version = master、SOC = am68a、我是否应该在这些步骤之前执行其他设置?

    正在收集 github.com/.../tidl-j7.zip (来自-r ./requirements_pc.txt (第4行)
     下载 github.com/.../tidl-j7.zip
        | 11.4MB 1.2MB/s 0:00:09
     正在安装构建依赖项... 完成
     正在获取构建车轮的要求... 错误
     错误:子进程已退出并出错
     
     ×获得制造车轮的要求未成功运行。
     │退出代码:1
     ╰─>[18行输出]
         回溯(最近的调用最后):
           文件"/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py "、第363行、位于
             主要()
           文件"/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py "、主代码中的第345行
             json_out['refturn_val']= hook (**HOOK_INPUT['kwargs'])
           文件"get_requires_for_build_wheel 中的第130行"/usr/lib/python3/dist-packages/pip/_vendor/pep517/in_process/_in_process.py "
             返回挂钩(CONFIG_SETTINGS)
           get_requirements_for_build_wheel 中的文件/usr/lib/python3/dist-packages/setuptools/build_meta.py 第162行
             返回 self._get_build_requires(
           _get_build_requires 中的文件"/usr/lib/python3/dist-packages/setuptools/build_meta.py "、第143行
             self.run_setup ()
           文件"Run_setup "中的第267行"/usr/lib/python3/dist-packages/setuptools/build_meta.py "
             super (_BuildMetaLegacyBackend、
           文件"run_setup "中的第158行"/usr/lib/python3/dist-packages/setuptools/build_meta.py "
             exec(compile (code、__file__、'exec')、locales())
           文件"setup.py"、第86行、位于
             断言 CMAKE、"找不到"cmake"可执行文件!"
         AssertionError:找不到"cmake"可执行文件!
         [输出结束]
     
     注意:此错误源于子流程、可能不是 pip 问题。
    错误:子进程已退出并出错

    ×获得制造车轮的要求未成功运行。
    │退出代码:1
    ╰─>请参阅上文了解输出。

    注意:此错误源于子流程、可能不是 pip 问题。
    要求已满足: pybind11[global] in /usr/local/lib/python3.10/dist-packages (2.11.1)
    已满足要求:/usr/local/lib/python3.10/dist-packages 中的 pybind11-global=2.11.1 (来自 pybind11[global])(2.11.1)
    警告:以"root"用户身份运行 pip 可能导致权限损坏和系统软件包管理器的行为冲突。 建议改用虚拟环境: pip.pypa.io/.../venv
    正在安装 python osrt 软件包...
    警告:以"root"用户身份运行 pip 可能导致权限损坏和系统软件包管理器的行为冲突。 建议改用虚拟环境: pip.pypa.io/.../venv
    警告:以"root"用户身份运行 pip 可能导致权限损坏和系统软件包管理器的行为冲突。 建议改用虚拟环境: pip.pypa.io/.../venv
    警告:以"root"用户身份运行 pip 可能导致权限损坏和系统软件包管理器的行为冲突。 建议改用虚拟环境: pip.pypa.io/.../venv
    警告:以"root"用户身份运行 pip 可能导致权限损坏和系统软件包管理器的行为冲突。 建议改用虚拟环境: pip.pypa.io/.../venv
    正在下载 AM68A SOC 的 tidl 工具...
    Bash: wget:找不到命令
    tar (子项):tidl_tools.tar.gz:无法打开:没有这样的文件或目录
    tar (子级):错误不可恢复:现在退出
    TAR:儿童返回状态2
    tar:错误不可恢复:立即退出
    Bash: CD: tidl_tools:没有这样的文件或目录
    Bash: wget:找不到命令
    tar: gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz : cannot open : no such file or directory
    tar:错误不可恢复:立即退出
    Bash: wget:找不到命令
    chmod:无法访问"ti_cgt_c7000_3.1.0.sts_linux-x64_installer.bin":没有此类文件或目录
    Bash:./ti_cgt_c7000_3.1.0.sts_linux-x64_installer.bin:没有此类文件或目录
    安装: onnxruntime
    Bash: wget:找不到命令
    tar: onnx_1.7.0_x86_64 _u22.tar.gz:无法打开:没有这样的文件或目录
    tar:错误不可恢复:立即退出
    Bash:cd:onnx_1.7.0_x86_u22:没有这样的文件或目录
    rm:无法删除"onnx_1.7.0_x86_u22.tar.gz":没有这样的文件或目录
    安装:tflite_2.8
    Bash: wget:找不到命令
    tar: tflite_2.8_x86_u22.tar.gz:无法打开:没有这样的文件或目录
    tar:错误不可恢复:立即退出
    tar: tflite_2.8_x86_u22.tar.gz:无法打开:没有这样的文件或目录
    tar:错误不可恢复:立即退出
    rm:无法删除"tflite_2.8_x86_u22.tar.gz":没有这样的文件或目录
    安装:OpenCV
    Bash: wget:找不到命令
    tar: OpenCV_4.2.0_x86_64 _u22.tar.gz:无法打开:没有这样的文件或目录
    tar:错误不可恢复:立即退出
    rm:无法删除"OpenCV_4.2.0_x86_u22.tar.gz":没有这样的文件或目录
    安装:DLR
    Bash: wget:找不到命令
    tar: dlr_1.10.0_x86_u22.tar.gz:无法打开:没有这样的文件或目录
    tar:错误不可恢复:立即退出
    rm:无法删除"dlr_1.10.0_x86_u22.tar.gz":没有这样的文件或目录

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

    您好!

    如果您已设置 Docker 容器,请告知我?

    您是否能够遵循同一文档? 如果有任何问题、请告诉我们。

    --

    普拉蒂克

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

    您好、我安装了一些软件包后、此问题已得到解决、谢谢!
    这些是我在 Docker 容器中安装的软件包。


    apt-get install build-Essential cmake
    APT 安装 wget
    apt-get 安装 Git
    apt-get install protobuf-compiler libprotoc-dev

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

    很高兴听到这个消息。

    如果您的实验有任何问题、我们建议创建新主题。

    谢谢您发布了问题。

    关闭此问题。

    --

    普拉蒂克