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

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

3天内不再提示

DeepStream容器执行Python的开发操作

NVIDIA英伟达企业解决方案 来源:NVIDIA英伟达企业解决方案 作者:NVIDIA英伟达企业解 2022-08-17 10:22 次阅读

前面一篇文章已经带着大家将 DeepStream 容器配置 Python 使用环境,本文的重点就是继续执行实际的开发操作。

由于前面开启容器时,透过 “-v” 指令将容器外路径与容器内形成映射,因此实际代码文件是存放在主机上(容器外),我们可以在主机上使用 gedit 这个较为便利的编辑器去修改代码,然后在容器内执行应用,如此搭建起实用性更高的开发环境。

在 DeepStream 范例中的test2是识别功能最丰富的经典范例,不仅能识别对 “Car” 与 “Person” 配置唯一的编号进行跟踪功能,还能为 “Car” 物体进一步分析 “厂牌”、“颜色”、“车型” 等属性,我们还可以将这些信息改成中文显示。

另一个runtime_source_add_delete项目则是实现 动态添加/删减视频 的功能,通常在面对 “不均衡” 监控的时候,会需要这项功能的辅助。

例如 “医院的门诊与急诊” 的流量在正常工作时间是门诊大于急诊,下班之后的流量就刚好反转,如果能根据时间去调整输入源的增减,就会有很高的实用性;都市中很多道路车流量在上下班高峰期是反转的,如果中控室的监控屏幕数量有限的时候,也可以根据不同状态去调整视频流的来源。

这并不意味着我们得去调整设备的数量,而是调整输入源的 “接收开关”,例如道路交通的监控有 100 台摄像头,是保持 24 小时全年午休地拍摄并传输数据,而中控室如果只有 50 个显示屏幕,就只要切换接收输入源的开关就可以。

现在就用容器版 DeepStream 的 Python 环境,来执行这两个应用。

1、DeepStream-test2 项目

这个项目将 DeepStream 关于物体识别的绝大部分人工智能功能都集于一身,包括以下三大类组件:

  • 1 个具备四类别的物体检测器(object detector)作为一阶段检测器;

  • 1 个跟踪器(tracker);

  • 3 个基于 “Car” 类别的图像分类器(image classifier)作为二阶段分类器。

三者的合作关系如下:

1)将读入的图像传给一阶段检测器进行物体检测计算;

2)将识别出的物体传送给跟踪器去赋予唯一的编号;

3)如果识别的类别为 “Car”,则将物体位置坐标分别传送给 3 个二阶段分类器,对坐标内图形进行 “厂牌”、“颜色”、“车型” 等属性识别;

4)最后将上面的信息合成回原始图像,然后进行输出作业。

这里使用的检测器与 3 个二阶段分类器模型都在 samples / models 下,如以下的路径名:

  • Primary_Detector:一阶段监测器

  • Secondary_CarColor:识别车辆颜色的二阶段分类器

  • Secondary_CarMake:识别车辆厂牌的二阶段分类器

  • Secondary_VehicleTypes:识别车辆种类的二阶段分类器

如果前面建立的 Python 容器环境没有删除的话,现在就可以执行以下指令进入容器内去执行这个范例:

sudo  xhost  +si:localuser:rootdockerstartds_python&&dockerexec-itds_pythonbash

进入容器后,执行以下指令:

cd  sources/deepstream_python_apps/apps/deepstream-test2./deepstream_test_2.py../../../../samples/streams/sample_720p.h264

下图就是执行的效果,可以看到每个识别到的物体都有唯一的识别号,在 “Car 3” 后面还有 “gray” 与 “nissan” 等颜色与厂牌的信息。

f2894182-1dd1-11ed-ba43-dac502259ad0.png

不过这个容器版有个还未解决的问题,就是 “中文显示” 的部分,如果有更精通操作系统的朋友可以试着解决这个中文显示问题。

2、runtime_source_add_delete 项目

这个项目也是基于 deepstream-test2神经网络组合识别项目基础上,使用以下的动态处理函数,因此没有固定的通道结构:

1)create_uridecode_bin:作为 “多输入源路径解析” 功能;

2)stop_release_source:停止指定编号数据源,并释放相关资源的内存空间;

3)delete_sources:首先删除现有 stream 中已经 End of Stream 的数据源,如果没有随机删除一个视频源。如果全部视频源都被删除时,就结束应用;

4)add_sources:随机增加数据源,如果数量达到 MAX_NUM_SOURCES,10s 后删除一个视频源;

5)bus_call:总线管理机制,作为触发事件的管理机制。

为了简化运行,这个示例只接收 1 个 H.264 视频文件当作 4 个输入源使用,每 10 秒添加的视频都会从头开始播放,系统就是为每个输入源设置唯一的编号,作为新增与删除的依据。

cd  sources/deepstream_python_apps/apps/runtime_source_add_deleteexport  DS_ROOT=/opt/nvidia/deepstream/deepstream/./deepstream_rt_src_add_del.pyfile://$DS_ROOT/samples/streams/sample_720p.mp4

接下去就会执行以下的 7 个画面变化:

1)显示第一个输入源的检测结果:

f2a408f0-1dd1-11ed-ba43-dac502259ad0.png

2)10 秒后添加第二个输入源的检测结果:

f2c7cdb2-1dd1-11ed-ba43-dac502259ad0.png

3)再 10 秒后添加第三个输入源的检测结果:

f2db8082-1dd1-11ed-ba43-dac502259ad0.png

4)再 10 秒后添加第四个输入源的检测结果:

f2f8bb8e-1dd1-11ed-ba43-dac502259ad0.png

5)再 10 秒后随机删除一个输入源:

f312f206-1dd1-11ed-ba43-dac502259ad0.png

6)再 10 秒后又随机删除一个输入源:

f3350aa8-1dd1-11ed-ba43-dac502259ad0.png

7)再 10 秒后又随机删除一个输入源:

f3492cea-1dd1-11ed-ba43-dac502259ad0.png

8)再 10 秒后删除最后一个输入源。

可以修改 deepstream_rt_src_add_del.py 文件的以下两个粗体下划线参数,调整输出总数量与间隔时间:

  • 第 48 行:MAX_NUM_SOURCES = 4

  • 第 278 行:GLib.timeout_add_seconds(10, delete_sources, g_source_bin_list)

之后请自行尝试修改的结果。

审核编辑:汤梓红


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

    关注

    14

    文章

    4576

    浏览量

    101635
  • 容器
    +关注

    关注

    0

    文章

    479

    浏览量

    21874
  • python
    +关注

    关注

    51

    文章

    4667

    浏览量

    83440

原文标题:NVIDIA Jetson 系列文章(8):用DS容器执行Python范例

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

收藏 人收藏

    评论

    相关推荐

    【核桃派1B 开发板试用体验】+ Python编程篇

    在核桃派开发板其系统配置了Python软件,通过它完成编写和运行Python代码。 在使用Python时,可分为2种情况,即一种是通过​终端来操作
    发表于 01-03 22:08

    四大Python执行系统命令方法

    Python是一款操作简单的编程语言,内置丰富的库,能够很容易的实现强大的功能,在使用Python进行框架搭建时,往往需要用到Python执行
    发表于 04-09 17:44

    Linux应用开发手册之Python开发案例

    执行文件,案例src目录存放源码。python-demos目录存放Python开发案例,案例脚本文件无需编译,可直接运行。如需重新编译Linux常用
    发表于 05-11 10:21

    使用 Python 执行 js 代码

    为什么要引出Python执行js这个问题?都说术业有专攻,每个语言也都有自己的长处和短处。在爬虫方向,Python绝对是扛把子,近几年随着AI的火爆,需要各种各样的数据,所以,爬虫需求也跟着
    发表于 03-31 16:05

    如何在 IIS 中执行 Python 脚本

    如何在 IIS 中执行 Python 脚本 Python 是一种解释脚本语言,概念类似 Microsoft Visual Basic Scripting Edition (VBScript)、 MicrosoftJScrip
    发表于 02-23 15:13 1129次阅读

    什么是虚拟化?什么是Docker ?Docker容器与虚拟机区别

    Docker是一个虚拟环境容器,可以将你的可执行文件、配置文件及一切其他你需要的文件一并打包到这个容器中,并发布和应用到任意平台。比如,你在本地用Python
    发表于 05-03 14:18 2.4w次阅读

    你们知道DeepStream可以开发出什么应用吗

    前一篇文章为大家讲述了 DeepStream 的应用定位、单机工作流、实际部署图,以及完整的软件栈的内容,可以对其有一个框架性的了解。接下来大家可以思考一下,DeepStream 可以开发
    的头像 发表于 08-02 15:44 1642次阅读
    你们知道<b class='flag-5'>DeepStream</b>可以<b class='flag-5'>开发</b>出什么应用吗

    Python版test1实战说明

    上一篇文章已经带着大家安装 DeepStreamPython 开发环境,并且执行最简单的 deepstream-test1.py,让大
    的头像 发表于 10-09 14:28 1437次阅读

    NVIDIA DeepStream SDK是什么 有哪些特性

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

    DeepStream Samples版的操作环境调试过程

    NVIDIA 的 DeepStream 是目前业界最好开发而且功能强大的 AI 视频分析工具,在 NGC 上 https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstrea
    的头像 发表于 08-03 10:18 1124次阅读

    配置Python开发环境的DeepStream容器

    对于熟悉 C++ 的开发人员来说,前一篇文章将 DeepStreamSamples 版容器的范例搬到本机上,再搭配 Docker 路径映射方式就能轻松搭建开发环境。但这种方式只适用于 C / C++
    的头像 发表于 08-12 11:05 1226次阅读

    容器接入USB摄像头

    前面教大家使用 DeepStream 的 Docker 镜像去创建自己的 Python 工作环境,其好处是即使 Jetson 设备需要使用 JetPack 重新安装系统,我们只要重新启动这个 Docker 容器就可以,无需重复环
    的头像 发表于 08-31 09:35 1276次阅读

    python列表序列操作教程

    python列表也是序列对象,可以进行序列通用的操作,类似字符串序列的操作
    的头像 发表于 02-23 15:04 427次阅读

    NVIDIA DeepStream SDK 6.3 版本发布

    概述 DeepStream 是一款基于 GStreamer 的 SDK,用于创建图像处理和物体检测方面的 AI 视觉应用程序。DeepStream 6.3 引入了图形执行格式(Graph
    的头像 发表于 08-31 13:05 405次阅读

    怎么让python执行完后再执行

    Python中,可以使用一些技术来确保程序执行完毕后再执行其他任务。下面将详细介绍几种方法。 一、使用阻塞方式执行程序 阻塞方式是最简单的方法之一,它要求程序在
    的头像 发表于 11-29 15:09 1187次阅读