ONNX-模型简化-模型结构查看

安装 ONNX: pip install onnx
注意事项: 模型转换过程中注意onnx版本问题

1. 自定义OP问题
    问题:yolov5 - 自定义的Focus在转换为onnx过程中会被拆分成很多细小的操作 - 导致推理速度变慢
    解决:1、删除Focus模块 2、选用卷积 + 最大池化替换掉 以节省后期推理效率
    注意:精度下降 - 速度上升
    脚下留心: 设计算法尽量减少自定义组件

2. 后处理问题
    问题:梯度优化器 - NMS
    解决:在转换模型的时候屏蔽掉后处理部分即可,在推理时构建算法后处理部分即可

3. ONNX模型精简 - onnx-simplifier
    问题:模型中很简单的东西在转换为onnx之后,显示出来的静态图非常不利于查看
    解决:使用 onnx-simplifier 简化模型静态图
    安装:pip install onnx-simplifier

模型查看网址: https://netron.app/ 

"""
    安装 ONNX: pip install onnx
    注意事项: 模型转换过程中注意onnx版本问题
    ONNX-部署篇
    1. 自定义OP问题
            问题:yolov5 - 自定义的Focus在转换为onnx过程中会被拆分成很多细小的操作 - 导致推理速度变慢
            解决:1、删除Focus模块 2、选用卷积 + 最大池化替换掉 以节省后期推理效率
            注意:精度下降 - 速度上升
            脚下留心: 设计算法尽量减少自定义组件
    2. 后处理问题
            问题:梯度优化器 - NMS
            解决:在转换模型的时候屏蔽掉后处理部分即可,在推理时构建算法后处理部分即可

    3. ONNX模型精简 - onnx-simplifier
            问题:模型中很简单的东西在转换为onnx之后,显示出来的静态图非常不利于查看
            解决:使用 onnx-simplifier 简化模型静态图
            安装:pip install onnx-simplifier


"""
import onnx
from onnxsim import simplify


def onnx_op(model_path, save_path):
    """
            查看onnx节点

        inputs
        ------
        model_path   str  模型路径

        outputs
        -------
        save_path    str  简化模型保存流经

    """
    print('模型静态图开始简化')
    model_onnx = onnx.load_model(model_path)
    model_smi, check = simplify(model_onnx)
    onnx.save(model_smi, save_path)
    print('模型静态图简化完成')


def model_show(model_path):
    """
        模型结构参数显示  pip install netron
    """
    import netron
    netron.start(model_path)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值