ONNX 的核心原理

ONNX:

把不同深度学习框架里的模型,统一描述成一种标准的计算图。

YOLO模型原来是PyTorch的yolo.pt,里面包含:

网络结构和权重

导出ONNX后,会把Pytorch中的网络计算过程转换成ONNX能理解的标准结构。

ONNX模型主要包含三类东西:

计算图:规定数据按什么顺序流动。

算子:例如Conv、Add、Mul、Concat、Resize。

参数/权重:例如卷积核权重、Bias等。

ONNX本质上不是一个训练框架,而更像一个中间标准格式。

Pytorch-->.pt-->.onnx--> TensoRT/openVINO/Sophon/ONNX Runtime

它解决的问题是不同框架、不同硬件之间直接转换很麻烦。ONN在中间充当翻译。

拿一个简单卷积网络来说,PyTorch的代码可能是:

x = conv(x)

x = relu(x)

x = pool(x)

导出ONNX后,不再关心这段PyTorch Python代码,而变成:

Input

↓

Conv

↓

Relu

↓

MaxPool

↓

Output

部署框架读取这个计算图,就知道先做卷积、再做激活、再做池化。

因此,ONNX的运行逻辑就是:

输入 Tensor

↓

按照计算图执行算子

↓

读取模型权重参与计算

↓

生成中间 Tensor

↓

继续执行下一个算子

↓

最终输出

相关推荐
坐吃山猪3 分钟前
果蝇AI06-Mac部署实操
人工智能·深度学习·机器学习·果蝇ai
微尘hjx4 分钟前
【Deep-OC-SORT 02】多轨迹算法Deep-OC-SORT-相对 OC-SORT 的改进点
人工智能·算法·yolo·目标跟踪·视觉检测·ultralytics·deep-oc-sort
梦帮科技5 分钟前
意识启发式量子隧穿退火算法用于全局优化 (CITA) 完整技术指南
网络·人工智能·算法·量子计算·模拟退火算法
波儿菜10 分钟前
Xcode MCP 助力运行时二进制分析
人工智能·程序员·汇编语言
Vol火山26 分钟前
从买工具到建能力:数字化部门如何把 AI 变成可复制的生产力
人工智能
莱茶荼菜28 分钟前
【slam公式】
人工智能·线性代数·机器学习
Henry-SAP37 分钟前
SAP PP中的核心业务流程——离散制造、重复制造、流程制造三大模式解析
前端·数据库·人工智能·制造
Zhao-Jichao1 小时前
AI Prompting for Everyone 课程笔记 - P20 实验与期末项目 Lab and Final Project
前端·人工智能·笔记
敢敢のwings1 小时前
TACDYN-WAM 深度解读:机器人如何预测接触变化,并据此生成动作
人工智能·机器学习·机器人
沉默王二1 小时前
阿里版Codex,再次惊艳到我了。
人工智能·openai·agent