概述#

行为分析微服务对视觉推理元数据进行流式分析,并以时间序列指标和警报的形式生成洞察。这些时间序列指标和警报可以使用分析 Web API 微服务检索。它提供了关于摄像头监控环境的丰富的态势感知。

输入#

  1. 每帧视觉元数据的消息流,包括检测到的对象边界框。这由 Deepstream 组件 通过 Redis 流发布。

  2. 绊线、ROI 和警报规则配置

输出#

  1. FOV、绊线和 ROI 的计数时间序列指标

  2. 基于配置的警报规则的警报

行为分析模块#

  • 视场 (FOV):计算摄像头视场中的人数

  • 绊线 (Tripwire):计算跨越配置的绊线线段的人数

  • 感兴趣区域 (ROI):计算配置的感兴趣区域中的人数

FOV#

视场代表完整的摄像头视图。FOV 分析模块可以跟踪人在整个视场内的移动,并提供与此相关的时间序列指标和警报。

FOV 占用计数#

FOV 占用率按每 1 秒的时间间隔计数。可以使用 API 查询特定时间范围,并可选择聚合到更高的时间单位,如分钟、小时和天。

FOV 占用警报#

警报是关于 FOV 占用率的特定感兴趣事件。警报规则定义了触发警报需要满足的条件。

FOV 占用警报规则#

警报规则定义了触发警报需要满足的条件。

以下是 FOV 支持的警报规则类型。

增量警报规则

在一定数量的人员进入或离开 FOV 后发出警报。这针对进入/离开分别跟踪。用作阈值的人数是可配置的。

占用警报规则

在 FOV 中的人数超过某个阈值后发出警报。用作阈值的人数是可配置的。

占用阈值切换警报规则

在占用 FOV 的人数切换到高于或低于配置的阈值后发出警报。用作阈值的人数是可配置的。警报仅在占用率超过阈值或降至阈值以下时发布。

绊线#

绊线被定义为线段序列,用于计算从任一方向跨越它的人数。绊线分析模块可以跟踪人在绊线上的移动,并提供与此相关的时间序列计数指标和警报。

绊线穿越计数#

来自两个方向(进入/离开)的绊线穿越按每 1 秒的时间间隔计数。可以使用 API 查询特定时间范围,并可选择聚合到更高的时间单位,如分钟、小时和天。

绊线穿越警报#

警报是特定的感兴趣事件。警报规则定义了触发警报需要满足的条件。

绊线穿越警报规则#

警报规则定义了触发警报需要满足的条件。

以下是绊线支持的警报规则类型。

增量警报规则

在跨越绊线的人数超过某个阈值后发出警报。这针对每个方向(进入/离开)分别跟踪。用作阈值的人数是可配置的。

流速警报规则

当每秒跨越绊线的人员速率在一段时间内超过某个阈值时发出警报。这针对每个方向(进入/离开)分别跟踪。

该规则使用两个参数配置。

  • 每秒跨越的人员速率。

  • 维持跨越速率的时间间隔(秒)。

ROI#

ROI 代表摄像头视场内定义的感兴趣区域。ROI 分析模块可以跟踪人在配置的 ROI 内的移动,并提供与此相关的时间序列计数指标和警报。

ROI 占用计数#

ROI 占用率按每 1 秒的时间间隔计数。可以使用 API 查询特定时间范围,并可选择聚合到更高的时间单位,如分钟、小时和天。

ROI 占用警报#

警报是关于 ROI 占用率的特定感兴趣事件。警报规则定义了触发警报需要满足的条件。

ROI 占用警报规则#

警报规则定义了触发警报需要满足的条件。

以下是 ROI 支持的警报规则类型。

增量警报规则

在一定数量的人员进入或离开 ROI 后发出警报。这针对进入/离开分别跟踪。用作阈值的人数是可配置的。

占用警报规则

在占用 ROI 的人数超过给定时间间隔的某个阈值后发出警报。用作阈值的人数是可配置的。

占用阈值切换警报规则

在占用 ROI 的人数切换到高于或低于配置的阈值后发出警报。用作阈值的人数是可配置的。警报仅在占用率超过阈值或降至阈值以下时发布。

架构#

该系统采用事件驱动的微服务架构模式设计。消息传递系统用于组件之间的松耦合。视觉元数据的流处理实时执行。单独的组件用于分析计算和结果服务。

该系统被分解为以下应用级组件,作为微服务实现。

行为分析#

此组件负责

  • 消费 DeepStream 组件通过 Redis 流通道生成的视觉元数据。

  • 跟踪人员移动并测量占用率(FOV、ROI)和穿越(绊线)计数。

  • 将计数持久化到 Redis 时间序列模块中。

  • 执行警报规则并确定是否发布警报

  • 将警报发布到 Redis 流通道。

  • 维护每个检测到的对象(人)的状态。执行轨迹平滑处理。

  • 将轨迹发布到 Redis 流通道。

分析 Web API#

此组件负责

  • 提供 REST API 以检索存储在 Redis 时间序列中的计数。

  • 将警报持久化到 SQLite DB 中,并提供 REST API 以检索它们。

  • 将视觉元数据持久化到文件系统中,并提供 REST API 以检索它们。

  • 将轨迹持久化到文件系统中,并提供 REST API 以检索它们。

  • 提供 API 以创建、更新和查询警报规则、绊线和 ROI 的配置。

  • 将配置信息持久化到 SQlite DB 中。

  • 通过 Redis 流通道发布配置更改,以通知分析组件更改。

Redis#

  • Redis 时间序列模块用于存储时间序列计数。

  • Redis 流用于与 DeepStream 的异步通信和组件间通信。

Sqlite DB#

  • 存储警报规则、绊线和 ROI 的配置

  • 存储警报

文件系统#

  • 存储视觉元数据和轨迹

文档组织结构#

文档的其余部分按如下方式组织

各种 Metropolis 分析模块的描述可以在相应的章节中找到

视场 (FOV) API 指南:视场 (FOV) 概述和 API 指南。

绊线 (Tripwire) API 指南:绊线概述和 API 指南。

感兴趣区域 (ROI) API 指南:感兴趣区域 (ROI) 概述和 API 指南。

警报 (Alerts) API 指南:警报概述和 API 指南。

元数据 (Metadata) API 指南:感知元数据概述和 API 指南。

行为 (Behaviors) API 指南:行为(轨迹)概述和 API 指南。

部署配置:部署配置。

API 规范:API 规范。