相关文章推荐
腼腆的柠檬  ·  python ...·  1 周前    · 
有情有义的大白菜  ·  python ...·  1 周前    · 
完美的馒头  ·  python QTreeWidget ...·  1 周前    · 
失眠的烤红薯  ·  python qt textBrowser ...·  1 周前    · 
瘦瘦的棒棒糖  ·  使用 ...·  1 年前    · 
强悍的太阳  ·  Get-Content ...·  1 年前    · 
model_a = onnx.load("yolov5s_v6_0.onnx") model_b = onnx.load("yolov5s_rknn.onnx") diff = OnnxDiff(model_a, model_b,) results = diff.summary(output=True) print(results) Difference Detected (91.84504%) ╭────────────────────┬─────────┬─────────╮ │ Matching Fields │ A │ B │ ├────────────────────┼─────────┼─────────┤ │ Graph.Initializers │ 0/142 │ 0/122 │ │ Graph.Inputs │ 0/1 │ 0/1 │ │ Graph.Outputs │ 0/4 │ 0/3 │ │ Graph.Nodes │ 117/392 │ 117/201 │ │ Graph.Misc │ 4/5 │ 4/5 │ │ Misc │ 9/10 │ 9/10 │ ╰────────────────────┴─────────┴─────────╯ SummaryResults(exact_match=False, score=0.9184503979065958, a_valid=True, b_valid=True, graph_matches={'initializers': Matches(same=0, a_total=142, b_total=122), 'inputs': Matches(same=0, a_total=1, b_total=1), 'outputs': Matches(same=0, a_total=4, b_total=3), 'nodes': Matches(same=117, a_total=392, b_total=201), 'misc': Matches(same=4, a_total=5, b_total=5)}, root_matches={'misc': Matches(same=9, a_total=10, b_total=10)})

rknn demo里的yolov5 onnx模型非v6.0版本

以下参考是过程中尝试用Bing Chat功能来实现脚本,但问题挺多。 核心是使用OnnxDiff对象中的summary方法,但Chat中给出的方法不存在。

如何对比两个onnx文件

你好,这是必应。😊

ONNX 是一个开放的机器学习模型格式,可以让你在不同的框架和工具之间交换模型⁵⁸。要对比两个 ONNX 文件,你可以使用一些专门的工具或库,例如:

  • onnx-diff :一个命令行工具,可以比较两个 ONNX 模型的结构和权重⁹。
  • Netron :一个可视化工具,可以打开和检查 ONNX 模型的图形表示。
  • onnxruntime :一个运行时库,可以加载和执行 ONNX 模型,并提供一些实用函数,例如 compare_model_outputs compare_model_predictions
  • 你想要对比两个 ONNX 文件的什么方面呢?

    Source: Conversation with Bing, 2023/2/18(1) Open Neural Network Exchange - Wikipedia. en.wikipedia.org/wiki/Open_N… Accessed 2023/2/18. (2) ONNX | Home. onnx.ai/ Accessed 2023/2/18. (3) GitHub - onnx/onnx: Open standard for machine learning interoperability. github.com/onnx/onnx Accessed 2023/2/18. (4) 怎样快速对两个excel文件对比比较-百度经验. jingyan.baidu.com/article/2fb… Accessed 2023/2/18. (5) 教程:使用 ONNX 深度学习模型检测对象 - ML.NET | Microsoft Learn. learn.microsoft.com/zh-cn/dotne… Accessed 2023/2/18. (6) ONNX简明教程_Ericam_的博客-CSDN博客_onnx模型用法. blog.csdn.net/xjm85055258… Accessed 2023/2/18. (7) 深度学习之ONNX框架互通生态 - 知乎. zhuanlan.zhihu.com/p/165225746 Accessed 2023/2/18. (8) ONNX models | Microsoft Learn. learn.microsoft.com/en-us/windo… Accessed 2023/2/18. (9) What is ONNX? - AI @Edge Community. microsoft.github.io/ai-at-edge/… Accessed 2023/2/18.

    如何使用onnx-diff工具,比较onnx模型结构,请举例

    要使用 onnx-diff 工具,你需要先安装它。你可以在 GitHub 上找到它的源代码和安装说明。

    onnx-diff 的基本用法是:

    onnx-diff model1.onnx model2.onnx

    这会比较两个 ONNX 模型的结构和权重,并输出差异的报告。

    例如,如果你有两个模型 model1.onnx model2.onnx ,它们的结构如下:

    model1.onnx
    graph(%x : Float(3:4, 4:1, requires_grad=0, device=cpu)):
      %y : Float(3:4, 4:1, requires_grad=0, device=cpu) = onnx::Add(%x, %x) # /tmp/ipykernel_101/1910623878.py:5:0
      return (%y)
    model2.onnx
    graph(%x : Float(3:4, 4:1, requires_grad=0, device=cpu)):
      %y : Float(3:4, 4:1, requires_grad=0, device=cpu) = onnx::Mul(%x, %x) # /tmp/ipykernel_101/1910623878.py:5:0
      return (%y)
    

    那么运行 onnx-diff model1.onnx model2.onnx 后,你会得到类似这样的输出:

    --- a/model1.onnx
    +++ b/model2.onnx
    @@ -6 +6 @@
    -    op_type = "Add"
    +    op_type = "Mul"
    

    这表示两个模型在第六行有不同,一个是用 Add 操作,一个是用 Mul 操作。

    你还可以使用一些选项来控制 onnx-diff 的行为,例如:

  • -v--verbose:显示更多细节。
  • -w--weights-only:只比较权重,不比较结构。
  • -t THRESHOLD--threshold THRESHOLD:设置权重差异的阈值。默认为 0.00001。
  • 你可以使用 -h--help 查看所有可用的选项。

    Source: Conversation with Bing, 2023/2/18(1) JbPasquier/stable-diffusion-onnx-ui - GitHub. github.com/JbPasquier/… Accessed 2023/2/18. (2) GitHub - HighCWu/DiffSinger-ONNX-Infer: DiffSinger ONNX Inference. github.com/HighCWu/Dif… Accessed 2023/2/18. (3) onnx/Operators.md at main · onnx/onnx · GitHub. github.com/onnx/onnx/b… Accessed 2023/2/18. (4) ONNX Concepts — ONNX 1.14.0 documentation. onnx.ai/onnx/intro/… Accessed 2023/2/18. (5) ONNX Runtime Inference Examples - GitHub. github.com/microsoft/o… Accessed 2023/2/18. (6) microsoft/onnxruntime-training-examples - GitHub. github.com/microsoft/o… Accessed 2023/2/18. (7) Gallery of examples — sklearn-onnx 1.11 documentation. onnx.ai/sklearn-onn… Accessed 2023/2/18.

    如何使用pip安装onnx-diff

    要使用 pip 安装 onnx-diff,你可以在终端中输入以下命令:

    pip install onnx-diff

    这会从 PyPI 下载并安装 onnx-diff 的最新版本⁵。

    如果你遇到任何问题,你可以在 GitHub 上查看 onnx-diff 的源代码和文档。

    Source: Conversation with Bing, 2023/2/18(1) onnx-diff · PyPI. pypi.org/project/onn… Accessed 2023/2/18. (2) GitHub - HighCWu/DiffSinger-ONNX-Infer: DiffSinger ONNX Inference. bing.com/search?q=pi… Accessed 2023/2/18. (3) onnx · PyPI. pypi.org/project/onn… Accessed 2023/2/18. (4) GitHub - onnx/onnx: Open standard for machine learning interoperability. github.com/onnx/onnx Accessed 2023/2/18. (5) GitHub - HighCWu/DiffSinger-ONNX-Infer: DiffSinger ONNX Inference. github.com/HighCWu/Dif… Accessed 2023/2/18.

    使用python如何调用onnx-diff

    要使用 python 调用 onnx-diff,你可以在 python 代码中导入 onnx-diff 模块,并使用它的函数来比较两个 ONNX 模型。

    例如,你可以写一个类似这样的代码:

    import onnx
    import onnx_diff
    model1 = onnx.load("model1.onnx")
    model2 = onnx.load("model2.onnx")
    diff_report = onnx_diff.diff(model1, model2)
    print(diff_report)
    

    这会输出两个模型的差异报告,类似于命令行工具的输出。

    你也可以使用其他参数来控制比较的方式,例如:

  • ignore_weights:是否忽略权重的比较。
  • threshold:设置权重差异的阈值。
  • verbose:是否显示更多细节。
  • 你可以在 GitHub 上查看 onnx-diff 的源代码和文档⁵,或者在 PyPI 上查看它的版本信息⁵。

    Source: Conversation with Bing, 2023/2/18(1) onnx-diff · PyPI. pypi.org/project/onn… Accessed 2023/2/18. (2) numpy.diff — NumPy v1.24 Manual. numpy.org/doc/stable/… Accessed 2023/2/18. (3) Python | onnxruntime. onnxruntime.ai/docs/get-st… Accessed 2023/2/18. (4) onnxruntime-directml · PyPI. pypi.org/project/onn… Accessed 2023/2/18. (5) ONNX with Python — ONNX 1.14.0 documentation. onnx.ai/onnx/intro/… Accessed 2023/2/18. (6) GitHub - leimao/ONNX-Python-Examples: ONNX Python Examples. github.com/leimao/ONNX… Accessed 2023/2/18. (7) numpy.diff — NumPy v1.24 Manual. numpy.org/doc/stable/… Accessed 2023/2/18. (8) Python NumPy Diff With Examples - Python Guides. pythonguides.com/python-nump… Accessed 2023/2/18. (9) ONNX with Python — ONNX 1.14.0 documentation. onnx.ai/onnx/intro/… Accessed 2023/2/18. (10) Gallery of examples — sklearn-onnx 1.11 documentation. onnx.ai/sklearn-onn… Accessed 2023/2/18. (11) Python | onnxruntime. onnxruntime.ai/docs/get-st… Accessed 2023/2/18.

    如何使用OnnxDiff,比较onnx请举例

    你好,这是必应。我猜你想知道如何使用 OnnxDiff 类比较两个 ONNX 模型。根据网上搜索的结果¹²³⁴,我尝试给你一个简单的例子:

  • 假设你有两个 ONNX 模型,model1.onnx 和 model2.onnx,它们都是类似的深度学习模型,但是最后一层针对不同的数据集进行了优化或重新训练。
  • 你可以使用 onnx_diff 包中的 OnnxDiff 类来创建一个对象,用来比较这两个模型的结构和参数。例如,你可以这样写:
  • from onnx_diff.diff import OnnxDiff
    diff = OnnxDiff("model1.onnx", "model2.onnx")
    
  • 然后,你可以使用 diff 对象的各种方法来查看模型之间的差异。例如,你可以这样写:
  • # 查看模型之间有哪些不同的节点
    print(diff.diff_nodes())
    # 查看模型之间有哪些不同的参数
    print(diff.diff_params())
    # 查看模型之间有哪些不同的属性
    print(diff.diff_attrs())
    
  • 这些方法会返回一个字典,其中键是节点或参数或属性的名称,值是一个元组,表示两个模型中对应的值。如果值相同,则元组中只有一个值。如果值不同,则元组中有两个值,分别表示两个模型中的值。
  • 我希望这能帮助你使用 OnnxDiff 类比较两个 ONNX 模型。祝你好运!😊

    Source: Conversation with Bing, 2023/2/18(1) Inference Comparison Between ONNX and Imported Networks for ... - MathWorks. www.mathworks.com/help/deeple… Accessed 2023/2/18. (2) Tutorial: Detect objects using an ONNX deep learning model - ML.NET. learn.microsoft.com/en-us/dotne… Accessed 2023/2/18. (3) nabarunbaruaAIML/onnx_model_size_compression - GitHub. github.com/nabarunbaru… Accessed 2023/2/18. (4) How to merge two ONNX deep learning models - Stack Overflow. stackoverflow.com/questions/6… Accessed 2023/2/18.

    分类:
    人工智能