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
相关推荐
特立独行的猫A1 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
大可不必了6 小时前
03 函数定义和调用
开发语言·python
I_belong_to_jesus6 小时前
C++关于分支预测的优化1
开发语言·c++·算法
承渊政道7 小时前
【Python编程—从入门到实践】(记分与闯关:用Python+Pygame,打造越战越精彩的太空大战!)
开发语言·python·pycharm·游戏程序·pygame
爱学习的程序媛7 小时前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架
imgsq7 小时前
GESP Python 一到四级:备考路线与真题特点
python·青少年编程
Rabitebla7 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
eggwyw8 小时前
Anaconda安装卸载的详细流程指南
开发语言·python
2601_967979129 小时前
纯手写:Python安装pip完整教程,搞了几小时,终于成功
python·教程·pip·安装·包管理
Norna9 小时前
缓存文件从没写出来:一个 .json 被当成目录用了
python