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
相关推荐
INGNIGHT22 分钟前
377.组合总和 Ⅳ(背包)
c++·算法·1024程序员节
“AI国潮设计-小江”25 分钟前
AIGC实战:Python+SDXL批量生成英歌舞IP立牌,解锁猪猪蛋糕“反差萌”流量密码(附完整API源码)
开发语言·人工智能·python·prompt·aigc
成信吴彦祖1 小时前
当前专业的无人机RID侦测主站供应商主要有哪些
python·1024程序员节
凉茶钱1 小时前
stack、queue、priority_queue、容器适配器完整梳理
开发语言·c++·queue·1024程序员节·stack
编程的一拳超人1 小时前
【元宝搜索开发者征文大赛】四语实战:Java/Python/Go/Node.js 构建 AI 搜索应用全攻略
java·python·golang·node.js·agent
wuminyu1 小时前
JVM规范学习总结-Java源码经过javac编译后产物
java·linux·c语言·jvm·c++
fanruitian1 小时前
python anaconda jupyter notebook
python
蹊黎1 小时前
C++中stack、queue、priority queue类的部分简单实现
数据结构·c++·visualstudio·1024程序员节
云和数据.ChenGuang1 小时前
Python 菜鸟入门:字典(dict)类型详解与 CRUD 实战案例
开发语言·人工智能·python
小白今天也很酷1 小时前
MCXN947更新板载DAP_Link固件的方法
c语言·python·单片机·ubuntu·excel·1024程序员节