Gst-nvtracker
Gst-nvtracker插件允许DeepStream 管道使用一个底层跟踪器来跟踪具有唯一ID的检测目标。它支持任何实现NvDsTracker API的底层库,包括三个参考实现:NvDCF、 KLT 和 IOU 跟踪器。作为这个 API 的一部分,插件查询底层库中关于输入格式和内存类型的功能和要求。然后,基于这些查询结果,插件将输入帧缓冲区转换为底层库请求的格式。例如,KLT 跟踪器使用 Luma 专用格式; NvDCF 使用 NV12或 RGBA格式; IOU 不需要缓冲区。
底层功能还包括支持跨多个输入流的批处理。批处理通常比独立处理每个流更有效。如果底层库支持批处理,那么这将是首选的操作模式。但是,如果低级库同时支持批处理和单流模式,则可以使用 enable-batch-process 配置选项来设置此首选项。低层功能还包括支持传递历史的帧数据,其中包括在过去帧中生成但尚未报告为输出的对象跟踪数据。这种情况可能发生在这样的情况: 低层跟踪器内部存储历史帧中生成的对象跟踪数据,因为置信度不足没有报告,但后来由于置信度的提升决定报告,这些历史帧数据可以作为用户元数据报告。这可以通过 enable-past-frame 配置选项启用。
该插件接受来自上游组件的 NV12-或 rgba 格式的帧数据,并将输入缓冲区转换为低层库所需格式的缓冲区,同时将宽度和高度转换为跟踪器要求的宽度和高度。(跟踪器的宽度和高度必须在配置文件的**[track]**中指定)。通过跟踪器配置节中的 ll-lib-file 配置选项选择使用哪一个跟踪器库。选定的跟踪器库还需要自己的配置文件,可以通过 ll-config-file 选项指定这个配置文件。三个的跟踪器库支持不同的跟踪算法:
- KLT 跟踪器使用基于 cpu 的 Kanade-Lucas-Tomasi (KLT)跟踪器算法的实现。此库不需要配置文件。
- IOU 跟踪器在两个连续帧之间的检测器边界框中使用 IOU 值来执行它们之间的关联或分配一个新的 ID。这个库接受一个可选的配置文件。
- NvDCF跟踪器采用基于相关滤波器的在线鉴别学习算法作为视觉目标跟踪器,同时采用数据关联算法进行多目标跟踪。此库接受一个可选的配置文件。
输入和输出
本节总结了 Gst-nvtracker 插件的输入、输出和通信设施。
-
输入
- Gst Buffer (batched)
NvDsBatchMeta
输入视频帧支持的颜色格式为 NV12和 RGBA。
-
控制参数
tracker-width
tracker-height
gpu-id
(for dGPU only)ll-lib-file
ll-config-file
enable-batch-process
enable-past-frame
tracking-surface-type
display-tracking-id
-
输出
- Gst Buffer (provided as an input)
NvDsBatchMeta
(with addition of tracked object coordinates, tracker confidence and object IDs inNvDsObjectMeta
)
注意:
如果跟踪器算法不生成置信值,那么跟踪器的置信值将被设置为-0.1。对于 KLT 和 IOU 跟踪器 , 置信度设置为 -0.1,因为这些算法不生成跟踪对象的置信度值。Nvdcf 跟踪器对被跟踪的目标产生置信度,其值在 NvDsObjectMeta 数据结构的tracker_confidence中设置
下表总结了该插件的特性