需先用 ultralytics 或各官方仓库自行导出 ONNX 并下载权重,本仓库不含模型文件;不同 YOLO 版本要选对 --v8/--v10 等参数,否则精度可能对不齐;推理时是否加 --end2end 必须与导出引擎时保持一致。
TensorRT-For-YOLO-Series
Linaom1214长期未更新把 YOLO 全系列(v5 到 v12、YOLOX)模型转成 TensorRT 引擎做加速推理,内置 NMS 插件,省去自己写后处理的麻烦。
tensorrt for yolo series (YOLOv11,YOLOv10,YOLOv9,YOLOv8,YOLOv7,YOLOv6,YOLOX,YOLOv5), nms plugin support
pip install tensorrt
pip install cuda-python
python export.py -o yolov8n.onnx -e yolov8n.trt --end2end --v8 --fp32
python trt.py -e yolov8n.trt -i src/1.jpg -o yolov8n-1.jpg --end2endREADME 未说明显存要求;环境部分只给出 TensorRT 与 cuda-python 的安装方式,C++ 侧建议用 NVIDIA 官方 Docker 镜像。
把 YOLO 系列模型导出成 TensorRT 引擎并做推理的 Python/C++ 工具集
把 YOLO 全系列(v5 到 v12、YOLOX)模型转成 TensorRT 引擎做加速推理,内置 NMS 插件,省去自己写后处理的麻烦。
核心能力
- 覆盖 YOLOv3 到 YOLOv12 多个系列
- 用 export.py 将 ONNX 编译为 TRT 引擎
- 支持 --end2end 把 NMS 插件编进引擎
- 提供 Python 与 C++ 两套推理示例
- 支持 fp32 与 int8 训练后量化
容易踩的坑
- v0.0.6Support YOLOv11最新正式版2024-11-24 · 2024-11-24 11:00 UTC
Support YOLOv11
- v0.0.5Support YOLOv10/92024-06-17 · 2024-06-17 01:10 UTC
查看更新说明
Support YOLOv10/9, change the default tensorrt version to 10.0.
What's Changed
- Update export.py by @zeyad-mansour in https://github.com/Linaom1214/TensorRT-For-YOLO-Series/pull/81
New Contributors
- @zeyad-mansour made their first contribution in https://github.com/Linaom1214/TensorRT-For-YOLO-Series/pull/81
Full Changelog: https://github.com/Linaom1214/TensorRT-For-YOLO-Series/compare/v0.0.4...v0.0.5
- v0.0.42022-11-29 · 2022-11-29 13:04 UTC
查看更新说明
2022.11.29 fix some bug thanks JiaPai12138
- v0.0.32022-08-13 · 2022-08-13 02:51 UTC
查看更新说明
重构仓库、文档, 更简洁的端到端方案
- v0.0.22022-08-11 · 2022-08-11 04:11 UTC
查看更新说明
新增导出engine时添加nms 插件
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
YOLO Series TensorRT Python/C++
Support
YOLOv11, YOLOV12、YOLOv10、YOLOv9、YOLOv8、YOLOv7、YOLOv6、 YOLOX、 YOLOV5、YOLOv3
- YOLOv12
- YOLOv11
- YOLOv10
- YOLOv9
- YOLOv8
- YOLOv7
- YOLOv6
- YOLOX
- YOLOv5
- YOLOv3
Update
- 2025.3.14 Support YOLOv12
- 2024.11.24 Support YOLOv11, fix the bug causing YOLOv8 accuracy misalignment
- 2024.6.16 Support YOLOv9, YOLOv10, changing the TensorRT version to 10.0
- 2023.8.15 Support cuda-python
- 2023.5.12 Update
- 2023.1.7 support YOLOv8
- 2022.11.29 fix some bug thanks @JiaPai12138
- 2022.8.13 rename reop、 public new version、 C++ for end2end
- 2022.8.11 nms plugin support ==> Now you can set --end2end flag while use
export.pyget a engine file - 2022.7.8 support YOLOv7
- 2022.7.3 support TRT int8 post-training quantization
Prepare TRT Env
Install via Python
pip install tensorrt
pip install cuda-python
Install via C++
YOLO12
Export ONNX
pip install ultralytics
from ultralytics import YOLO
model = YOLO("yolo12n.pt")
model.export(format='onnx')
Generate TRT File
python export.py -o yolo112n.onnx -e yolo12n.trt --end2end --v8 -p fp32
Inference
python trt.py -e yolo12n.trt -i src/1.jpg -o yolo12-1.jpg --end2end
YOLO11
Export ONNX
pip install ultralytics
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format='onnx')
Generate TRT File
python export.py -o yolo11n.onnx -e yolov11n.trt --end2end --v8 -p fp32
Inference
python trt.py -e yolov11n.trt -i src/1.jpg -o yolov11-1.jpg --end2end
YOLOv10
Generate TRT File
python export.py -o yolov10n.onnx -e yolov10.trt --end2end --v10 -p fp32
Inference
python trt.py -e yolov10.trt -i src/1.jpg -o yolov10-1.jpg --end2end
YOLOv9
Generate TRT File
python export.py -o yolov9-c.onnx -e yolov9.trt --end2end --v8 -p fp32
Inference
python trt.py -e yolov9.trt -i src/1.jpg -o yolov9-1.jpg --end2end
Python Demo
YOLOv8
Install && Download Weights
pip install ultralytics
Export ONNX
from ultralytics import YOLO
model = YOLO("yolov8s.pt")
model.fuse()
model.info(verbose=False) # Print model information
model.export(format='onnx') # TODO:
Generate TRT File
python export.py -o yolov8n.onnx -e yolov8n.trt --end2end --v8 --fp32
Inference
python trt.py -e yolov8n.trt -i src/1.jpg -o yolov8n-1.jpg --end2end
YOLOv5
!git clone https://github.com/ultralytics/yolov5.git
!wget https://github.com/ultralytics/yolov5/releases/download/v6.1/yolov5n.pt
!python yolov5/export.py --weights yolov5n.pt --include onnx --simplify --inplace
include NMS Plugin
!python export.py -o yolov5n.onnx -e yolov5n.trt --end2end
!python trt.py -e yolov5n.trt -i src/1.jpg -o yolov5n-1.jpg --end2end
exclude NMS Plugin
!python export.py -o yolov5n.onnx -e yolov5n.trt
!python trt.py -e yolov5n.trt -i src/1.jpg -o yolov5n-1.jpg
YOLOX
!git clone https://github.com/Megvii-BaseDetection/YOLOX.git
!wget https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth
!cd YOLOX && pip3 install -v -e . --user
!cd YOLOX && python tools/export_onnx.py --output-name ../yolox_s.onnx -n yolox-s -c ../yolox_s.pth --decode_in_inference
include NMS Plugin
!python export.py -o yolox_s.onnx -e yolox_s.trt --end2end
!python trt.py -e yolox_s.trt -i src/1.jpg -o yolox-1.jpg --end2end
exclude NMS Plugin
!python export.py -o yolox_s.onnx -e yolox_s.trt
!python trt.py -e yolox_s.trt -i src/1.jpg -o yolox-1.jpg
YOLOv6
!wget https://github.com/meituan/YOLOv6/releases/download/0.1.0/yolov6s.onnx
include NMS Plugin
!python export.py -o yolov6s.onnx -e yolov6s.trt --end2end
!python trt.py -e yolov6s.trt -i src/1.jpg -o yolov6s-1.jpg --end2end
exclude NMS Plugin
!python export.py -o yolov6s.onnx -e yolov6s.trt
!python trt.py -e yolov6s.trt -i src/1.jpg -o yolov6s-1.jpg
YOLOv7
!git clone https://github.com/WongKinYiu/yolov7.git
!wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-tiny.pt
!pip install -r yolov7/requirements.txt
!python yolov7/export.py --weights yolov7-tiny.pt --grid --simplify
include NMS Plugin
!python export.py -o yolov7-tiny.onnx -e yolov7-tiny.trt --end2end
!python trt.py -e yolov7-tiny.trt -i src/1.jpg -o yolov7-tiny-1.jpg --end2end
exclude NMS Plugin
!python export.py -o yolov7-tiny.onnx -e yolov7-tiny-norm.trt
!python trt.py -e yolov7-tiny-norm.trt -i src/1.jpg -o yolov7-tiny-norm-1.jpg
C++ Demo
support NMS plugin show in C++ Demo
Citing
If you use this repo in your publication, please cite it by using the following BibTeX entry.
@Misc{yolotrt2022,
author = {Jian Lin},
title = {YOLOTRT: tensorrt for yolo series},
howpublished = {\url{[https://github.com/Linaom1214/TensorRT-For-YOLO-Series]}},
year = {2022}
}
Sponsor
Buy me a cup of coffee
