ONNX 是什么?
一、ONNX 是什么?
ONNX
全称:
Open Neural Network Exchange
开放神经网络交换格式
简单说:
👉 一种统一的 AI 模型文件格式
类似:
-
.jpg是图片格式 -
.mp4是视频格式 -
.docx是文档格式 -
.onnx是神经网络模型格式
二、为什么要有 ONNX?
问题是:
不同框架训练的模型不能互通。
比如:
-
PyTorch → 生成
.pt -
TensorFlow → 生成
.pb
这些格式互相不认。
ONNX 的作用:
👉 作为“中间标准格式”
👉 让模型可以跨框架运行
三、YOLOv5 导出 ONNX 是干什么?
你现在训练或下载的是:
yolov5s.pt
这是 PyTorch 专用格式。
但工厂现场一般不会运行 Python。
而是:
-
C++
-
Windows程序
-
嵌入式系统
-
工控机
所以要导出成:
yolov5s.onnx
这样就可以用 C++ 推理。
四、ONNX 可以用什么运行?
常见推理引擎:
1️⃣ ONNX Runtime
微软出的跨平台推理引擎
支持:
-
C++
-
C#
-
Python
-
CPU / GPU
2️⃣ TensorRT
NVIDIA 的高性能 GPU 推理库
适合:
-
RTX显卡
-
Jetson
-
工业视觉高帧率
五、导出 ONNX 很简单
在 yolov5 目录执行:
python export.py --weights yolov5s.pt --include onnx
成功后会生成:
yolov5s.onnx
六、为什么工业上必须用 ONNX?
因为:
| 直接用 Python | 用 ONNX |
|---|---|
| 运行慢 | 更快 |
| 部署麻烦 | 容易集成 |
| 依赖多 | 只需要推理库 |
| 不稳定 | 稳定 |
工业项目:
✔ 都是 C++
✔ 不会用 Python detect.py
七、举个工业场景
你未来可能做:
-
AOI 缺陷检测
-
PCB 焊点检测
-
产品外观检测
流程会是:
1️⃣ 训练 YOLOv5
2️⃣ 导出 ONNX
3️⃣ C++ 加载 ONNX
4️⃣ 实时摄像头推理
5️⃣ 输出 OK / NG
这才是工业级架构。
八、你现在的阶段
你已经:
✔ 会运行 YOLOv5
✔ 会写 Python 调用
下一步就是:
👉 学会 ONNX
👉 学会 C++ 推理
