部署配置#
Metropolis Analytics 微服务组件以 Docker 容器的形式使用 Docker Compose 部署。
Docker Compose 配置文件提供了变量,用于在部署时配置某些重要参数。
注意
值名称前缀在未来版本中可能会更改。
配置参数#
基于对象类型的过滤(多类)#
目标:指定分析微服务将处理用于分析的对象类型(例如,人、汽车、卡车等)。
原理:当像 Yolo8 这样可以检测大量对象类型的模型用于感知时,可能仅处理某些类型的对象并丢弃其他对象会很有用。
要处理以进行分析的对象类型
效果:指定分析微服务将处理的对象类型
config/emdx-analytics/config.yaml
名称: filters.state_management.class_target
类型:字符串数组
描述:指定应处理以进行分析的对象类型。用于感知的模型决定了检测到的对象类型。通配符 '*' 表示处理所有对象类型。像 [car, truck] 这样的特定列表表示仅处理这些对象类型。
默认值:单项 '*'。这意味着处理所有对象类型。
要处理以进行分析 API 的对象类型
效果:指定分析 API 微服务将处理的对象类型。
config/emdx-webapi/config.yaml
名称: objectTypes
类型:字符串数组
描述:指定应处理以进行分析的对象类型。用于感知的模型决定了检测到的对象类型。通配符 '*' 表示处理所有对象类型。像 [car, truck] 这样的特定列表表示仅处理这些对象类型。
默认值:单项 '*'。这意味着处理所有对象类型。
注意:A) 和 B) 的值应始终匹配。这意味着如果为 A 指定了 [car, truck],则也应为 B 指定。
绊线空间和时间缓冲区#
目标:当人员或其检测到的边界框在绊线线段周围抖动时,抑制多次穿越的噪声。
原理:不仅基于单帧位置决定穿越,还要观察一段时间窗口内的运动行为,并以信心做出决定并提供稳定的结果
这些缓冲区参数还定义了用户可以根据其用例在延迟和准确性之间做出的权衡。
空间缓冲区:以像素为单位指定
效果:不仅要跨过绊线,还要移动指定的像素距离,才能被认为是有效的穿越。
config/emdx-analytics/config.yaml
名称: filters.tripwire.pixel_buffer
类型:整数。这定义了用户可以根据其用例在延迟和准确性之间做出的权衡。
描述:绊线两侧的像素数,用作抑制抖动/徘徊的缓冲区
默认值:15 像素
时间缓冲区:以帧数为单位指定
效果:不仅要跨过绊线,还要在跨过后的指定视频帧数内在另一侧被发现,才能被认为是有效的穿越。
config/emdx-analytics/config.yaml
名称: filters.tripwire.frame_buffer
类型:整数
描述:人员在绊线另一侧被检测到的帧数,以便将其视为穿越
默认值:5 帧
重要
空间缓冲区和时间缓冲区标准都需要满足,穿越才能被认为是有效的。
准确性与延迟
这些缓冲区还定义了您可以根据用例在延迟和准确性之间做出的权衡。空间和时间缓冲区的值越高,通常会导致更高的准确性。但这会以更高的延迟为代价,以便在实际穿越后报告计数。
ROI 空间和时间缓冲区#
目标:当人员或其检测到的边界框在 ROI 线段周围抖动时,抑制多次穿越的噪声。
原理:不仅基于单帧位置决定占用,还要观察一段时间窗口内的运动行为,并以信心做出决定并提供稳定的结果
空间缓冲区:以像素为单位指定
效果:不仅要跨过 ROI 线,还要移动指定的像素距离,才能被认为在 ROI 中存在或不存在。
config/emdx-analytics/config.yaml
名称: filters.roi.pixel_buffer
类型:整数
描述:ROI 线两侧的像素数,用作抑制抖动/徘徊的缓冲区
默认值:15 像素
时间缓冲区:以帧数为单位指定
效果:不仅要跨过 ROI 线,还要在跨过后的指定视频帧数内在另一侧被发现,才能被认为是有效的穿越
config/emdx-analytics/config.yaml
名称: filters.roi.frame_buffer
类型:整数
描述:人员在 ROI 另一侧存在的帧数,以便将其视为有效的穿越。
默认值:5 帧
重要
空间缓冲区和时间缓冲区标准都需要满足,穿越才能被认为是有效的。
附加时间缓冲区:以帧数为单位指定
效果:如果 B) 空间缓冲区标准未满足,但人员在跨过后的指定视频帧数内在另一侧被发现,那么也应将其视为有效的穿越。
config/emdx-analytics/config.yaml
名称: filters.roi.frame_buffer_2
类型:整数
描述:人员在 ROI 另一侧被检测到的帧数,以便将其视为有效的穿越。
默认值:50 帧
准确性与延迟
这些缓冲区还定义了您可以根据用例在延迟和准确性之间做出的权衡。空间和时间缓冲区的值越高,通常会导致更高的准确性。但这会以更高的延迟为代价,以便在实际穿越后报告计数。
FOV、绊线、ROI 计数保留时长#
FOV 占用计数存储在 Redis 时序键中。计数是为每个元数据帧计算的,并聚合到 1 秒的时间窗口,然后写入 Redis 时序数据库。窗口时长为 15 秒、1 分钟、15 分钟的高级时间聚合是使用此 1 秒基本聚合值计算的。
每个时间窗口聚合的保留时长可以分别为 FOV、绊线和 ROI 指定。
以下两个配置文件包含这些设置。相同的设置需要应用于这两个文件。
config/emdx-analytics/config.yaml
config/emdx-webapi/cv_config.yaml
FOV 的顶层变量
名称: redis.timeseries.fov.tableGranularities.retention_msecs
类型:时间窗口聚合对象数组
描述:包含每个时间窗口聚合的对象(1 秒、15 秒、1 分钟、15 分钟)
绊线的顶层变量
名称: redis.timeseries.tripwire.tableGranularities.retention_msecs
类型:时间窗口聚合对象数组
描述:包含每个时间窗口聚合的对象(1 秒、15 秒、1 分钟、15 分钟)
ROI 的顶层变量
名称: redis.timeseries.roi.tableGranularities.retention_msecs
类型:时间窗口聚合对象数组
描述:包含每个时间窗口聚合的对象(1 秒、15 秒、1 分钟、15 分钟)
时间窗口聚合对象
名称: retention_msecs
类型:整数
描述:在 Redis 时序数据库中为特定时间窗口聚合保留计数的持续时间,以毫秒为单位
每个保留对象都使用 unit 和 value 变量来标识其时间窗口。
1 秒.unit=sec 且 value=1
15 秒.unit=sec 且 value=15
1 分钟.unit=min 且 value=1
15 分钟.unit=min 且 value=15
每个时间窗口聚合都有一个默认保留值,如下所示
1 秒. 2678400000 毫秒 / 31 天
15 秒. 8035200000 毫秒 / 93 天
1 分钟. 16070400000 毫秒 / 186 天
15 分钟. 32140800000 毫秒 / 372 天
注意:两个配置文件中的值应进行修改并始终匹配。
警报保留时长#
数据库中警报数据的保留可以使用以下配置变量进行配置。
配置文件:config/emdx-webapi/cv_config.yaml
变量
名称: datastorage.alerts.retention_msecs
类型:整数
描述:在 SQLite 数据库中保留警报的持续时间,以毫秒为单位
默认值:15552000000 毫秒 / 180 天
元数据保留时长#
文件系统中帧级元数据的保留可以使用以下配置变量进行配置。
变量
名称: metadatastorage.metadata.retention_msecs
类型:整数
描述:在文件系统中保留视觉元数据的持续时间,以毫秒为单位
默认值:604800000 毫秒 / 7 天
轨迹保留时长#
文件系统中对象级轨迹的保留可以使用以下配置变量进行配置。
变量
名称: metadatastorage.trajectory.retention_msecs
类型:整数
描述:在文件系统中保留轨迹的持续时间,以毫秒为单位
默认值:604800000 毫秒 / 7 天