人工智能视觉处理

DeepStream for Robotics

2020-03-18  本文已影响0人  YottaYuan

DeepStream for Robotics

技术

NVIDIA DeepStream SDK提供用于基于AI的视频和图像的感知,以及多传感器处理的完整流式分析工具包。DeepStream是NVIDIA Metropolis不可或缺的一部分,该平台用于构建端到端服务和解决方案,以将像素和传感器数据转换为可行的见解。

Isaac SDK附带了针对机器人用例量身定制的各种媒体获取,发布,编码,解码,推断和处理功能。但是,多媒体支持不是机器人技术框架的主要职责。机器人集成的多种多媒体需求使得直接支持变得困难,因此将DeepStream作为Isaac组件进行集成提供了解决方案。

注意
NVIDIA DeepStream SDK基于开放源代码的GStreamer库:这是一个基于管道的多媒体框架,将各种媒体处理系统链接在一起。GStreamer本身基于GLib:一组低级库,用于为C,可移植性包装,执行循环和接口提供数据结构处理。访问 GStreamer开源多媒体框架网站, 以获取详细信息和对该框架的贡献。

零件

开源GStreamer框架和NVIDIA DeepStream SDK作为Isaac组件的内部集成, 使您可以重用其多媒体处理功能的集合。Isaac和DeepStream产品自然可以在机器人技术和媒体使用案例中相互补充。

GPU加速的DeepStream元素可以用作GStreamer管道定义的一部分。DeepStream可以与Jetson JetPack安装程序一起安装,用于Jetson Nano和Xavier平台。请按照DeepStream安装说明进行操作,以使其元素在主机系统上可用。

注意

Isaac不分发DeepStream或GStreamer。您必须选择要安装的模块并遵守其许可证。

媒体管道分别通过named appsinkappsrc元素连接到Isaac引擎,分别用于接收和发送。组件 pipeline配置参数允许您使用任何配置和元素启动任何GStreamer管道字符串。

应用程序元素支持功能,格式和内存模型,并在下表中详细说明了等效的Isaac Protobuffer消息。使用适当的 videoconvertnvvideoconvert元素以及上限过滤器以实现兼容性。功能必须明确定义。

<colgroup style="box-sizing: border-box;"><col width="16%" style="box-sizing: border-box;"><col width="9%" style="box-sizing: border-box;"><col width="76%" style="box-sizing: border-box;"></colgroup>

能力 格式 留言内容
视频/ x-原​​始 RGB ColorCameraProto

从DeepStream组件传输到其他Isaac组件的消息的获取时间戳为发布时的节点时间。

工具类

使用 gst-inspect-1.0 命令行工具,您可以查看主机上可用的元素:

$ gst-inspect-1.0
video4linux2:  v4l2src: Video (video4linux2) Source
video4linux2:  v4l2sink: Video (video4linux2) Sink
video4linux2:  v4l2radio: Radio (video4linux2) Tuner
video4linux2:  v4l2deviceprovider (GstDeviceProviderFactory)
dtls:  dtlsenc: DTLS Encoder
[...]
Total count: 265 plugins, 1420 features

使用 gst-launch-1.0 命令行工具可以构建和运行GStreamer管道。通过将GST_DEBUG环境变量设置0为无调试输出和8完整内存转储之间的类别级别, 为GStreamer启用调试输出。的信息级别 4通常是最实际的。

$ export GST_DEBUG=4
# Your application will now output debug information when you run it.

通过将GST_DEBUG_DUMP_DOT_DIR环境变量设置为现有的可写目录路径来获取管道图。使用该dot工具生成可见图像。

$ sudo apt install graphviz
$ export GST_DEBUG_DUMP_DOT_DIR=/tmp
# Running your application will generate a FILENAME.dot file in the /tmp folder which can be
# converted by the following command:
$ dot -Tpng /tmp/FILENAME.dot > pipeline.png

例子

以下示例显示了GStreamer常见问题解答中的测试视频,其中 启用了调试信息,图形绘制和详细程度:

$ GST_DEBUG=4 GST_DEBUG_DUMP_DOT_DIR=. gst-launch-1.0 -v \
  videotestsrc ! videoconvert ! autovideosink

原始的GStreamer示例已进行了更改,以演示如何在Isaac应用程序中集成G​​Streamer管道。Isaac示例显示了如何将管道媒体导入或导出到应用程序配置中可用的Isaac通信通道。

管道有两个容器:将测试视频源通过应用程序接收器引入Isaac,而应用程序源将视频流公开给显示视频接收器。 功能 的应用元件的方面受到限制。这样的videoconvert元素可确保对源元素和宿元素都支持RGB原始格式。因此,管道更改为以下内容:

videotestsrc ! video/x-raw,format=RGB ! videoconvert ! appsink name=to_isaac

appsrc name=from_isaac ! video/x-raw,format=RGB ! videoconvert ! autovideosink

具有输入和输出到Isaac的多媒体管道

艾萨克应用实例

以下是一个最小的Isaac应用程序,该应用程序通过Isaac将视频从接收器传递到源:

{
  "name": "example_pipeline_app",
  "modules": [
    "deepstream",
  ],
  "graph": {
    "nodes": [
      {
        "name": "deepstream",
        "components": [
          {
            "name": "message_ledger",
            "type": "isaac::alice::MessageLedger"
          },
          {
            "name": "pipeline",
            "type": "isaac::deepstream::Pipeline"
          }
        ]
      }
    ],
    "edges": [
      {
        "source": "deepstream/pipeline/to_isaac",
        "target": "deepstream/pipeline/from_isaac"
      }
    ]
  },
  "config": {
    "deepstream": {
      "pipeline": {
        "pipeline": "videotestsrc ! video/x-raw,format=RGB ! videoconvert ! appsink name=to_isaac  appsrc name=from_isaac ! video/x-raw,format=RGB ! videoconvert ! autovideosink"
      }
    }
  }
}

在Isaac WebSight中,使用视频测试源可视化应用程序接收器的外观如下所示:


image.png

可以在packages/deepstream/apps文件夹中找到其他演示应用程序:

应用名称 示范
gstreamer_pipeline_distributed_a 通过UDP传输获取并发布MPEG-4压缩视频
gstreamer_pipeline_distributed_b 通过UDP传输接收MPEG-4压缩视频
gstreamer_pipeline_multi 单个组件中有多个视频管道
gstreamer_pipeline 简单的GStreamer视频测试源管道
logitech_c920pro_cpu USB连接,V4L2接口,H.264压缩,CPU解码的摄像头
philips_spc1330nc 普通USB连接,V4L2接口未压缩的原始摄像头
sony_snchmx70 以太网IP / RTSP传输,H.264压缩摄像机
上一篇下一篇

猜你喜欢

热点阅读