TensorRT 是 NVIDIA 开发的高性能深度学习推理引擎,旨在优化神经网络模型并加速其在 NVIDIA GPU 上的推理性能。它支持多种深度学习框架,并提供一系列优化技术,以实现更高的吞吐量和更低的延迟。

理论上可以对每一代的yolo模型加速推理

YOLOv12 模型简介:

YOLO(You Only Look Once)系列模型以其高效的目标检测能力广受欢迎。YOLOv12 是该系列的最新版本,具有更高的精度。虽然引入FlashAttention,但基于官方对比,yolov12相较于之前的yolo版本,推理速度下降。

环境准备:

在开始之前,确保已安装以下软件:

  • CUDA:用于 GPU 加速。
  • cuDNN:NVIDIA 的深度神经网络库。

安装TensorRT
TensorRT Download | NVIDIA Developer

选择自己要下载的版本,我以TensorRT10为例。

点开后,勾上选项


下载和自己cuda和系统对应的版本,以windows11,cuda12.8安装为例,下面这个安装包:

TensorRT 10.8 GA for Windows 10, 11, Server 2022 and CUDA 12.0 to 12.8 ZIP Package

TensorRT 10.8:TensorRT 的版本

 for Windows 10, 11, Server 2022:适用于Windows 10和Windows 11和Server 2022

and CUDA 12.0 to 12. 8:表示该版本的 TensorRT 支持 CUDA 12.0 到 CUDA 12.8 的版本范围。

下载得到zip压缩包解压后,将bin和include和lib里的内容移到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2对应的文件夹内然后去设置环境变量(安装过cuda和cudnn可以跳过设置环境变量)。

Releases · kingbri1/flash-attention
使用 FlashAttention 尽量减少内存访问开销也可以加速推理,下载对应的包进行离线安装。(已安装可跳过)

使用 TensorRT 加速 YOLOv12 推理:

将yolov12模型转换为 TensorRT 可以直接运行的模型.engine。

from ultralytics import YOLO

model = YOLO('yolov12{n/s/m/l/x}.pt')
model.export(format="engine", half=True)  # 或者 format="onnx"

以下是使用 Python 和 TensorRT 加速 YOLOv12 推理的示例代码:

from ultralytics import YOLO

trt_model_path = "yolov12n.engine"
img_path = "ultralytics/assets/bus.jpg"
trt_model = YOLO(trt_model_path, task="detect")
results_tensorrt = trt_model(img_path)

FlashAttention + TensorRT 加速:

仅FlashAttention :

未使用 TensorRT 的推理结果:

  • 每张图像的处理时间
    • 预处理:1.0 毫秒
    • 推理:59.7 毫秒
    • 后处理:67.1 毫秒
    • 总计:127.8 毫秒

使用 TensorRT 的推理结果:

  • 每张图像的处理时间
    • 预处理:24.7 毫秒
    • 推理:4.0 毫秒
    • 后处理:74.2 毫秒
    • 总计:102.9 毫秒

性能对比与优势:

  • 推理时间:使用 TensorRT 后,推理时间从 59.7 毫秒减少到 4.0 毫秒,提升了约 14.9 倍。
  • 每张图像的处理时间:总处理时间从 127.8 毫秒减少到 102.9 毫秒,提升了约 1.24 倍。

使用 TensorRT 对 YOLOv12 进行推理加速,不仅显著提高了推理速度,还在精度上保持了模型的有效性,适用于对实时性要求较高的应用场景。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐