news 2026/5/16 4:23:05

DeepStream-Yolo多模型部署指南:同时运行多个YOLO检测器的完整方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepStream-Yolo多模型部署指南:同时运行多个YOLO检测器的完整方案

DeepStream-Yolo多模型部署指南:同时运行多个YOLO检测器的完整方案

【免费下载链接】DeepStream-YoloNVIDIA DeepStream SDK 8.0 / 7.1 / 7.0 / 6.4 / 6.3 / 6.2 / 6.1.1 / 6.1 / 6.0.1 / 6.0 / 5.1 implementation for YOLO models项目地址: https://gitcode.com/gh_mirrors/de/DeepStream-Yolo

DeepStream-Yolo是NVIDIA DeepStream SDK的YOLO模型实现方案,支持从5.1到8.0的多个DeepStream版本。本文将详细介绍如何在DeepStream-Yolo中部署多个YOLO模型,实现同时运行多个检测器的高级应用场景。

多模型部署的基本概念

在DeepStream框架中,GIE(GPU Inference Engine)是负责模型推理的核心组件。根据DeepStream的限制,deepstream-app不支持多个主GIE(primary GIE),只能将一个YOLO模型作为主GIE,其他模型作为次级GIE(secondary GIE)运行,次级GIE会对主GIE检测到的对象进行进一步推理。

如果需要将两个或更多YOLO模型都作为主GIE运行,则需要使用自定义代码实现。本文将重点介绍次级GIE的配置方法,这是最常用且易于实现的多模型部署方案。

多GIE目录结构设计

成功部署多个YOLO模型的第一步是创建合理的目录结构。以下是推荐的多GIE部署目录树:

图:DeepStream-Yolo多GIE部署的推荐目录结构,展示了主GIE和次级GIE的文件组织方式

目录设置步骤

  1. 克隆项目仓库

    git clone https://gitcode.com/gh_mirrors/de/DeepStream-Yolo cd DeepStream-Yolo
  2. 创建GIE文件夹为每个GIE创建独立的文件夹(如gie1、gie2等),并将DeepStream-Yolo的核心文件复制到每个文件夹中。

  3. 配置标签文件将类别名称文件复制到每个GIE文件夹,并将其重命名为labels.txt

  4. 准备模型文件将每个模型的ONNX文件或CFG和权重文件复制到相应的GIE文件夹中。

修改YoloLayer插件版本

为避免多个GIE之间的插件冲突,需要为每个GIE设置唯一的YoloLayer插件版本:

  1. 编辑每个GIE文件夹中nvdsinfer_custom_impl_Yolo目录下的yoloPlugins.h文件(第53行)。

  2. 将默认版本:

    const char* YOLOLAYER_PLUGIN_VERSION {"1"};

    修改为不同的版本号:

    const char* YOLOLAYER_PLUGIN_VERSION {"2"};

    注意:gie2使用版本2,gie3使用版本3,依此类推,确保每个GIE的版本号唯一。

编译GIE库文件

为每个GIE单独编译库文件,步骤如下:

设置CUDA版本

根据您的DeepStream版本和硬件平台设置CUDA_VER环境变量:

x86平台

DeepStream 8.0 = 12.8 DeepStream 7.1 = 12.6 DeepStream 7.0 / 6.4 = 12.2 DeepStream 6.3 = 12.1 DeepStream 6.2 = 11.8 DeepStream 6.1.1 = 11.7 DeepStream 6.1 = 11.6 DeepStream 6.0.1 / 6.0 = 11.4 DeepStream 5.1 = 11.1

Jetson平台

DeepStream 8.0 = 13.0 DeepStream 7.1 = 12.6 DeepStream 7.0 / 6.4 = 12.2 DeepStream 6.3 / 6.2 / 6.1.1 / 6.1 = 11.4 DeepStream 6.0.1 / 6.0 / 5.1 = 10.2

设置命令示例:

export CUDA_VER=12.2

编译命令

对每个GIE文件夹执行编译命令,替换gie1为相应的GIE文件夹名称:

make -C gie1/nvdsinfer_custom_impl_Yolo clean && make -C gie1/nvdsinfer_custom_impl_Yolo

配置推理参数文件

每个GIE需要独立的推理配置文件,根据使用的模型类型(YOLOv8、YOLOv5、YOLOv4等)进行编辑。

模型路径配置

Darknet YOLO示例(gie1)

custom-network-config=gie1/yolo.cfg model-file=yolo.weights

Darknet YOLO示例(gie2)

custom-network-config=gie2/yolo.cfg model-file=yolo.weights

ONNX模型示例(gie1)

onnx-file=yolo.onnx

ONNX模型示例(gie2)

onnx-file=yolo.onnx

GIE唯一ID设置

为每个GIE分配唯一ID:

gie1配置

gie-unique-id=1

gie2配置

gie-unique-id=2

处理模式设置

主推理引擎(primary GIE)

process-mode=1

次级推理引擎(secondary GIE)次级GIE会对主GIE检测到的对象进行推理:

process-mode=2

对于次级GIE,还需要指定它依赖的主GIE ID:

operate-on-gie-id=1

如果需要仅对特定类别的对象进行次级推理,可以添加:

operate-on-class-ids=0;1;2

批处理大小设置

主推理引擎

batch-size=1

次级推理引擎

batch-size=16

编辑DeepStream应用配置文件

修改deepstream_app_config.txt文件,配置多个GIE的协同工作。

添加次级GIE配置

在主GIE配置之后添加次级GIE配置:

1个次级GIE示例(共2个推理引擎)

[secondary-gie0] enable=1 gpu-id=0 gie-unique-id=2 operate-on-gie-id=1 operate-on-class-ids=0 nvbuf-memory-type=0 config-file=gie2/config_infer_primary.txt

2个次级GIE示例(共3个推理引擎)

[secondary-gie0] enable=1 gpu-id=0 gie-unique-id=2 operate-on-gie-id=1 operate-on-class-ids=0 nvbuf-memory-type=0 config-file=gie2/config_infer_primary.txt [secondary-gie1] enable=1 gpu-id=0 gie-unique-id=3 operate-on-gie-id=1 operate-on-class-ids=0 nvbuf-memory-type=0 config-file=gie3/config_infer_primary.txt

更新主GIE配置

确保主GIE配置指向正确的GIE文件夹:

修改前:

[primary-gie] enable=1 gpu-id=0 gie-unique-id=1 nvbuf-memory-type=0 config-file=config_infer_primary.txt

修改后:

[primary-gie] enable=1 gpu-id=0 gie-unique-id=1 nvbuf-memory-type=0 config-file=gie1/config_infer_primary.txt

运行多模型推理

完成所有配置后,使用以下命令启动DeepStream应用:

deepstream-app -c deepstream_app_config.txt

注意:测试过程中,引擎文件将在DeepStream-Yolo文件夹中生成。构建完成后,请将每个GIE的引擎文件移动到相应的GIE文件夹(gie1、gie2等)中。

通过以上步骤,您可以在DeepStream-Yolo中成功部署多个YOLO模型,实现复杂场景下的多目标检测与分析。这种方案特别适用于需要同时检测不同类型对象或对同一对象进行多级别分析的应用场景。

【免费下载链接】DeepStream-YoloNVIDIA DeepStream SDK 8.0 / 7.1 / 7.0 / 6.4 / 6.3 / 6.2 / 6.1.1 / 6.1 / 6.0.1 / 6.0 / 5.1 implementation for YOLO models项目地址: https://gitcode.com/gh_mirrors/de/DeepStream-Yolo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 4:18:03

内容创作团队如何借助Taotoken调用不同模型生成多样化文案

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 内容创作团队如何借助Taotoken调用不同模型生成多样化文案 对于新媒体运营和内容创作团队而言,产出风格多样、内容新颖…

作者头像 李华
网站建设 2026/5/16 4:17:10

Go语言建造者模式:复杂对象构建

Go语言建造者模式:复杂对象构建 1. 建造者实现 type User struct {Name stringAge intEmail stringPhone stringAddress string }type UserBuilder struct {user *User }func NewUserBuilder() *UserBuilder {return &UserBuilder{user: &User{}…

作者头像 李华
网站建设 2026/5/16 4:16:16

《Obsidian Excalidraw插件配置与使用指南》

前言 Obsidian Excalidraw 是一个将手绘风格绘图工具 Excalidraw 深度集成到 Obsidian 中的插件,支持在笔记中直接创建和编辑可视化图表、草图或思维导图,并实现双向链接和笔记联动。 一、在Obsidian中安装Excalidraw插件 二、相关配置 1、关闭使用.ex…

作者头像 李华
网站建设 2026/5/16 4:16:06

从颜色传感器到动态光效:打造可穿戴智能裙的完整硬件与代码指南

1. 项目概述:一件能“感知”色彩的智能裙子几年前,当我第一次把LED灯带缝进衣服里时,那种点亮瞬间的兴奋感至今难忘。但静态的光效看久了总会觉得有些单调,我一直在想,能不能让衣服上的灯光“活”起来,能跟…

作者头像 李华
网站建设 2026/5/16 4:16:05

学姐用1款降AI工具14分钟把AI率和重复率一起降到知网合格

学姐用1款降AI工具14分钟把AI率和重复率一起降到知网合格 我硕士论文从崩溃到合格的 14 分钟 3 月 17 号晚上 22:18。我送知网测我的硕士论文初稿——AI 率 78%、重复率 23%。学校合格线 AI 率 20%、重复率 10%。两个都超。 那一刻我做的第一件事不是熬夜改稿——是打开搜索…

作者头像 李华
网站建设 2026/5/16 4:15:37

三步搞定LXMusic音源:免费享受全网音乐资源的完整方案

三步搞定LXMusic音源:免费享受全网音乐资源的完整方案 【免费下载链接】LXMusic音源 lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/guoyue2010/lxmusic- 你是否厌倦了在不同音乐应用间来回切换,只为寻…

作者头像 李华