GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - FeiYull/TensorRT-Alpha: 🔥🔥🔥TensorRT for YOLO26 (det/pose/seg/depth/obb/cls), YOLOv11,YOLOv10 YOLOv9,YOLOv8, ... 🚀🚀🚀 CUDA IS ALL YOU NEED. 🍎🍎🍎

BranchesTags
Open more actions menu

Latest commit

 

History

75 Commits
75 Commits

Folders and files

NameName
Last commit message
Last commit date
.github
.github
 
 
app
app
 
 
cmake
cmake
 
 
configs
configs
 
 
data/classes
data/classes
 
 
docker
docker
 
 
docs
docs
 
 
engines
engines
 
 
include/trt_alpha
include/trt_alpha
 
 
samples
samples
 
 
scripts
scripts
 
 
src
src
 
 
test
test
 
 
.dockerignore
.dockerignore
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
CMakeLists.txt
CMakeLists.txt
 
 
README.md
README.md
 
 
README_en.md
README_en.md
 
 

Repository files navigation

TensorRT-Alpha inference pipeline

Windows Linux TensorRT CUDA C++

English | 简体中文

简介

特色简介

C++ 推理仓库,基于 TensorRT + CUDA,手写全部 CUDA C 算子:

  • 端到端 GPU 推理:数据源 → 组批 → GPU 前处理 → 推理 → GPU 后处理 → 渲染 / 保存,全程零 CPU 往返。
  • 多 batch 推理:1 engine + N context 并发,每个 worker 独占一条 cudaStream。
  • 无损复刻原始 PyTorch 推理:对齐 ultralytics 官方实现,见 严格精度对齐。
  • 多种输入源:图片、图片目录、视频流(RTSP / RTMP / HTTP(S) / UDP)、webcam、URL —— 一个 --source 自动判别。
  • 高性能视频解码:借助 FFmpeg 硬解(NVDEC)加速视频解码。
近期计划
  • TODO:Nvidia Nano 等多款边缘设备(计划测试中)
  • TODO:支持 GStreamer —— 可拆卸 OpenCV,替换为 GStreamer 数据源
  • TODO:trt_alpha build —— ONNX → engine 一键序列化
  • TODO:展示更细粒度的性能测试 —— 用 Nsight Systems 剖析整条流水线的时间线(H2D / 推理 / D2H / 后处理 / 渲染的排布与空泡),用 Nsight Compute 逐个 CUDA kernel 剖析(占用率、访存、瓶颈定位)
  • TODO:更多模型系列
更新日志
  • 2026.10.27 📚 文档重构:README 只保留 TensorRT + OpenCV 一条默认路线,FFmpeg 硬解与 FFmpeg + OpenGL 多路渲染各自独立成篇;六个编译脚本统一命名 build_<系统>_<库组合>
  • 2026.10.24 🎮 多路渲染收口:CUDA-GL interop 零拷贝显示、单击放大、per-source 结果队列;9 路 1080p 稳定(pinned 内存受 RLIMIT_MEMLOCK 限制时自动降级并只告警一次)
  • 2026.10.24 🧩 三套构建目录定型(build / build-ffm / build-gl)+ 两个开关(test 默认关、sample 默认开);移除 yolov8_old / yolov8_pose_old / yolov8_seg_old
  • 2026.10.24 ⚡ seg / depth / sem 结果合成全部下沉到 CUDA,OpenCV 与 GL 两个渲染器共用同一套实现
  • 2026.10.23 🖼️ 多路视频 + OpenGL 渲染后端(GLFW + CUDA-GL interop);OpenCV 降为可选后端(-DTRT_ALPHA_WITH_OPENCV=OFF)
  • 2026.10.21 🚀 release v1.3.0:FFmpeg 硬解改为编译期可选(--decode ffmpeg / --hwaccel nvdec),NVDEC 显存直通 + pinned 回拷,[source] 段与三态 HostCopy
  • 2026.10.20 🐛 修复非 640 输入(如 672)在 fused 预处理中的 float4 对齐越界
  • 2026.10.19 📦 samples 改为一任务一示例;清理无用参数与 input_output_names;补训练 / 部署文档(英 / 中)
  • 2026.10.18 🚀 YOLOV11 / YOLOV8 / YOLOV9 / YOLOV10 接入,全部走 YOLO26 的 fused 前后处理:yolov11 五任务;yolov8 重写五任务;yolov9 det + seg;yolov10 det(仅 one2many)。与 python 逐框对拍实测:框 ≤3.4e-4 px、conf ≤2e-6、mask 逐像素 0 差异
  • 2026.10.16 💖 release v1.0
  • 2026.10.15 🐧 Linux 支持:GCC 13 移植、行尾 / 编辑器策略归一、引擎序列化脚本;Windows 运行时 DLL 自动部署;参数解析与源探测硬化 + run 全参数矩阵测试脚本
  • 2026.10.14 🧠 YOLO26 全任务族补齐:cls / depth / obb / pose / seg / sem;首页架构图
  • 2026.10.12 🎯 YOLO26-det 接入:后处理算子族(decode / NMS / 融合 / 向量化),命名统一 yolo26 → yolov26
  • 2026.10.11 ⚡ 逐位对齐 OpenCV 的 CUDA 预处理算子族(resize / copyMakeBorder / cvtColor / hwc2chw / normalize + 融合核)
  • 2026.10.10 📦 legacy CUDA 核归档到 kernels/legacy/,公开头注释全面英译
  • 2026.10.07 🔍 代码评审硬化:batch 上限守卫、丢帧策略、覆盖输入守卫;CTest 入场(32 项)
  • 2026.10.06 🛡️ 运行期配置透视(logConfigBox + 死键 [unused] 判定);URL 流(rtsp / rtmp / http(s) / udp)+ 目录源 + 输出目录规则
  • 2026.10.05 🔢 输入布局抽象(轴字母串 Layout);静态 / 动态 batch 语义统一,以引擎 profile 为唯一真相源
  • 2026.10.04 📄 两级配置:新增 configs/base.ini,模型 ini 只保留特有字段
  • 2026.10.03 ⚙️ 高层 Infer API(InferParams / Infer / Stream / Result)+ renderer 可插拔
  • 2026.10.01 🚀 1 engine + N context:共享 ICudaEngine,4 worker 显存 ~356 → 309 MiB
  • 2026.09.30 🧩 目录按任务拆分 det / seg / kpt;CLI --net 支持全部模型并自动推导 configs/<net>.ini
  • 2026.09.29 🎯 任务类型扩展:YOLOv8-seg / U2Net(seg)、YOLOv8-pose(kpt)
  • 2026.09.28 🔥 YOLOv3 / YOLOv4 / YOLO-NAS / EfficientDet / YuNet 接入(det 共 11 个)
  • 2026.09.27 ⚡ 新增 trt_alpha bench(分步耗时 + p50/p90/p99 + FPS);YOLOv5 / v6 / v7 / YOLOX / YOLOR 接入
  • 2026.09.26 🖥️ CLI list / run 端到端推理;日志模块与内存池收尾
  • 2026.09.25 🔧 三级流水线骨架(source → pool → render)完成
  • 2026.09.24 🎉 全面重构:新框架 core + kernels,第一个模型 YOLOv8 跑通
  • 2026.09.20 🔥 重构框架,实现更高性能,解决历史遗留 bug
  • ...
  • 2023.01.01 🔥 更新 yolov3, yolov4, yolov5, yolov6
  • 2023.01.04 🍅 更新 yolov7, yolox, yolor
  • 2023.01.05 🎉 更新 u2net, libfacedetection
  • 2023.01.08 🚀 全网最快支持 yolov8 的 tensorrt 部署
  • 2023.01.20 🍏 更新 efficientdet, pphumanseg
  • 2023.12.09 🍁 更新 yolov8-pose
  • 2023.12.19 🍉 更新 yolov8-seg
  • 2023.12.27 💖 更新 yolonas

严格精度对齐

example:yolov26

YOLO26 task family: this repository (left) vs PyTorch (right)

部分对齐效果展示 —— 对齐了所有模型的精度

更多参考:对齐时,关闭矩形推理

部分性能展示

YOLO26n per-frame stage cost: TensorRT GPU vs ultralytics CPU

YOLO26n 单帧三段耗时 · 1080p / imgsz 640 / batch=2 折算到每帧 · 不含 H2D 上传与后处理 D2H

安装依赖

依赖 版本 说明
CUDA 12.9 预处理 / 后处理由 CUDA C 实现,支持双 batch
TensorRT 10.16 支持 FP32 / FP16 / INT8 量化
OpenCV >= 4.5 解码 + 窗口 + 存图
C++ C++17
gcc(Linux) 13.3
Visual Studio(Windows) 2017 / 2019 / 2022

具体安装步骤:Windows or Ubuntu 24.04 or Docker

视频硬解和多路 GL 渲染是另外两条可选路线,依赖、编译、执行分别写在:

  • FFmpeg 硬解
  • FFmpeg + OpenGL 多路渲染

快速开始

1. 拉代码与编译
git clone -b v2-dev https://github.com/FeiYull/TensorRT-Alpha.git
cd TensorRT-Alpha
Windows(PowerShell)下编译
cmake -S D:\VS2022_Project\TensorRT-Alpha `
      -B D:\VS2022_Project\TensorRT-Alpha\build `
      -G "Visual Studio 17 2022" -A x64 `
      -DOpenCV_DIR=D:/ThirdParty/opencv/build/x64/vc16/lib `
      -DTensorRT_ROOT=D:/ThirdParty/TensorRT-10.16.1.11

cmake --build build --config Release -j 24
.\build\bin\Release\trt_alpha.exe list
Ubuntu 24.04环境下编译
cmake -S ~/workspace/TensorRT-Alpha -B ~/workspace/TensorRT-Alpha/build \
      -DCMAKE_BUILD_TYPE=Release \
      -DOpenCV_DIR=/home/feiyull/thirdparty/opencv4.8.1/lib/cmake/opencv4 \
      -DTensorRT_ROOT=/home/feiyull/thirdparty/TensorRT-10.16.1.11 \
      -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.9/bin/nvcc

cmake --build build -j24
./build/bin/Release/trt_alpha list

要 Debug:多配置生成器把 --config Release 换成 Debug;单配置生成器重配一次 -DCMAKE_BUILD_TYPE=Debug。产物进 bin/Debug/。

2. 序列化模型
# ONNX:用 ultralytics 官方命令行导出
pip install ultralytics
yolo export model=yolo26n.pt format=onnx imgsz=640 batch=2 opset=17 simplify=True

# 序列化:ONNX -> engine
trtexec --onnx=yolo26n.onnx --saveEngine=engines/yolov26n.trt --noTF32

更多参考:导出与序列化

上面 yolo export 只是拿 ultralytics 举个例,不代表只能用 ultralytics。换 MMDetection / Detectron2 / PaddleDetection / 自己写的 PyTorch 训练脚本,流程完全一样:先在各自框架里手动导出 ONNX,再交给 trtexec 序列化。本仓库只消费 ONNX,不负责导出。

3. 执行
./build/bin/Release/trt_alpha run --net yolov26 --source data/bus.jpg --show    # 图片
./build/bin/Release/trt_alpha run --net yolov26 --source data/people.mp4 --show   # 视频
./build/bin/Release/trt_alpha run --net yolov26 --source data/images/ --save output/det/   # 目录
./build/bin/Release/trt_alpha run --net yolov26 --source 0 --show              # 相机
./build/bin/Release/trt_alpha run --net yolov26 --source data/bus.jpg --save output/det/
# 量化模型换 --engine
./build/bin/Release/trt_alpha run --net yolov26 --source data/bus.jpg --engine engines/yolov26n_fp16.trt --show

Windows 下把 ./build/bin/Release/trt_alpha 换成 .\build\bin\Release\trt_alpha.exe。

更多参考:CLI 完整用法

源码里直接调用:

#include "trt_alpha/infer/infer.hpp"

int main(){
    trt_alpha::InferParams p;     
    p.model_type  = trt_alpha::ModelType::yolov26; // det, pose, cls, obb, depth
    p.source = "xxx.jpg";                          // xx.jpg, xx.mp4, camera_id, url, images' path
    // p.engine = "engines/yolov26.trt" p.config_path = "configs/yolov26.ini"
    trt_alpha::Infer  model(p);   trt_alpha::Stream stream = model.async();    trt_alpha::Result r;
    while (stream.get(r)){
        // here:get the results of inference
        // ......
    }
    stream.stop();
    return 1;
}

更多参考:samples/sample_infer/sample_infer.cpp

模型支持

模型矩阵

✅ 已跑通并实测 · 🚧 规划中 · — 未提供 · 📥 点击下载 onnx

model fp32 fp16 int8 下载onnx
YOLO26
yolo26-det ✅ ✅ ✅ 📥
yolo26-seg ✅ ✅ ✅ 📥
yolo26-obb ✅ ✅ ✅ 📥
yolo26-cls ✅ ✅ ✅ 📥
yolo26-depth ✅ ✅ ✅ 📥
yolo26-sem ✅ ✅ ✅ 📥
yolo26-pose ✅ ✅ ✅ 📥
yolo26-tracking 🚧 🚧 🚧 —
YOLOV11
yolov11_det ✅ ✅ ✅ 📥
yolov11_seg ✅ ✅ ✅ 📥
yolov11_obb ✅ ✅ ✅ 📥
yolov11_cls ✅ ✅ ✅ 📥
yolov11_pose ✅ ✅ ✅ 📥
YOLOV9
yolov9_det ✅ ✅ ✅ 📥
yolov9_seg ✅ ✅ ✅ 📥
YOLOV10
yolov10_det ✅ ✅ ✅ 📥

其他(沿用 legacy 资产)

model fp32 fp16 int8 下载onnx
yolov3 ✅ — — 📥
yolov4 ✅ — — 📥
yolov5 ✅ — — 📥
yolov6 ✅ — — 📥
yolov7 ✅ — — 📥
yolov8_det ✅ ✅ ✅ 📥
yolov8_seg ✅ ✅ ✅ 📥
yolov8_cls ✅ ✅ ✅ 📥
yolov8_pose ✅ ✅ ✅ 📥
yolov8_obb ✅ ✅ ✅ 📥
yolox ✅ — — 📥
yolor ✅ — — 📥
yolo_nas ✅ — — 📥
efficientdet ✅ — — 📥
yunet ✅ — — 📥
u2net ✅ — — 📥

目录结构

目录树
app/                 CLI(run / bench / list / build)
cmake/               OpenCV / TensorRT / CUDA 探测 + 运行时部署
configs/             模型 INI(base.ini + <model>.ini 两级)
data/                图片 / 视频 / classes(需自行放入)
include/trt_alpha/   公共头
  ├── core/          引擎 / 内存池 / 队列 / 池 / 模型注册(零 OpenCV)
  ├── datasource/    数据源接口(OpenCV 实现,可替换为 GStreamer)
  ├── pipeline/      三级流水线调度
  ├── renderer/      渲染接口(OpenCV 实现)
  ├── kernels/       CUDA 算子(ops/ = 预处理 / 后处理算子族,legacy/ = 旧实现归档)
  └── det|seg|kpt|cls|depth|sem|obb/  任务类型与模型
src/                 实现
samples/             使用示例(含 sample_infer 高层 API 示例)
test/                单元测试(默认不编,-DTRT_ALPHA_BUILD_TESTS=ON)
scripts/             编译脚本(build_<系统>_<库组合>)+ 引擎序列化 / 参数矩阵

其他

1.配置文件

2.量化

3.部署自己训练的模型

4.FFmpeg 硬解(--decode / --hwaccel)

5.FFmpeg + OpenGL 多路渲染(--render gl)

Citation

@misc{FeiYull_TensorRT-Alpha,
  author = {FeiYull},
  title = {TensorRT-Alpha},
  year = {2023},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {https://github.com/FeiYull/tensorrt-alpha}
}

About

🔥🔥🔥TensorRT for YOLO26 (det/pose/seg/depth/obb/cls), YOLOv11,YOLOv10 YOLOv9,YOLOv8, ... 🚀🚀🚀 CUDA IS ALL YOU NEED. 🍎🍎🍎

Topics

classificationcudadepth-estimationdetectionobbsegmentationtensorrtyolo11yolo26yolo8yolov5yolov6yolov7

Resources

Readme
Activity

Stars

1.5k stars

Watchers

31 watching

Forks

198 forks
Report repository

Releases

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.