ONNX-Modifier 项目介绍
onnx-modifier
是一个专为 ONNX 模型编辑而设计的工具,旨在简化和加速模型编辑过程。传统上,编辑 ONNX 模型需要通过可视化模型图并借助 ONNX Python API 完成。这一过程不仅费时,而且每次修改后还需要重新进行可视化检查。为了解决这些问题,onnx-modifier
提供了一种全新的编辑方式,用户可以在完全可视化的界面中直接进行编辑,并即时预览编辑效果,大大提高了效率。
项目背景
ONNX 模型编辑的传统方式虽然功能强大,但由于需要编写代码并多次迭代检查结果,通常会消耗大量时间。onnx-modifier
通过将编辑过程与可视化预览相结合,简化了这一流程。用户可以在界面上专注于模型图的编辑,所有的编辑信息都会自动通过 Python ONNX API 处理和汇总,从而节省时间。
该工具基于流行的网络查看器 Netron 和轻量级的 Web 应用框架 Flask 构建,提供了一系列强大的功能来支持不同的编辑需求。
支持的编辑操作
onnx-modifier
支持多种编辑操作,其中包括:
- 删除节点
- 添加新节点
- 重命名节点的输入和输出
- 重命名模型的输入和输出
- 添加新的模型输出
- 添加新的模型输入
- 编辑模型输入形状
- 编辑节点属性
- 编辑模型的初始化器
使用指南
要使用 onnx-modifier
,有以下几种方法:
通过命令行启动
首先克隆项目仓库并安装必需的 Python 包:
git clone https://github.com/ZhangGe6/onnx-modifier.git
cd onnx-modifier
pip install -r requirements.txt
然后运行:
python app.py
点击 Flaks 生成的输出信息中的 URL(通常为 http://127.0.0.1:5000/
),onnx-modifier
将在 Web 浏览器中启动。
使用可执行文件启动
用户可以下载特定平台的可执行文件直接运行。在 Windows 平台上,可以从指定的网盘下载运行文件,双击即可启动。
通过 Docker 容器启动
也可以通过 Docker 容器来启动应用:
git clone git@github.com:ZhangGe6/onnx-modifier.git
cd onnx-modifier
docker build --file Dockerfile . -t onnx-modifier
构建完成后,映射 Docker 端口和本地文件夹来运行 onnx-modifier
:
mkdir -p modified_onnx
docker run -d -t \
--name onnx-modifier \
-u $(id -u ${USER}):$(id -g ${USER}) \
-v $(pwd)/modified_onnx:/modified_onnx \
-p 5000:5000 \
onnx-modifier
然后从浏览器访问 http://127.0.0.1:5000
。
具体功能介绍
以下是 onnx-modifier
的具体功能介绍:
删除节点
用户可以通过 Delete With Children
和 Delete Single Node
两种模式删除节点,支持单一节点删除和批量删除。
添加新节点
通过选择节点类型并点击 Add node
按钮,即可在图上添加一个新节点,并在侧栏中进行属性设置。
重命名节点和模型的输入/输出
可以通过简单的重命名来更改模型的计算路径或模型输出。
添加新的模型输出和输入
支持为指定节点设置新的模型输出,以及为模型添加新的输入。
编辑节点属性和初始化器
用户可以更改节点的属性值,也可以编辑模型初始化器中的值,包括加载外部的 numpy 文件数据。
适用示例模型
onnx-modifier
提供了多种示例模型以供测试使用,这些模型大部分来源于 ONNX 模型动物园。
项目发展与贡献
onnx-modifier
正在积极开发中,欢迎大家使用、提问题和贡献代码,帮助其成长。
致谢
onnx-modifier
的开发涉及多个开源项目,如 Netron、Flask 和 onnx-tool 等,这为项目的功能实现提供了重要支持。