基本信息
功能:使用可视化界面修改ONNX结构。
项目地址:https://github.com/ZhangGe6/onnx-modifier/tree/master
操作文档:https://github.com/ZhangGe6/onnx-modifier/blob/master/README_zh-CN.md
程序下载:百度网盘 请输入提取码(原始项目的操作文档中提供)
操作示例
本示例仅为PaddleOCRv2识别模型拆解为encoder、decoder两部分ONNX模型,其他功能参考操作文档,打开onnx-modifier.exe
:
删除节点
点击目标 切割节点(区分encoder和decoder的节点) Div
-> Delete with Children
-> Enter
从Div
节点起截断模型,Enter
为确定执行此次操作,并清除已删除节点,展示新的结构图。
删除节点之后的图结构,多了一些游离在图结构之外的子图或者孤立的节点,先不用管
添加encoder输出节点
修改节点输出名(可选)
保存ONNX模型
Download
为保存图结构,默认保存路径为 软件安装目录/modified_onnx/modified_<原始模型名>
, clean up
为清除无用节点和孤立的Constant
节点,删除节点会将已删除的节点权重变为游离状态的Constant
节点,若不勾选会在推理时报警——发现无用节点
弹出窗口则保存成功,后续通过netron
查看保存的ONNX模型结构正确,也没有游离在外围的无用节点
为防止文件被覆盖,添加_encoder
用以区分
拆解decoder
先删除Div
的前一个节点,使前半部分Encoder和后半部分Decoder断开
删除节点
因输入节点无 Delete with Children
选项,所以选择输入节点之后的Conv
节点,删除其及其子节点,之后点击Enter
修改decoder
输入节点
点击Div
节点,增加输入节点,此时只能修改输入shape
和dtype
(只代表此示例中)
选中p2o.Mul.47
可修改输入名:
导出模型
输入节点x
会自动清除
查看decoder
结构
这里decoder输入写错了,和上张图不同。
程序运行异常点
正常运行时,任务栏应该有两个任务项,如果只剩右侧,则程序出错,任何修改都无法保存,重新打开onnx-modifier.exe
,重新编辑ONNX即可。