📘 ONNX 实战课
30章 · 从入门到部署
🧩 模型结构解析
v1.0
01
ONNX初探:什么是ONNX?为什么需要ONNX?ONNX在AI部署中的生态位。
生态位 · 跨框架
02
环境搭建:安装ONNX、ONNX Runtime、Protobuf,验证环境是否可用。
工具链 · 验证
03
模型导出实战:从PyTorch导出ONNX模型(torch.onnx.export),常见参数详解。
PyTorch · 导出
04
模型导出实战:从TensorFlow导出ONNX模型(tf2onnx),踩坑与兼容性处理。
TensorFlow · 兼容
05
模型结构初识:使用Netron可视化工具,看懂ONNX模型的图结构(Graph)。
Netron · 可视化
06
模型结构初识:ONNX的六大核心概念——Model、Graph、Node、Initializer、ValueInfo、Tensor。
核心概念 · 六要素
07
模型结构解析:使用Python读取ONNX模型(onnx.load),遍历Node节点。
Python · 遍历
08
模型结构解析:深入Node——理解OpType、Input、Output、Attribute。
Node · 属性
09
模型结构解析:解析Initializer——权重与偏置的存储与提取。
权重 · 偏置
10
模型结构解析:解析ValueInfo——输入输出张量的形状与数据类型。
张量形状 · 类型
11
模型结构修改:修改Node属性(Attribute),以修改卷积核大小为例。
属性修改 · 卷积
12
模型结构修改:增删Node节点,实现模型剪枝或结构替换。
剪枝 · 节点增删
13
模型结构修改:修改Input/Output名称,适配不同部署框架的接口要求。
重命名 · 接口适配
14
模型结构修改:实战案例——为ONNX模型添加预处理/后处理节点。
预处理 · 后处理
15
模型调试基础:ONNX Runtime的安装与使用,运行一个简单的ONNX模型推理。
Runtime · 推理
16
模型调试基础:对比PyTorch/TF与ONNX Runtime的输出,验证数值一致性。
数值对比 · 一致性
17
模型调试进阶:使用onnxruntime.ExecutionProvider切换CPU/CUDA/TensorRT后端。
后端切换 · 加速
18
模型调试进阶:设置Session Options,优化推理性能(线程数、内存模式)。
性能优化 · Session
19
模型调试进阶:捕获并分析ONNX Runtime的日志与错误信息。
日志 · 错误分析
20
模型调试进阶:使用onnxruntime.InferenceSession进行动态形状(Dynamic Shape)推理。
动态形状 · 推理
21
模型调试工具:使用onnx.checker检查模型合法性,修复常见结构错误。
合法性检查 · 修复
22
模型调试工具:使用onnx.shape_inference推断并修复缺失的形状信息。
形状推断 · 修复
23
模型调试工具:使用onnx.helper手动构建一个简单的ONNX模型(加法/卷积)。
手动构建 · 加法卷积
24
模型调试工具:使用onnx.optimizer优化模型,减少冗余操作(Op Fusion)。
优化 · Op Fusion
25
模型调试工具:使用onnxsim(onnx-simplifier)简化模型,消除不必要的节点。
简化 · 消除冗余
26
模型调试工具:使用Polygraphy进行模型精度分析与调试。
精度分析 · Polygraphy
27
模型调试工具:使用ONNX GraphSurgeon进行高级图编辑与自定义Pass。
图编辑 · GraphSurgeon
28
模型部署实战:将ONNX模型部署到ONNX Runtime,编写高效的推理服务。
部署 · 推理服务
29
模型部署实战:将ONNX模型转换为TensorRT引擎,实现GPU加速推理。
TensorRT · GPU加速
30
综合案例:从PyTorch训练到ONNX部署全流程——图像分类模型的完整落地。
全流程 · 图像分类