0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用NVIDIA DeepStream和Edge Impulse快速推进计算机视觉部署

NVIDIA英伟达企业解决方案 来源:NVIDIA英伟达企业解决方案 2024-01-02 10:48 次阅读

基于 AI计算机视觉(CV)应用日益增多,这对于从视频流中提取实时洞察至关重要。这项革命性的技术使作业人员能够在没有大量操作干预的情况下获得有价值的信息,从而为创新和解决问题带来了新的可能性。

NVIDIA DeepStream SDK 专门用于那些使用机器学习(ML)从视频流中提取深入洞察的智能视频分析(IVA)用例。在 NVIDIA 硬件上运行时,它使用 GPU 加速 ML,同时使用加速硬件实现预处理性能的最大化。

本文将探讨用于模型开发的 Edge Impulse 与用于部署的 NVIDIA DeepStream SDK 相结合的潜力,以便快速创建端到端应用。

计算机视觉应用

在如今的环境中,快速构建复杂、可扩展的 CV 应用的能力至关重要。典型的 CV 应用涵盖了各种用例,包括车辆识别、流量测量、检测系统、生产线质量控制、通过监控加强安全和安保、智能结账系统和过程测量等。

将机器智能进行集成来分析业务流程中的多媒体流可以带来巨大的价值。凭借无与伦比的准确性和可靠性,机器智能可以帮助精简运维,从而提高效率。

预建的 AI 模型有时并不是合适的解决方案,并且往往需要针对其未考虑到的特定问题来进行微调。

构建基于 AI 的 CV 应用通常需要三种技能:MLOps、CV 应用开发和部署(DevOps)。如果没有这些专业技能,项目的投资回报率和交付时间都可能面临风险。

过去,复杂的 CV 应用需要高度专业化的开发人员,因此需要耗费较长的学习周期和昂贵的资源。

Edge Impulse 与 NVIDIA DeepStream SDK 的组合提供了一个用户友好的互补解决方案堆栈,可帮助开发人员快速创建 IVA 解决方案。您可以针对特定用例轻松自定义应用,将 NVIDIA 硬件直接集成到您的解决方案中。

DeepStream 可免费使用,Edge Impulse 则提供了一个免费层,适合许多 ML 模型构建用例。

0d952baa-a6eb-11ee-8b88-92fbcf53809c.jpg

图 1. Edge Impulse 和 NVIDIADeepStream SDK 解决方案堆栈

使用 NVIDIA DeepStream

构建 CV 应用

Deepstream SDK 是 NVIDIA Metropolis 的一个组件,旨在支持大规模的视频分析。您可以快速、轻松地创建可直接部署在 NVIDIA 硬件设备上的生产就绪 CV 管线。

DeepStream 应用的构建方法如下:

从命令行进行构建

使用 Graph Composer 以可视化的方式进行构建

使用 DeepStream 参考应用和配置文件进行构建,无需代码

使用 C++Python 代码进行进一步自定义

如果您不是开发人员,可以使用前三种方法中的任何一种,不到一小时就能搭建好管线,并与训练好的 ML 模型一起运行。如果您需要更多自定义功能,可以使用现有模板来构建一个自定义编码的解决方案。

部署 CV 应用

在创建管线后,您可以直接将其部署到 NVIDIA 硬件设备上,如边缘设备(如 NVIDIA Jetson Nano)、高性能计算(HPC)和云部署,以及混合部署等。

您可以将应用部署在 NVIDIA 边缘硬件上在本地运行,并直接连接视频源,以减少延迟。如果您需要处理复杂的管线或容纳超出 NVIDIA 边缘设备能力的多个视频源,可以将相同的管线部署到您首选的 IaaS 供应商的 NVIDIA 云实例上。

您也可以采用混合部署的方法,将管线部署到 NVIDIA 边缘设备上,然后使用 NVIDIA Triton 推理服务器远程执行推理。

Triton 能够远程执行模型,接收来自客户端的输入帧并返回结果。Triton 可使用 NVIDIA GPU,也可在 x86 上执行推理,并支持并发和动态批处理。Triton 还支持大多数常用的框架,包括 TensorFlow 和 PyTorch。

DeepStream 通过名为 Gst-nvinferserver 的 Gst-nvinfer 推理插件支持 Triton。通过使用该插件,您可以在 DeepStream 应用中使用 Triton 实例。

IVA 应用的好坏取决于构建时所使用的 ML 模型。虽然有许多预构建模型可以使用,但用例往往需要自定义模型和 MLOps 工作流。因此需要有一个易于使用的 MLOps 平台来实现快速部署,尤其在与 DeepStream 快速应用开发相结合时。

用于机器学习的 Edge Impulse

Edge Impulse 提供了一套功能强大的 ML 模型构建工具,这些模型可以直接部署到 NVIDIA 目标上并导入进 DeepStream 应用中。通过无缝集成 NVIDIA 硬件加速和 DeepStream SDK,Edge Impulse 能够帮助您快速扩展项目。

Edge Impulse 在整个过程中为各级开发人员提供指导。经验丰富的 ML 专业人员将享受到从不同来源导入数据的便捷性和端到端模型构建流程。您还可以将自定义模型与自定义学习块功能集成在一起,为 MLOps 减轻繁重的工作。

如果您是机器学习新手,Edge Impulse 流程会在您使用该环境时指导构建基本模型。可以在 DeepStream 中使用的基本模型类型包括 YOLO 对象检测和分类。

您还可以改造专为 tinyML 目标构建的模型,使其适用于边缘用例和功能更强大的 NVIDIA 硬件。许多边缘 AI 用例涉及复杂的应用,需要更强大的计算资源。NVIDIA 硬件可以帮助解决与受限设备的局限性相关的挑战。

您可以使用 Edge Impulse 从头开始创建自己的模型,Edge Impulse 还集成了 NVIDIA TAO 工具套件,可以使用 Computer Vision Model Zoo 中的一百多个预训练模型。Edge Impulse 是 TAO 的补充,可用于将这些模型调整为自定义应用,这对企业用户来说是一个很好的出发点。

0da26cac-a6eb-11ee-8b88-92fbcf53809c.png

图 2. NVIDIA TAO 与

Edge Impulse Enterprise 相结合

使用 Edge Impulse 构建

适用于 DeepStream 的模型

在构建完模型后,将该模型部署到 DeepStream 中。从 Edge Impulse 导出模型文件并将其导入到 DeepStream 项目中。然后按照配置步骤操作,确保您的 Edge Impulse 模型能与 DeepStream 配合使用。该流程一般包括四个步骤(图 3)。

0da9fcec-a6eb-11ee-8b88-92fbcf53809c.png

图 3. 将模型文件从 Edge Impulse

部署到 NVIDIA DeepStream 的四个步骤

第 1 步:

在 Edge Impulse 中构建模型

首先在 Edge Impulse Studio 中构建 YOLO 或图像分类模型。DeepStream 推理 Gst-nvinfer 插件要求输入层的张量为 NCHW 格式。请务必选择 Jetson Nano 作为目标,并使用 FP32 权重。

第 2 步:

从 Edge Impulse 导出模型

Edge Impulse 可以从 Edge Impulse Studio 的仪表盘页面中导出模型。YOLOv5 可以导出为带有 NCHW 输入层的 ONNX,以便与 DeepStream 一起使用。

0db7c1ce-a6eb-11ee-8b88-92fbcf53809c.png

图 4. Edge Impulse Studio 仪表盘

显示如何导出为 ONNX 模型

DeepStream 中的 IVA 管线通常由一个主要推理(PGIE)步骤组成,该步骤使用边界框坐标执行对象检测。相关的对象类别会传递给二级推理步骤(SGIE),后者会对每个对象进行分类。每个步骤都以 Gst-nvinfer 插件实例的形式实现。

第 3 步:

将模型转换成与 DeepStream

兼容的 ONNX 格式

在将 YOLO 与 DeepStream 结合使用时,需要使用一个自定义输出层解析器来从输出层中提取边界框和对象类别,然后将其传递给下一个插件。有关自定义 YOLO 输出解析器的详细信息,请参见如何使用自定义 YOLO 模型:

https://docs.nvidia.com/metropolis/deepstream/dev-guide/text/DS_custom_YOLO.html

Edge Impulse 使用的 YOLOv5 是一种更新、性能更强大的模型,其输出张量格式与 YOLOv3 略有不同。YOLOv3 有三个输出层,分别负责检测不同尺度的物体,而 YOLOv5 只有一个输出层,使用锚框来处理各种尺寸的物体。

DeepStream 基于专门用于多媒体用例的 GStreamer。NVIDIA 在 GStreamer 管线中添加了支持深度学习的功能,包括额外的 ML 相关元数据,这些元数据通过 Gst-Buffer 在管线中传递,并通过 Gst-Buffer 封装在 NvDsBatchMeta 结构中。

0dc61fda-a6eb-11ee-8b88-92fbcf53809c.png

图 5. DeepStream 元数据层次

YOLO 的输出张量不同于 DeepStream 所需的边界框数据,这些边界框数据保存在 NvDsObjectMeta 中。为了将 YOLO 与 DeepStream 结合使用,就需要一个自定义输出解析器来转换 YOLO 输出,以满足 NvDsObjectMeta 在运行时的要求。NVIDIA 提供了一个通过 YOLOv3 运行的示例插件。

Edge Impulse 使用 YOLOv5。YOLOv3 和 YOLOv5 在输出层之间的差异使得 YOLOv3 插件不适合与 YOLOv5 一起使用(图 6)。

0dd7bbdc-a6eb-11ee-8b88-92fbcf53809c.png

图 6. YOLOv3 和 YOLOv5 输出张量结构的比较

要使用在 Edge Impulse 中训练的 YOLOv5 模型,必须创建一个自定义的 YOLOv5 输出解析器来处理单个输出张量。可以使用的一种实现方式是与 Edge Impulse ONNX 格式导出模型一起工作的第三方输出解析器。

对于图像分类模型,需要将 Edge Impulse 以 NHWC 格式提供的默认 TFLite Float32 及其输入层转换为 NCHW 格式。

0de431e6-a6eb-11ee-8b88-92fbcf53809c.png

图 7. Edge Impulse Studio 仪表盘

显示 TFLight Float32 的位置

使用以下 tf2onnx 命令即可轻松实现:

python -m tf2onnx.convert --inputs-as-nchw serving_default_x:0 --opset 13 --tflite MODELFILE --output OUTPUT.ONNX

MODELFILE 是输入文件,OUTPUT.ONNX 是输出文件,Edge Impulse 生成的输入层名称被指定为 serving_default_x:0。因此,该输入层经过转换后符合 DeepStream 的要求。

0dff0214-a6eb-11ee-8b88-92fbcf53809c.png

图 8. Edge Impulse 默认输入层形状

与 DeepStream Gst-nvinfer 插件比较

第 4 步:

创建推理插件配置文件

DeepStream 要求为 Gst-nvinfer 插件的每个实例创建纯文本配置文件,以指定运行时要求,其中包括 ONNX 模型文件或生成的 TRT 引擎文件,以及包含标签名称的文本文件。图 9 显示了使用 Edge Impulse YOLOv5 和分类模型所需的最小参数集。

0e055b3c-a6eb-11ee-8b88-92fbcf53809c.png

图 9. 使用 Edge Impulse 所创建的模型

的 Gst-nvinfer 插件配置参数

请注意,虽然为了便于说明,注释与参数并列显示,但所有配置参数都应另起一行。

process-mode参数可用于指定插件是一级还是二级。请注意,在指定 ONNX 文件后,DeepStream 会使用 trtexec 生成 NVIDIA TensorRT 在 NVIDIA GPU 上执行的 TensorRT 引擎。

创建该引擎后,使用model-engine-file参数指定该引擎。可以注释掉 model-file参数,以防止在每次运行时都重新创建引擎,从而节省启动时间。

根据 model-color-mode(模型是 RGB 还是灰度)的不同,该参数必须分别设置为 0 或 2。这将与 Edge Impulse Studio 中设置的颜色深度相对应。

上例展示了如何将该模型用作主推理插件。通过设置 process-mode属性,也可以将该模型用作第二阶段分类器:

process-mode=2 #SGIE

图 9 中的示例还显示了两阶段管线所需的最小配置文件,其中 YOLO 模型会首先检测对象,然后在第二阶段分类器中对它们单独分类。对于 YOLO 模型,可以编辑默认的 YOLO 标签文件,并根据 YOLO 标准格式,将标签替换为自定义模型的标签,每个标签另起一行。

在分类模型中,标签用分号分隔。在运行期间,将根据这些文件对模型进行相应的索引,并显示您指定的文本。

DeepStream 可通过引用管线中嵌入这些设置的配置文件来使用。







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4929

    浏览量

    102791
  • 计算机视觉
    +关注

    关注

    8

    文章

    1696

    浏览量

    45925
  • 机器学习
    +关注

    关注

    66

    文章

    8373

    浏览量

    132395
  • python
    +关注

    关注

    55

    文章

    4779

    浏览量

    84440

原文标题:使用 NVIDIA DeepStream 和 Edge Impulse 快速推进计算机视觉部署

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是计算机视觉计算机视觉的三种方法

    计算机视觉是指通过为计算机赋予人类视觉这一技术目标,从而赋能装配线检查到驾驶辅助和机器人等应用。计算机缺乏像人类一样凭直觉产生
    的头像 发表于 11-16 16:38 4453次阅读
    什么是<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>?<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>的三种方法

    机器视觉计算机视觉的关系简述

    初涉机器视觉领域,总是容易将其与计算机视觉这一概念混淆。实际上两者确实存在一定的相同之处,但也不能因此而将这两者视为同一概念,因为这两者还存在着显著的差别。而与此同时,两者也还有着密不可分的关系
    发表于 05-13 14:57

    深度学习与传统计算机视觉简介

    文章目录1 简介1.1 深度学习与传统计算机视觉1.2 性能考量1.3 社区支持2 结论3 参考在计算机视觉领域中,不同的场景不同的应用程序需要不同的解决方案。在本文中,我们将
    发表于 12-23 06:17

    基于OpenCV的计算机视觉技术实现

    基于OpenCV的计算机视觉技术实现OpencV是用来实现计算机视觉相关技术的开放源码工作库,是计算机
    发表于 11-23 21:06 0次下载
    基于OpenCV的<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>技术实现

    计算机视觉讲义

    计算机视觉讲义:机器视觉是研究用计算机来模拟生物外显或宏观视觉功能的科学和技术.机器视觉系统的首
    发表于 03-19 08:08 0次下载

    计算机视觉与机器视觉区别

     “计算机视觉”,是指用计算机实现人的视觉功能,对客观世界的三维场景的感知、识别和理解。计算机视觉
    的头像 发表于 12-08 09:27 1.2w次阅读

    计算机视觉的发展历史_计算机视觉的应用方向

    计算机视觉40多年的发展中,尽管人们提出了大量的理论和方法,但总体上说,计算机视觉经历了4个主要历程。即: 马尔计算
    的头像 发表于 07-30 17:21 7049次阅读

    计算机视觉常用算法_计算机视觉有哪些分类

    本文主要介绍了计算机视觉常用算法及计算机视觉的分类。
    的头像 发表于 07-30 17:34 1.4w次阅读

    计算机视觉入门指南

    这是一篇计算机视觉入门指南,从概念、原理、用例等角度介绍了计算机视觉。 「机器能够模拟人类视觉系统」的幻想已经过时了。自 1960 年代第一
    的头像 发表于 11-27 09:52 2813次阅读

    NVIDIA DeepStream SDK是什么 有哪些特性

    快速开发和部署视觉 AI 应用和服务。DeepStream 提供多平台、可扩展、TLS 加密的安全性,可以部署在本地、边缘和云端。
    的头像 发表于 06-30 10:55 2055次阅读

    计算机视觉的基础概念和现实应用

    本文将介绍计算机视觉的基础概念和现实应用,对任何听说过计算机视觉但不确定它是什么以及如何应用的人,本文是了解计算机
    的头像 发表于 11-08 10:10 1455次阅读

    NVIDIA 携手微软打造大规模云端 AI 计算机

    快速、经济的 AI 开发和部署 NVIDIA 于昨日宣布与微软展开一项为期多年的合作,双方将共同打造全球最强大的 AI 超级计算机。微软 Azure 的先进超级
    的头像 发表于 11-17 19:25 679次阅读

    使用Edge ImpulseNvidia Jetson的面罩检测器

    电子发烧友网站提供《使用Edge ImpulseNvidia Jetson的面罩检测器.zip》资料免费下载
    发表于 06-26 11:29 1次下载
    使用<b class='flag-5'>Edge</b> <b class='flag-5'>Impulse</b>和<b class='flag-5'>Nvidia</b> Jetson的面罩检测器

    Edge Impulse发布新工具,助 NVIDIA 模型大规模部署

    借助 Edge ImpulseNVIDIA TAO 工具包的协同效应,工程师得以快速构建并部署至边缘优化硬件(如上述型号)的
    的头像 发表于 03-25 16:00 682次阅读

    计算机视觉的主要研究方向

    计算机视觉(Computer Vision, CV)作为人工智能领域的一个重要分支,致力于使计算机能够像人眼一样理解和解释图像和视频中的信息。随着深度学习、大数据等技术的快速发展,
    的头像 发表于 06-06 17:17 838次阅读