YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11 推理的 C++ 和 Python 实现

yolo 推理

YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11 推理的 C++ 和 Python实现

支持的推理后端包括 Libtorch/PyTorch、ONNXRuntime、OpenCV、OpenVINO 和 TensorRT。

支持的任务类型包括分类、检测和分割。

支持的模型类型包括FP32、FP16和INT8。

yolo测试

C++代码测试

你可以使用以下方法测试 C++ 代码:

复制代码
# Windows
mkdir build ; cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
./run.bat

或者

复制代码
# Linux
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
./run.sh

Docker上对C++测试

在Docker中的Ubuntu22.04上进行C++测试(CPU i7-12700,GPU RTX3070):

模型 任务 设备 精确 LibTorch ONNX运行时 OpenCV 开放的VINO TensorRT
YOLOv5n 分类 中央处理器 FP32 15.3毫秒 12.2毫秒 20.6毫秒 14.1毫秒 ×
YOLOv5n 分类 图形处理器 FP32 4.9毫秒 5.1毫秒 5.1毫秒 4.1毫秒
YOLOv5n 分类 中央处理器 FP16 × 21.7毫秒 20.1毫秒 14.0毫秒 ×
YOLOv5n 分类 图形处理器 FP16 4.6毫秒 8.1毫秒 4.9毫秒 3.2毫秒
YOLOv5n 分类 中央处理器 INT8 × 18.3毫秒 × ×
YOLOv5n 分类 图形处理器 INT8 × 34.2毫秒 × 3.0毫秒
YOLOv5n 探测 中央处理器 FP32 23.3毫秒 20.2毫秒 57.3毫秒 20.0毫秒 ×
YOLOv5n 探测 图形处理器 FP32 7.2毫秒 6.4毫秒 8.2毫秒 4.4毫秒
YOLOv5n 探测 中央处理器 FP16 × 41.8毫秒 57.3毫秒 19.8毫秒 ×
YOLOv5n 探测 图形处理器 FP16 6.8毫秒 18.8毫秒 7.9毫秒 3.9毫秒
YOLOv5n 探测 中央处理器 INT8 × 26.7毫秒 × 18.1毫秒 ×
YOLOv5n 探测 图形处理器 INT8 × 49.3毫秒 × 3.5毫秒
YOLOv5n 部分 中央处理器 FP32 × 28.2毫秒 75.8毫秒 27.2毫秒 ×
YOLOv5n 部分 图形处理器 FP32 10.6毫秒 10.6毫秒 10.8毫秒 6.3毫秒
YOLOv5n 部分 中央处理器 FP16 × 55.0毫秒 75.9毫秒 27.2毫秒 ×
YOLOv5n 部分 图形处理器 FP16 9.8毫秒 29.0毫秒 10.0毫秒 5.0毫秒
YOLOv5n 部分 中央处理器 INT8 × 34.5毫秒 × ×
YOLOv5n 部分 图形处理器 INT8 × 62.1毫秒 × 4.2毫秒
YOLOv6n 探测 中央处理器 FP32 28.1毫秒 29.7毫秒 29.3毫秒 ×
YOLOv6n 探测 图形处理器 FP32 6.4毫秒 6.5毫秒 5.0毫秒
YOLOv6n 探测 中央处理器 FP16 47.1毫秒 27.4毫秒 29.3毫秒 ×
YOLOv6n 探测 图形处理器 FP16 13.1毫秒 6.2毫秒 3.5毫秒
YOLOv6n 探测 中央处理器 INT8 38.5毫秒 × 23.4毫秒 ×
YOLOv6n 探测 图形处理器 INT8 95.7毫秒 × 4.1毫秒
YOLOv7t 探测 中央处理器 FP32 50.5毫秒 33.6毫秒 59.9毫秒 34.8毫秒 ×
YOLOv7t 探测 图形处理器 FP32 8.0毫秒 7.7毫秒 8.7毫秒 5.5毫秒
YOLOv7t 探测 中央处理器 FP16 71.7毫秒 63.7毫秒 34.7毫秒 ×
YOLOv7t 探测 图形处理器 FP16 21.3毫秒 7.0毫秒 3.9毫秒
YOLOv7t 探测 中央处理器 INT8 50.7毫秒 × 27.8毫秒 ×
YOLOv7t 探测 图形处理器 INT8 85.6毫秒 × 3.7毫秒
YOLOv8n 分类 中央处理器 FP32 3.5毫秒 2.2毫秒 4.0毫秒 2.4毫秒 ×
YOLOv8n 分类 图形处理器 FP32 2.3毫秒 1.5毫秒 1.9毫秒 1.2毫秒
YOLOv8n 分类 中央处理器 FP16 × 6.3毫秒 4.0毫秒 2.4毫秒 ×
YOLOv8n 分类 图形处理器 FP16 1.7毫秒 1.7毫秒 1.0毫秒
YOLOv8n 分类 中央处理器 INT8 × 3.4毫秒 × ×
YOLOv8n 分类 图形处理器 INT8 × 7.8毫秒 × 1.0毫秒
YOLOv8n 探测 中央处理器 FP32 33.3毫秒 27.9毫秒 42.2毫秒 28.6毫秒 ×
YOLOv8n 探测 图形处理器 FP32 6.4毫秒 6.9毫秒 6.8毫秒 6.0毫秒
YOLOv8n 探测 中央处理器 FP16 × 57.2毫秒 41.9毫秒 28.6毫秒 ×
YOLOv8n 探测 图形处理器 FP16 19.4毫秒 5.7毫秒 3.7毫秒
YOLOv8n 探测 中央处理器 INT8 × 37.3毫秒 × 24.5毫秒 ×
YOLOv8n 探测 图形处理器 INT8 × 85.5毫秒 × 4.7毫秒
YOLOv8n 部分 中央处理器 FP32 × 42.9毫秒 54.7毫秒 37.5毫秒 ×
YOLOv8n 部分 图形处理器 FP32 9.5毫秒 10.5毫秒 × 8.1毫秒
YOLOv8n 部分 中央处理器 FP16 × 73.1毫秒 54.9毫秒 37.4毫秒 ×
YOLOv8n 部分 图形处理器 FP16 27.3毫秒 × 5.9毫秒
YOLOv8n 部分 中央处理器 INT8 × 51.0毫秒 × ×
YOLOv8n 部分 图形处理器 INT8 × 101.1毫秒 × 5.6毫秒
YOLOv9t 探测 中央处理器 FP32 40.8毫秒 34.6毫秒 54.1毫秒 29.0毫秒 ×
YOLOv9t 探测 图形处理器 FP32 8.1毫秒 9.4米 9.7毫秒 7.1毫秒
YOLOv9t 探测 中央处理器 FP16 60.6毫秒 55.0毫秒 29.0毫秒 ×
YOLOv9t 探测 图形处理器 FP16 17.9毫秒 9.0毫秒 4.9毫秒
YOLOv9t 探测 中央处理器 INT8 48.0毫秒 × 27.0毫秒 ×
YOLOv9t 探测 图形处理器 INT8 135.2毫秒 × 5.6毫秒
YOLOv10n 探测 中央处理器 FP32 30.4毫秒 27.9毫秒 26.1毫秒 ×
YOLOv10n 探测 图形处理器 FP32 6.0毫秒 6.5 米
YOLOv10n 探测 中央处理器 FP16 56.4毫秒 26.0毫秒 ×
YOLOv10n 探测 图形处理器 FP16 10.9毫秒
YOLOv10n 探测 中央处理器 INT8 40.7毫秒 × 23.5毫秒 ×
YOLOv10n 探测 图形处理器 INT8 83.9毫秒 ×
YOLOv11n 分类 中央处理器 FP32 4.1毫秒 2.4毫秒 4.4毫秒 2.6毫秒 ×
YOLOv11n 分类 图形处理器 FP32 2.7毫秒 1.7毫秒 × 1.4毫秒
YOLOv11n 分类 中央处理器 FP16 × 6.3毫秒 4.5毫秒 2.6毫秒 ×
YOLOv11n 分类 图形处理器 FP16 2.1毫秒 × 1.1毫秒
YOLOv11n 分类 中央处理器 INT8 × × ×
YOLOv11n 分类 图形处理器 INT8 × × 1.3毫秒
YOLOv11n 探测 中央处理器 FP32 35.0毫秒 26.9毫秒 44.4毫秒 25.0毫秒 ×
YOLOv11n 探测 图形处理器 FP32 7.2毫秒 7.2毫秒 × 6.0毫秒
YOLOv11n 探测 中央处理器 FP16 × 61.3毫秒 44.8毫秒 25.0毫秒 ×
YOLOv11n 探测 图形处理器 FP16 20.0毫秒 × 3.9毫秒
YOLOv11n 探测 中央处理器 INT8 × × 22.8毫秒 ×
YOLOv11n 探测 图形处理器 INT8 × × 4.7毫秒
YOLOv11n 部分 中央处理器 FP32 × 38.8毫秒 56.9毫秒 34.0毫秒 ×
YOLOv11n 部分 图形处理器 FP32 10.9毫秒 × 7.5毫秒
YOLOv11n 部分 中央处理器 FP16 × 78.3毫秒 58.1毫秒 33.8毫秒 ×
YOLOv11n 部分 图形处理器 FP16 27.9毫秒 × 6.2毫秒
YOLOv11n 部分 中央处理器 INT8 × × ×
YOLOv11n 部分 图形处理器 INT8 × × 4.9毫秒

Python代码测试

可以使用以下方式测试 Python 代码:

复制代码
# Windows 
pip install -r requirements.txt
./run.bat

或者

复制代码
# Linux
pip install -r requirements.txt
./run.sh

Docker上对python测试

在Docker中对Ubuntu22.04进行Python测试(CPU i7-12700,GPU RTX3070):

模型 任务 设备 精确 PyTorch ONNX运行时 OpenCV 开放的VINO TensorRT
YOLOv5n 分类 中央处理器 FP32 26.3毫秒 21.4毫秒 33.2毫秒 21.8毫秒 ×
YOLOv5n 分类 图形处理器 FP32 15.6毫秒 16.1毫秒 16.6毫秒 17.0毫秒
YOLOv5n 分类 中央处理器 FP16 30.3毫秒 31.5毫秒 21.7毫秒 ×
YOLOv5n 分类 图形处理器 FP16 14.5毫秒 18.6毫秒 17.4毫秒 19.8毫秒
YOLOv5n 分类 中央处理器 INT8 28.9毫秒 × ×
YOLOv5n 分类 图形处理器 INT8 54.8毫秒 × 18.9毫秒
YOLOv5n 探测 中央处理器 FP32 30.6毫秒 27.0毫秒 60.0毫秒 24.8毫秒 ×
YOLOv5n 探测 图形处理器 FP32 10.4毫秒 14.9毫秒 10.7毫秒 14.3毫秒
YOLOv5n 探测 中央处理器 FP16 40.7毫秒 59.8毫秒 24.8毫秒 ×
YOLOv5n 探测 图形处理器 FP16 12.3毫秒 19.6毫秒 10.3毫秒 12.8毫秒
YOLOv5n 探测 中央处理器 INT8 33.7毫秒 × 23.1毫秒 ×
YOLOv5n 探测 图形处理器 INT8 72.9毫秒 × 13.8毫秒
YOLOv5n 部分 中央处理器 FP32 159.2毫秒 116.1毫秒 147.2毫秒 47.8毫秒 ×
YOLOv5n 部分 图形处理器 FP32 34.6毫秒 49.1毫秒 38.0毫秒 70.7毫秒
YOLOv5n 部分 中央处理器 FP16 138.8毫秒 142.2毫秒 48.2毫秒 ×
YOLOv5n 部分 图形处理器 FP16 50.9毫秒 78.9毫秒 52.4毫秒 72.6毫秒
YOLOv5n 部分 中央处理器 INT8 127.6毫秒 × ×
YOLOv5n 部分 图形处理器 INT8 191.8毫秒 × 13.3毫秒
YOLOv6n 探测 中央处理器 FP32 54.0毫秒 48.1毫秒 52.0毫秒 ×
YOLOv6n 探测 图形处理器 FP32 40.0毫秒 34.2毫秒 43.0毫秒
YOLOv6n 探测 中央处理器 FP16 66.4毫秒 48.1毫秒 51.8毫秒 ×
YOLOv6n 探测 图形处理器 FP16 49.9毫秒 36.3毫秒 40.5毫秒
YOLOv6n 探测 中央处理器 INT8 67.1毫秒 × 44.9毫秒 ×
YOLOv6n 探测 图形处理器 INT8 241.4毫秒 × 61.7毫秒
YOLOv7t 探测 中央处理器 FP32 53.3 41.1毫秒 62.9毫秒 39.4毫秒 ×
YOLOv7t 探测 图形处理器 FP32 10.6 16.5毫秒 10.4毫秒 14.0毫秒
YOLOv7t 探测 中央处理器 FP16 72.2毫秒 62.9毫秒 39.4毫秒 ×
YOLOv7t 探测 图形处理器 FP16 24.3毫秒 9.1毫秒 12.7毫秒
YOLOv7t 探测 中央处理器 INT8 58.2毫秒 × 32.4毫秒 ×
YOLOv7t 探测 图形处理器 INT8 101.8毫秒 × 12.9毫秒
YOLOv8n 分类 中央处理器 FP32 3.5毫秒 2.2毫秒 4.1毫秒 2.3毫秒 ×
YOLOv8n 分类 图形处理器 FP32 2.5毫秒 1.6毫秒 1.8毫秒 3.5毫秒
YOLOv8n 分类 中央处理器 FP16 6.3毫秒 4.1秒 2.3毫秒 ×
YOLOv8n 分类 图形处理器 FP16 1.7毫秒 1.7毫秒 2.8毫秒
YOLOv8n 分类 中央处理器 INT8 3.7毫秒 × ×
YOLOv8n 分类 图形处理器 INT8 8.2毫秒 × 3.0毫秒
YOLOv8n 探测 中央处理器 FP32 59.2毫秒 57.8毫秒 60.3秒 49.4毫秒 ×
YOLOv8n 探测 图形处理器 FP32 35.5毫秒 40.5毫秒 29.4毫秒 39.1毫秒
YOLOv8n 探测 中央处理器 FP16 77.1毫秒 61.3毫秒 49.6毫秒 ×
YOLOv8n 探测 图形处理器 FP16 60.4毫秒 30.8毫秒 38.1毫秒
YOLOv8n 探测 中央处理器 INT8 64.1毫秒 × 44.1毫秒 ×
YOLOv8n 探测 图形处理器 INT8 138.7毫秒 × 40.9毫秒
YOLOv8n 部分 中央处理器 FP32 184.7毫秒 157.8毫秒 142.3毫秒 100.0毫秒 ×
YOLOv8n 部分 图形处理器 FP32 94.3毫秒 104.2毫秒 88.5毫秒 116.6毫秒
YOLOv8n 部分 中央处理器 FP16 180.4毫秒 144.8秒 99.3毫秒 ×
YOLOv8n 部分 图形处理器 FP16 122.2毫秒 108.7毫秒 118.7毫秒
YOLOv8n 部分 中央处理器 INT8 166.4毫秒 × ×
YOLOv8n 部分 图形处理器 INT8 275.3毫秒 × 40.9毫秒
YOLOv9t 探测 中央处理器 FP32 61.0毫秒 61.0毫秒 74.9毫秒 49.7毫秒 ×
YOLOv9t 探测 图形处理器 FP32 33.6毫秒 41.4米 31.2毫秒 40.2毫秒
YOLOv9t 探测 中央处理器 FP16 81.0毫秒 75.4毫秒 49.6毫秒 ×
YOLOv9t 探测 图形处理器 FP16 45.9毫秒 33.5毫秒 41.5毫秒
YOLOv9t 探测 中央处理器 INT8 74.4毫秒 × 46.8毫秒 ×
YOLOv9t 探测 图形处理器 INT8 384.5毫秒 × 47.5毫秒
YOLOv10n 探测 中央处理器 FP32 33.7毫秒 34.7毫秒 28.6毫秒 ×
YOLOv10n 探测 图形处理器 FP32 8.3毫秒 13.0米
YOLOv10n 探测 中央处理器 FP16 57.8毫秒 28.6毫秒 ×
YOLOv10n 探测 图形处理器 FP16 14.4毫秒
YOLOv10n 探测 中央处理器 INT8 49.8毫秒 × 26.1毫秒 ×
YOLOv10n 探测 图形处理器 INT8 103.0毫秒 ×
YOLOv11n 分类 中央处理器 FP32 4.1毫秒 2.3毫秒 4.6毫秒 2.5毫秒 ×
YOLOv11n 分类 图形处理器 FP32 2.8毫秒 1.7毫秒 3.7毫秒
YOLOv11n 分类 中央处理器 FP16 6.1毫秒 4.5毫秒 2.5毫秒 ×
YOLOv11n 分类 图形处理器 FP16 1.9毫秒 3.3毫秒
YOLOv11n 分类 中央处理器 INT8 × ×
YOLOv11n 分类 图形处理器 INT8 × 3.6毫秒
YOLOv11n 探测 中央处理器 FP32 62.2毫秒 52.9毫秒 66.2毫秒 45.2毫秒 ×
YOLOv11n 探测 图形处理器 FP32 38.7毫秒 41.2毫秒 36.6毫秒
YOLOv11n 探测 中央处理器 FP16 82.5毫秒 63.0毫秒 45.1毫秒 ×
YOLOv11n 探测 图形处理器 FP16 58.2毫秒 38.2毫秒
YOLOv11n 探测 中央处理器 INT8 × 50.0毫秒 ×
YOLOv11n 探测 图形处理器 INT8 × 39.1毫秒
YOLOv11n 部分 中央处理器 FP32 183.5毫秒 152.7毫秒 144.1毫秒 91.9毫秒 ×
YOLOv11n 部分 图形处理器 FP32 98.2毫秒 116.2毫秒 114.9毫秒
YOLOv11n 部分 中央处理器 FP16 185.4毫秒 155.2毫秒 92.3毫秒 ×
YOLOv11n 部分 图形处理器 FP16 ?多发性硬化症 130.4毫秒 120.2毫秒
YOLOv11n 部分 中央处理器 INT8 × ×
YOLOv11n 部分 图形处理器 INT8 × 39.0毫秒

你可以使用以下命令获取 docker 镜像:

复制代码
docker pull taify/yolo_inference:latest
相关推荐
泽02021 分钟前
C++类和对象之相关特性
java·开发语言·c++
Code_流苏3 分钟前
《Python星球日记》 第72天:问答系统与信息检索
python·微调·问答系统·bert·应用场景·基于检索·基于生成
敲键盘的小夜猫7 分钟前
深入理解Python逻辑判断、循环与推导式(附实战案例)
开发语言·python
Looooking27 分钟前
Python 之 selenium 打开浏览器指定端口进行接续操作
python·selenium
feiyangqingyun29 分钟前
Qt/C++开发监控GB28181系统/录像文件查询/录像回放/倍速播放/录像文件下载
c++·qt·gb28181·录像回放·录像文件下载
Dreams°12329 分钟前
【Python爬虫 !!!!!!政府招投标数据爬虫项目--医疗实例项目文档(提供源码!!!)!!!学会Python爬虫轻松赚外快】
分布式·爬虫·python·mysql·scikit-learn
郜太素36 分钟前
PyTorch 中神经网络相关要点(损失函数,学习率)及优化方法总结
人工智能·pytorch·python·深度学习·神经网络·学习
L_cl40 分钟前
【Python 算法零基础 2.模拟 ④ 基于矩阵】
python·算法·矩阵
2301_8076114943 分钟前
310. 最小高度树
c++·算法·leetcode·深度优先·回溯
玉笥寻珍1 小时前
web安全渗透测试基础知识之登录绕过篇
python·安全·web安全·网络安全·威胁分析