Frigate NVR 的 zones 功能如何细化事件与告警?

Frigate 的 zones(区域)功能让你在摄像头画面里划出特定范围,只有当被检测的物体进入或离开这个范围时,才触发对应的事件与通知。它适合已经用上 Frigate 本地物体检测、但被整画面告警打扰的用户——比如车道、门前台阶、邮箱、垃圾桶这类你真正关心的位置。前提是你已经配置好摄像头和至少一个可用的物体检测器,zone 是在此之上做“空间过滤”的一层。

zones 解决的是什么问题

Frigate 本身已经用本地 AI 物体检测替代了传统 NVR 的简单运动检测,能判断画面里的动静是不是人、车等目标。但一个摄像头往往覆盖很大范围:马路、人行道、邻居家的树都会被拍进去。如果只要画面里出现人就通知,你依然会收到大量与你无关的告警。

zone 的作用就是把“检测到什么”进一步收窄为“检测到什么、并且出现在哪里”。Frigate 实时跟踪物体位置,因此可以判断出一个人是走在人行道上,还是已经踏上你家门前台阶;一辆车是路过,还是拐进了你的车道。通知可以只绑定到这些精确位置。

工作原理:从检测到区域判定

理解 zone 的关键是分清两层:

  • 物体检测:AI 加速器逐帧识别画面中的目标(人、车等),Frigate 为每个目标维护一条实时轨迹。
  • 区域判定:zone 是你在画面上定义的多边形区域。Frigate 根据物体轨迹与区域的交叠关系,判断它是否进入、停留在区域内或离开。

因此 zone 不是重新做一次识别,而是在已有检测结果上做空间过滤。物体在画面里移动时,轨迹会跨越不同区域,Frigate 据此确定“人开始走上台阶”或“车进入车道”的具体时刻。

怎么用 zones 细化事件与告警

典型配置思路如下:

  1. 在摄像头画面上定义 zone:为每个关心的位置画一个多边形,例如 front_steps(门前台阶)、driveway(车道)、mailbox(邮箱)。
  2. 给 zone 绑定你关心的物体类型:比如台阶区域只关心 person,车道区域关心 car 和 person。
  3. 把通知和自动化条件指向 zone:让告警只在目标进入指定 zone 时触发,而不是整画面出现目标就触发。
  4. 结合 Home Assistant 等平台使用:Frigate 通过 MQTT 暴露实时传感器和事件,Home Assistant、OpenHab、NodeRed 等可以订阅这些状态,把 zone 事件变成自动化动作或通知。

预期结果是:你收到的通知对应“有人上了门前台阶”,而不是“画面里有人经过”。这直接减少了需要人工回看的无关片段。

一个具体场景

假设摄像头同时拍到人行道和你家车道:

  • 不设 zone:每个路过的人都会触发通知。
  • 设 driveway zone 并只对 car 告警:只有车辆真正驶入车道才通知,路人走过不打扰。
  • 设 front_steps zone 并只对 person 告警:只有人踏上台阶才提醒,人行道上的行人被忽略。

这样通知的语义从“画面里有东西”变成“你关心的位置发生了你关心的事”。

选择与使用时的注意点

  • zone 的精度取决于你画的范围是否贴合实际位置,画得太大会把无关目标包进来,太小可能漏掉边缘情况。
  • zone 依赖物体轨迹的连续性。如果目标被长时间遮挡导致轨迹中断,进入区域的判定可能受影响。
  • zone 是过滤层,不替代检测本身。检测器性能不足时,zone 也无法凭空补上漏检的目标。
  • 官方资料提到 Frigate 可运行 100+ 次物体检测每秒,配合支持的 AI 加速器能减少漏帧,这对依赖连续轨迹的 zone 判定有帮助。

它和其他功能的关系

zone 常和 Frigate 的 Home Assistant 集成一起用:Frigate 直接接入 Home Assistant 的媒体浏览器,提供低延迟摄像头实体,并暴露实时传感器和开关。zone 事件可以作为这些传感器状态的一部分,驱动自动化与通知。官方用户反馈中,有人强调 Frigate 的可定制性和与 Home Assistant 的紧密集成,也有人提到它帮助把误检测从硬盘里清掉、实现“零误报”——zone 正是达成这种效果的主要手段之一。

frigate.video
NVR with realtime local object detection for IP cameras