Skip to content

CPU 占用过高

CPU 占用过高会影响 Frigate 的性能与响应速度。本文档列出最有效的配置修改方案,帮助降低 CPU 消耗并优化资源使用。

1. 视频解码硬件加速

优先级:关键

视频解码是 Frigate 中最消耗 CPU 的任务之一。AI 加速器仅负责目标检测,不参与视频流解码。 硬件加速(hwaccel)会将解码工作卸载到 GPU 或专用视频解码硬件,显著降低 CPU 占用,并让同一台设备支持更多路摄像头。

核心概念

分辨率与帧率影响:解码压力随分辨率和帧率指数级增长。 相同帧率下,一路 4K@30fps 流的处理需求约为 1080p 的 4 倍;帧率翻倍,解码负载也翻倍。 这就是多路高分辨率摄像头必须使用硬件加速的原因。

硬件加速优势

  • 大幅降低每路摄像头的 CPU 占用
  • 同一硬件可支持 2–3 倍数量的摄像头
  • 释放 CPU 资源用于移动检测及其他 Frigate 进程
  • 降低系统发热与功耗

配置

Frigate 为常见硬件加速场景提供了预设配置。 请根据你的硬件,在配置文件中设置 hwaccel_args,具体可参考配置参考快速入门指南

硬件加速故障排查

如果硬件加速不生效:

  1. 查看 Frigate 日志中与 hwaccel 相关的 FFmpeg 错误
  2. 确认硬件设备在容器内可正常访问
  3. 确保摄像头流使用 H.264 或 H.265 编码(最常见)
  4. 若自动检测失败,尝试切换不同预设
  5. 确认宿主机已正确安装 GPU 驱动

2. 检测器选择与配置

优先级:关键

为硬件选择合适的检测器,是影响检测性能最重要的因素。 检测器负责运行 AI 模型,识别视频帧中的目标。不同类型检测器的性能与硬件要求差异极大,详见硬件文档

理解检测器性能

Frigate 会先做移动检测,再执行计算量大的目标检测,详见移动检测文档。 检测到移动时,Frigate 会生成一个“区域”(调试界面中的绿色框)并发送给检测器。 检测器的推理速度决定了系统每秒能处理多少次检测。

检测器容量计算: 检测器的处理能力有限,单位为每秒检测次数。 若推理速度为 10ms,则检测器每秒可处理约 100 次检测(1000ms ÷ 10ms = 100)。 如果所有摄像头总需求超过该容量,会出现延迟、漏检或系统跟不上画面。

选择合适的检测器

不同检测器性能差异巨大,可查看硬件文档中目标检测器的预期性能。

多检测器实例

当单个检测器无法满足摄像头数量需求时,部分检测器(openvinoonnx)支持配置多个检测器实例来分担负载。 这对显存充足、可同时运行多个推理进程的 GPU 检测器尤其有用。

多检测器配置详见目标检测器文档

需要添加第二个检测器的情况

  • 即使在正常活动下,跳过帧率(Skipped FPS)持续大于 0

模型选择与优化

使用的模型对检测器性能影响极大。Frigate 为每种检测器提供了优化后的默认模型,你也可以自定义,详见检测器文档

模型大小权衡

  • 更小模型(320x320):推理更快,Frigate 专门针对 320x320 模型做了优化
  • 更大模型(640x640):推理更慢,但对占据画面大部分的超大目标,精度可能更高