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

v0.0.6发布于 2024-11-24 11:00 UTC1,161star189fork同步于 2026-11-07 07:30 UTC

怎么上手

由 README 提炼,执行前请确认
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 --end2end
硬件要求按 README 说明

README 未说明显存要求;环境部分只给出 TensorRT 与 cuda-python 的安装方式,C++ 侧建议用 NVIDIA 官方 Docker 镜像。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

把 YOLO 系列模型导出成 TensorRT 引擎并做推理的 Python/C++ 工具集

把 YOLO 全系列(v5 到 v12、YOLOX)模型转成 TensorRT 引擎做加速推理,内置 NMS 插件,省去自己写后处理的麻烦。

核心能力

  • 覆盖 YOLOv3 到 YOLOv12 多个系列
  • 用 export.py 将 ONNX 编译为 TRT 引擎
  • 支持 --end2end 把 NMS 插件编进引擎
  • 提供 Python 与 C++ 两套推理示例
  • 支持 fp32 与 int8 训练后量化

容易踩的坑

需先用 ultralytics 或各官方仓库自行导出 ONNX 并下载权重,本仓库不含模型文件;不同 YOLO 版本要选对 --v8/--v10 等参数,否则精度可能对不齐;推理时是否加 --end2end 必须与导出引擎时保持一致。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.0.6
  1. v0.0.6Support YOLOv11最新正式版2024-11-24 · 2024-11-24 11:00 UTC

    Support YOLOv11

  2. 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

    New Contributors

    Full Changelog: https://github.com/Linaom1214/TensorRT-For-YOLO-Series/compare/v0.0.4...v0.0.5

  3. v0.0.42022-11-29 · 2022-11-29 13:04 UTC
    查看更新说明

    2022.11.29 fix some bug thanks JiaPai12138

  4. v0.0.32022-08-13 · 2022-08-13 02:51 UTC
    查看更新说明

    重构仓库、文档, 更简洁的端到端方案

  5. v0.0.22022-08-11 · 2022-08-11 04:11 UTC
    查看更新说明

    新增导出engine时添加nms 插件

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    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.py get 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++

    By Docker

    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

    1. YOLOv5
    2. YOLOx
    3. YOLOv6
    4. YOLOv7
    5. YOLOv8

    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