Project Icon

trt_yolo_video_pipeline

基于TensorRT的多路视频分析处理框架

TRT-VideoPipeline是一个基于TensorRT的多路视频分析处理框架。该项目支持YOLO系列模型推理,实现单模型多显卡多实例负载调度,并利用GPU进行数据处理。框架支持NVIDIA硬件编解码,可处理RTSP、RTMP、MP4等多种视频格式。其模块化设计便于功能节点的灵活组合,适应不同应用场景。

TRT-VideoPipeline

多路视频分析处理案例

功能:

  • 完整的视频拉流解码、trt推理、编码推理处理pipeline
  • 支持yolo系列模型的tensorrt推理
  • 支持单模型多显卡多实例负载调度,数据前后处理均为GPU操作
  • 支持nvidia硬件编解码,多路并发节约cpu资源
  • 支持多种视频格式输入(RTSP、RTMP、MP4),多种格式推理输出(RTSP、RTMP),本地MP4录制

1. 环境配置

项目开发在linux上,依赖的第三方环境和版本

依赖版本
ffmpeg5.2
opencv4.8.0
tensorrt8.6
c++17
gcc7.5以上

如果在Linux开发,ffmpeg和opencv环境的搭建请参考addons/BuildBaseEnv.sh脚本,帮你一键构建ffmpeg和opencv环境

ffmpeg的硬件编解码环境需要额外重新编译开启支持,使用默认脚本是不支持nvidia硬件编解码的,请参照脚本中的注释部分进行修改

nvidia显卡硬件编解码能力参考表

tensorrt和cuda环境如果不在默认环境上,请到cmake/cuda.cmake和cmake/tensorrt.cmake文件下修改自己环境下的CUDA_TOOLKIT_ROOT_DIR和TENSORRT_ROOT_DIR路径配置

如果是在wendous下开发的,请自行配置第三方环境,依赖的三方库均在win下有实现,估计win下也是可以正常运行的,不过本人实际没有在win下测试过,因此不保证能否正常运行。

2、tensorrt模型转换

建议使用onnx模型格式和trtexe进行trt-engine模型转换

在tools/onnx2trtengine.sh下提供了模型转换脚本,请参考根据自身需求修改动态shape、量化精度、最大batch数等参数

3、使用demo

#include "infer/MultipleInferenceInstances.h"
#include "trt/yolo/YoloDetectPipeline.h"
#include "trt/yolo/YoloDetectionInfer.h"

int main() {
    std::string input_stream_url  = "输入流路径";
    std::string output_stream_url = "输出流路径";
    std::string model_path        = "TRTengine模型文件路径";
    std::string label_path        = "检测分类类别文件路径";
    int         max_batch_size    = 16;    // 最大batch数
    float       config_threshold  = 0.25;  // 检测阈值
    float       nms_threshold     = 0.5;   // nms阈值

    // 模型实例数量列表,列表为模型实例数,每个元素代表该模型实例在哪张显卡上的下标
    std::vector<int> device_list{0, 0, 1, 1};
    auto             type = infer::YoloType::V8;  // 模型类型

    // 创建多卡多实例推理对象
    auto trt_instance =
        std::make_shared<infer::MultipleInferenceInstances<infer::YoloDetectionInfer>>(
            "trt_instance", device_list, model_path, label_path, type, config_threshold,
            nms_threshold, max_batch_size);
    if (!trt_instance->init()) {
        std::cout << "init failed" << std::endl;
        return -1;
    }

    // 创建处理pipeline
    auto pipeline = std::make_shared<pipeline::YoloDetectPipeline>(
        "test_pipeline", input_stream_url, output_stream_url, trt_instance);

    // 启动流水线
    pipeline->Start();

    getchar();
}

不到30行代码即可实现一个yolo目标检测分析demo,拉流-》模型推理-》渲染-》编码-》推流的完整工作流。且模型前处理、推流、后处理均在gpu上,简单且高效。

功能节点复用

项目中的功能节点在整个大部分为独立的模块,可以根据自己的需求进行组合,实现自己的功能pipeline。

也非常欢迎各位大佬贡献自己的功能节点,共同完善项目。

序号Node说明开发状态
1FFmpegReadNode基于ffmpeg的数据输入节点,支持本地视频,RTSP、RTMP、FLV等协议;
直接n卡硬解;
增加了网络波动的容错机制
完成
2ImageDrawNode图像画框、文本渲染节点,需要输入目标框数据符合要检测算法封装格式完成
3FFmpegRecordNode图片截图、视频录制节点完成
4FFmpegPusherNode推流节点,支持h264/h265编码,硬件编码,rtmp推流完成
5FFmpegPusherRecorderNode推流和视频录制封装在一起,录制mp4的数据复用推流的数据,节约性能;
缺点是录制视频的尺寸和推流的尺寸必须一致
完成
8InferNode对trt infer的封装接收节点,使得多个流水线共用同一个推理实例完成
9HttpImageInputNode接收来自http协议的请求图像数据开发中
10KeyframePostNode用于将检测帧目标数据结果通过http协议上传到目标服务器完成

参考

作为cv相关(ctrl+c/ctrl+v)的开发人员,同样在开发过程中参考了很多优秀项目,特别是以下两个项目:

该项目是基于原来对于手写AI的infer 项目的简单修改而来,核心实现思路可以查看Old_README.md文档,新版本对其进行了更完善的修改(抄)和封装。

同时项目中的有向无环图的流水线处理结构参考了video_pipe_c 项目的设计思路,自己在开发过程中进行了调整。

存在的问题

测试是yolov8-seg的分割后处理还存在问题,没跑通

最后

如果对你有帮助,欢迎star,如果有问题,欢迎提issue,pr。 项目中有很多不足的地方,欢迎大家指正,共同进步。 本人微信:lijin_km

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号