利用onnxsim对onnx模型进行简化

百度大多推的是对固定维度的模型进行简化
这里记录一下,如何对动态batch的模型进行简化
模型简化的作用不再复述

一、简化固定维度的模型

import onnx
from onnxsim import simplify
 
ONNX_MODEL_PATH = './model.onnx'
ONNX_SIM_MODEL_PATH = './model_simple.onnx'
 
if __name__ == "__main__":
    onnx_model = onnx.load(ONNX_MODEL_PATH)
    onnx_sim_model, check = simplify(onnx_model)
    assert check, "Simplified ONNX model could not be validated"
    onnx.save(onnx_sim_model, ONNX_SIM_MODEL_PATH)
    print('ONNX file simplified!')

二、对动态batch的onnx模型进行简化

onnsim已经支持了动态batch模型的简化过程
一下两个参数可以设置动态batch模型

  • dynamic_input_shape
  • input_shapes
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""                  
*  * *** *  * *  *      
*  *  *   **  *  *             
****  *   **  *  *                 
*  *  *   **  *  *         
*  * **  *  * ****                

@File    : simpleOnnx.py
@Date    : 2022/10/11/011
@Require :
@Author  : https://blog.csdn.net/hjxu2016
@Funtion : 简化动态batch的onnx模型

"""

import onnx
from onnxsim import simplify

ONNX_MODEL_PATH = './model.onnx'
ONNX_SIM_MODEL_PATH = './model_simple.onnx'

if __name__ == "__main__":
    onnx_model = onnx.load(ONNX_MODEL_PATH)

    onnx_sim_model, check = simplify(onnx_model, dynamic_input_shape=True,
                                      input_shapes={"images":[1, 3, 224, 224]}) # 0.4版本,需要把1改成-1
    assert check, "Simplified ONNX model could not be validated"
    onnx.save(onnx_sim_model, ONNX_SIM_MODEL_PATH)
    print('ONNX file simplified!')

参考文献

https://github.com/daquexian/onnx-simplifier/issues/117

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下命令行来简化ONNX模型: ```python import onnx from onnxsim import simplify ONNX_MODEL_PATH = './model.onnx' ONNX_SIM_MODEL_PATH = './model_simple.onnx' if __name__ == "__main__": onnx_model = onnx.load(ONNX_MODEL_PATH) onnx_sim_model, check = simplify(onnx_model) assert check, "Simplified ONNX model could not be validated" onnx.save(onnx_sim_model, ONNX_SIM_MODEL_PATH) print('ONNX file simplified!') ``` 如果您要简化动态batch的ONNX模型,可以使用以下命令行: ```python import onnx from onnxsim import simplify ONNX_MODEL_PATH = './model.onnx' ONNX_SIM_MODEL_PATH = './model_simple.onnx' if __name__ == "__main__": onnx_model = onnx.load(ONNX_MODEL_PATH) onnx_sim_model, check = simplify(onnx_model, dynamic_input_shape=True, input_shapes={"images":\[1, 3, 224, 224\]}) assert check, "Simplified ONNX model could not be validated" onnx.save(onnx_sim_model, ONNX_SIM_MODEL_PATH) print('ONNX file simplified!') ``` 这些命令行使用了`onnxsim`库来简化ONNX模型。您需要将`ONNX_MODEL_PATH`替换为您的原始模型路径,将`ONNX_SIM_MODEL_PATH`替换为简化后的模型保存路径。如果您要简化动态batch的模型,可以将`dynamic_input_shape`设置为`True`,并使用`input_shapes`参数指定输入的形状。 #### 引用[.reference_title] - *1* *2* [利用onnxsimonnx模型进行简化](https://blog.csdn.net/hjxu2016/article/details/127265957)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [转换&优化 onnx模型](https://blog.csdn.net/weixin_41521681/article/details/112744642)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值