YOLO 的推理部署方法全景指南
YOLO 系列模型经过训练后,通常需要部署到线上环境中进行推理(inference)。下面是常见的 YOLO 推理部署方式:
1️⃣ PyTorch 原生部署
- 使用原始 PyTorch 模型
.pt
文件
- 直接调用
model(input)
进行推理
- ✅ 优点:简单、灵活、易于调试
- ❌ 缺点:推理速度较慢,不适合生产环境
2️⃣ ONNX 导出 + 推理
- 将 YOLO 模型导出为
.onnx
格式
- 使用 ONNX Runtime、TensorRT、OpenVINO 等推理框架部署
- ✅ 优点:跨平台、高性能、支持多后端
- ❌ 缺点:导出模型需兼容性处理,部分 ops 不支持
3️⃣ TensorRT 部署
- 将 ONNX 模型转换为
.engine
文件
- 使用 NVIDIA TensorRT 进行推理加速
- ✅ 优点:极致推理速度,适用于边缘设备(如 Jetson)
- ❌ 缺点:部署复杂,需特定 GPU 支持
4️⃣ OpenVINO 部署(Intel 平台)
- 将模型转换为 OpenVINO IR 格式
- 用于 CPU、VPU、FPGA 等 Intel 硬件部署
- ✅ 优点:适配 Intel 系列硬件
- ❌ 缺点:转换过程复杂,ops 支持有限
5️⃣ NCNN/MNN 部署(移动端)
- 将 YOLO 模型转换为适用于移动端的格式
- 支持 Android/iOS 部署
- ✅ 优点:轻量级、低功耗
- ❌ 缺点:精度和兼容性可能下降
6️⃣ Web 部署(WebAssembly / ONNX.js)
- 可通过 ONNX.js、WebDNN 等方案实现浏览器推理
- ✅ 优点:无需安装、轻量级
- ❌ 缺点:性能受限,适合小模型
7️⃣ 服务化部署(FastAPI / Flask / Triton)
- 将模型封装成 API 接口,部署为 HTTP 服务
- ✅ 优点:便于前后端集成、支持扩展负载
- ❌ 缺点:需维护服务器资源
小结对比
方法 |
性能 |
部署复杂度 |
适用平台 |
PyTorch |
⭐⭐ |
⭐ |
通用平台 |
ONNX |
⭐⭐⭐ |
⭐⭐ |
通用平台 |
TensorRT |
⭐⭐⭐⭐ |
⭐⭐⭐ |
NVIDIA GPU |
OpenVINO |
⭐⭐⭐ |
⭐⭐ |
Intel 设备 |
NCNN/MNN |
⭐⭐ |
⭐⭐ |
移动设备 |
Web |
⭐ |
⭐⭐⭐ |
浏览器 |
API 服务化 |
⭐⭐ |
⭐⭐ |
服务端 |
假设一个真实的情况:
YOLOv5 多种部署方式效果对比(含精度变化范围)
本对比基于 YOLOv5s 模型,展示在不同推理部署框架下的精度变化(mAP)、推理速度(FPS)、模型大小等,适用于开发部署决策参考。
综合对比表
部署方式 |
精度(mAP)变化(vs PyTorch) |
推理速度(vs PyTorch) |
启动速度 |
模型大小 |
是否支持 GPU |
典型应用场景 |
PyTorch 原生 |
✅ 基准(如 37.4%) |
⚖️ 标准 |
❌ 较慢 |
较大 |
✅ CUDA |
研发、调试 |
ONNX Runtime |
-0.5% ~ -1% |
提升 1.2x ~ 2x |
✅ 快速 |
中等 |
✅ |
跨平台部署 |
TensorRT |
-0.5% ~ -1.2% |
提升 2x ~ 6x |
✅ 很快 |
更小 |
✅(NVIDIA 专用) |
云端高速推理 |
OpenVINO |
-1% ~ -2% |
提升 1.5x ~ 3x |
✅ 快速 |
小 |
❌(仅 CPU/VPU) |
Intel 边缘部署 |
NCNN |
-2% ~ -3% |
提升 1.5x ~ 4x(ARM) |
✅ 快速 |
小 |
❌ |
安卓端部署 |
TFLite |
-3% ~ -5% |
提升 1.5x ~ 3x |
✅ 快速 |
最小 |
❌ |
移动端轻量部署 |
部署方式 |
精度 ([email protected]) |
推理速度(batch=1) |
PyTorch 原生 |
37.4% |
~70 FPS (GPU) |
ONNX Runtime |
~36.8% |
~100 FPS (GPU) |
TensorRT |
~36.3% |
~300 FPS (GPU FP16) |
OpenVINO |
~35.5% |
~120 FPS (CPU i7) |
NCNN |
~35.0% |
~70 FPS (ARM) |
TFLite |
~34.0% |
~60 FPS (手机) |
✅ 总结推荐
- 追求速度 / 云部署:优选 TensorRT(float16 模式下速度极致)
- 跨平台服务 / Web接口部署:推荐 ONNX Runtime
- Intel 架构边缘部署:使用 OpenVINO
- 移动端轻量部署(安卓):使用 NCNN 或 TFLite