DeepStream SDK 6.4的主要功能:
- 平台和兼容性更新:
- 迁移到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软件包。
- 增强的API支持:
- 改进的REST API支持,可实时控制DeepStream流水线(Alpha版本,x86和Jetson)。
- 用于额外控制的NV V4L2编码器插件增强。
- 新增AV1编码器支持。
- 基于CUDA nvjpeg API的新GStreamer插件nvimagedec和nvimageenc。
- 检测和跟踪:
- 支持Trafficcamnet作为主要检测器。
- 引入2个新的次级分类器模型(VehicleMakeNet,VehicleTypeNet)并搭载DS参考应用。
- 增强的视频模板插件,支持音频输入/视频输出。
- 单视图3D跟踪(Alpha版本)。
- 在Jetson上支持具有PVA后端的NvDCF跟踪器(Alpha版本)。
- 通信协议和连接性:
- REST API支持增强。
- MQTT TLS和保活支持。
- 视频编码和处理:
- 在Tracker中提高ReID准确性。
- 新Gst-nvstreammux插件的增强。
- 性能优化。
- 集成和工具包更新:
- 将NVIDIA TAO工具包模型整合到SDK中。
- 持续支持2D身体姿势估计、面部标记估计、情感识别、凝视、心率和手势。
- 稳定性和新插件:
- 稳定性改进。
- 新插件:nvimagedec,nvimageenc。
- 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”。然而,对于后续运行,不会出现此问题。