利用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值