NVIDIA DeepStream SDK 6.4发布:最新功能及注意事项

2024-01-05 12:23:23 浏览数 (3)

NVIDIA,全球人工智能和GPU技术领先厂商,本周宣布推出DeepStream SDK 6.4版本,引入了大量新功能和增强功能,用于视频分析。此次发布标志着一个重要的进步,提供了改进的性能、扩展的兼容性,并为计算机视觉和深度学习领域的开发人员提供了一系列强大的功能。

DeepStream SDK 6.4的主要功能:

  1. 平台和兼容性更新:
    • 迁移到Ubuntu 22.04;Gst版本1.20.3。
    • 支持x86/dGPU的Triton 23.08,Jetson的Triton 23.11以及Rivermax v1.40。
    • 基于JP 6.0 DP(r36.2.0 BSP)的Jetson软件包。
  2. 增强的API支持:
    • 改进的REST API支持,可实时控制DeepStream流水线(Alpha版本,x86和Jetson)。
    • 用于额外控制的NV V4L2编码器插件增强。
    • 新增AV1编码器支持。
    • 基于CUDA nvjpeg API的新GStreamer插件nvimagedec和nvimageenc。
  3. 检测和跟踪:
    • 支持Trafficcamnet作为主要检测器。
    • 引入2个新的次级分类器模型(VehicleMakeNet,VehicleTypeNet)并搭载DS参考应用。
    • 增强的视频模板插件,支持音频输入/视频输出。
    • 单视图3D跟踪(Alpha版本)。
    • 在Jetson上支持具有PVA后端的NvDCF跟踪器(Alpha版本)。
  4. 通信协议和连接性:
    • REST API支持增强。
    • MQTT TLS和保活支持。
  5. 视频编码和处理:
    • 在Tracker中提高ReID准确性。
    • 新Gst-nvstreammux插件的增强。
    • 性能优化。
  6. 集成和工具包更新:
    • 将NVIDIA TAO工具包模型整合到SDK中。
    • 持续支持2D身体姿势估计、面部标记估计、情感识别、凝视、心率和手势。
  7. 稳定性和新插件:
    • 稳定性改进。
    • 新插件:nvimagedec,nvimageenc。
  8. Python绑定和示例更新:
    • 升级到Python 3.10和Ubuntu 22.04;弃用Python 3.8和DeepStream 6.3支持。
    • Deepstream-test2应用程序更新,使用DeepStream 6.4中的新跟踪器元数据类型的名称。
    • DeepStream-test4应用程序更新,支持MQTT适配器。
    • DeepStream-test1-rtsp-out更新,支持Jetson Orin Nano的软件编码器选项。

DeepStream的Jetson版本基于JetPack 6.0 DP(开发者预览版)。此版本不适用于生产目的。

与DeepStream 6.3相关的重大变化:

主要检测器(PGIE)基于resnet10的模型已被Trafficcamnet Trafficcamnet模型取代。

车辆颜色模型已被移除。

车辆制造模型已被VehicleMakeNet VehicleMakeNet模型取代。

车辆类型模型已被VehicleTypeNet VehicleTypeNet模型取代。

因此,现在DeepStream参考应用程序将使用Trafficcamnet作为PGIE,以及2个新的SGIE模型(VehicleMakeNet,VehicleTypeNet)。

使用DeepStream-6.4时,REST API端点已更新,包含当前支持的版本“/api/v1/”。

在为DLA构建TensorRT引擎时,有一个已知问题,即在TensorRT的详细模式下列出的整个DLA子图(通过TensorRT的详细模式查看)无法构建/最终会回退到GPU,并显示"{ForeignNode[...]}无法由DLA编译,回退到GPU"消息。在这两个ResNet模型PeopleNet v2.6和TrafficCamNet中观察到此问题。在这两种情况下,可以通过将TensorRT的默认DLA SRAM池大小从1 MiB更改为0.5 MiB来解决此问题。使用trtexec,可以通过在构建TensorRT引擎时添加参数"--memPoolSize=dlaSRAM:0.5"来实现 - 对于其他直接调用TensorRT API的TensorRT应用程序,请参阅trtexec中的此代码部分。从上述生成的引擎可以在DeepStream中使用。

UCX应用程序现已统一为一个示例应用程序。

移除FasterRCNN应用程序。

在处理RTSP用例时,建议使用脚本/opt/nvidia/deepstream/deepstream/update_rtpmanager.sh来应用补丁以最小化问题。

在运行tritonserver时,“--backend-directory”选项是不需要的。

Python绑定中的API更改:alloc_nvds_event_msg_meta()现在期望与NvDsEventMsgMeta相关联的NvDsUserMeta指针。

注意事项:

Jetson上的DeepStream基于L4T BSP版本r36.2.0。请参考Jetson发布说明中的“已知问题”部分。

使用V4L2编解码器时,仅提供最多1024个(解码 编码)实例。可以通过更改开源代码来增加实例的最大数量。

在Jetson上,对于gst-dsexample,主要推理配置文件(config_infer_primary.txt)中必须将detected-min-w和detected-min-h设置为大于32的值。

当Kafka Broker断开连接并重新连接时,Kafka协议适配器有时不会自动重新连接。这需要应用程序重新启动。

如果nvds日志文件ds.log已被删除,要重新启动日志记录,必须在重新启用日志记录之前删除容器中的/run/rsyslogd.pid文件,然后运行setup_nvds_logger.sh脚本。这在NVIDIA DeepStream Developer Guide 6.4 Release的“Gst-nvmsgbroker”部分的“nvds_logger: Logging Framework”子部分中有描述。

通过SSH(通过putty)进行X11转发运行DeepStream应用程序无法正常工作。

DeepStream当前期望模型网络宽度是4的倍数,高度是2的倍数。

DeepStream中的Triton推理服务器实现目前仅支持单个GPU。模型需要配置为使用单个GPU。

对于某些模型,在DeepStream中的输出与在TAO Toolkit中观察到的输出不完全相同。这是由于输入缩放算法的差异造成的。

动态分辨率更改支持Alpha质量。

在运行时,模型更新仅支持具有相同网络参数的相同类型的模型。

Rivermax SDK并非DeepStream的一部分。因此,会出现以下警告 (gst-plugin-scanner:33257):

代码语言:javascript复制
GStreamer-WARNING **: 11:38:46.882: Failed to load plugin '/usr/lib/x86_64-
linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_udp.so': librivermax.so.0: 
cannot open shared object file: No such file or directory

你可以安全地忽略此警告。

当使用Composer WebSocket流时,有时会出现类似"Error while sending buffer: invalid state"的错误,或者窗口变得无响应。刷新浏览器页面可能会解决这个问题。

仅支持在RTX GPU上使用Composer WebRTC流。

在Jetson上,当屏幕处于空闲状态时,DeepStream应用程序的帧速率会降低。这是为了节省电源而设计的行为。然而,如果用户不希望屏幕空闲,可以参考FAQ中的解决方法。

RDMA功能目前仅在x86上并且仅在x86 Triton Docker中支持。

除了其Triton变体之外,在Jetson dockers上无法直接构建DeepStream。

对于某些模型,从TensorRT到Triton可能会出现性能下降(5到15%)。

要生成YOLOV3,应为TensorRT限制指定某些层的精度为FP32。解决方案已在更新:https://github.com/NVIDIA-AI-IOT/deepstream_tao_apps

在Ampere、Hopper和ADA上运行275 流时,有时会出现NVRM:XID错误。

在某些配置中,使用gst-dsexample和迁移学习示例应用程序时,会看到NVRM:XID错误。

在运行deepstream-testsr应用程序时,有时会看到断言 " GStreamer-CRITICAL **: 12:55:35.006: gst_pad_link_full: assertion 'GST_IS_PAD sinkpad)' failed",可以安全地忽略。

Gst-nvdsasr插件和deepstream-avsync-app在Hopper GPU上不受支持。

使用jpeg文件的Multifilesrc插件与nv3dsink不一致地失败。为解决此问题,需要在nv3dsink之前添加nvvideoconvert元素。

对于一些模型,在引擎文件生成期间,TensorRT会报错“[TRT]: 3: [builder.cpp::~Builder::307] Error Code 3: API Usage Error”。但这对功能没有影响,可以安全地忽略。

在NVIDIA Hopper上不支持ASR和TTS插件。

deepstream-server应用程序不支持新的nvstreammux插件。

TAO point-pillar模型仅在FP32模式下工作。

对于一些组件(解码器、预处理器、nvinfer以及流的添加和删除支持),REST API仅提供有限的配置选项。但是,你可以根据SDK文档中的步骤扩展功能。

在运行Python分割应用程序时,会看到关键错误(masked_scan_uint32_peek: assertion '(guint64) offset size <= reader->size - reader->byte' failed),但可以安全地忽略。

在运行Jetson dockers上的DeepStream应用程序时,会看到错误“modprobe: FATAL: Module nvidia not found...”,但可以安全地忽略。

使用Basler相机时,在Jetson上仅支持宽度为4的倍数的图像。

有时,在运行DeepStream应用程序时会看到错误“GLib (gthread-posix.c): Unexpected error from C library during 'pthread_setspecific': Invalid argument”。

此问题是由于glib 2.0-2.72版本中的一个错误引起的,该版本默认安装在ubuntu22.04中。此问题在glib2.76中得到解决,需要安装glib2.76来解决问题(https://github.com/GNOME/glib/tree/2.76.6)。

deepstream-lidar-inference-app示例应用程序在Jetson上无法运行。此问题是由于glib 2.0-2.72版本中的一个错误引起的,该版本默认安装在ubuntu22.04中。此问题在glib2.76中得到解决,需要安装glib2.76来解决问题(https://github.com/GNOME/glib/tree/2.76.6)。

在运行DeepStream应用程序时,对于一些模型(如VehicleMakeNet,VehicleTypeNet),TensorRT引擎文件生成会失败。为避免此故障,在运行应用程序之前运行以下命令以提高时钟速度:

代码语言:javascript复制
$ sudo nvpmodel -m 0 
$ sudo jetson_clocks

如果仍然看到问题,则使用TensorRT中的trtexec实用程序生成引擎文件,并在DeepStream中使用相同的文件。

有时在Jetson上推理输出会在不同运行之间变化。

在Jetson上,deepstream-segmentation-app的nvinferserver支持存在问题。

在Jetson上,如果启用了边界框,deepstream-testsr-app有时可能会出现模糊的输出。

在某些情况下,使用Python示例应用程序的性能可能低于C版本。

在运行deepstream-opencv-test应用程序时,会看到警告“gst_caps_features_set_parent_refcount: assertion 'refcount == NULL' failed",对功能没有影响,可以安全地忽略。

在Jetson dockers上观察到以下错误(但对功能没有影响):a) 解码时:/bin/dash: 1: lsmod: not found和/bin/dash: 1: modprobe: not found。b) 启动管道时:Failed to detect NVIDIA driver version.

在Jetson Orin上,不支持软件编码器。解决方法是在nvv4l2decoder之前使用nvvideoconvert而不是nvvidconv。

在Jetson上,deepstream-dewarper-test应用程序,第一次运行时会出现错误:“cuGraphicsEGLRegisterImage failed: 700, cuda process stop”。然而,对于后续运行,不会出现此问题。

0 人点赞