拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Frigate 硬件选型与对象检测器部署指南:从摄像头、服务器到各加速平台的完整实战

Frigate 硬件选型与对象检测器部署指南从摄像头、服务器到各加速平台的完整实战【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigate导读本指南围绕 Frigate面向 IP 摄像头的实时本地对象检测 NVR的硬件选型与检测器部署展开覆盖摄像头与服务器选购要点、Hailo-8/Coral EdgeTPU/OpenVINO/NVIDIA/Apple Silicon/ROCm/MemryX/RKNN 等全部检测器平台的适用硬件、模型配置与实测推理耗时并深入解释 CPU 与检测器在 Frigate 中的职责分工。读完本文你将能够根据自有硬件准确选型、配置对象检测器并估算其可承载的摄像头规模。一、摄像头选型兼容性优先于参数堆砌Frigate 的整个处理链路拉流、解码、运动检测、目标检测、录制、转码对摄像头输出格式有较强的依赖因此官方对摄像头选购给出了明确建议。1.1 推荐规格编码格式优先选择输出H.264 视频 AAC 音频的摄像头这是与 Frigate 及 Home Assistant 各功能兼容性最好的组合。多子码流支持摄像头最好支持多个子码流从而可以无需转码即为检测detection、直播streaming和录制recording分别使用不同分辨率。这一能力直接决定了 Frigate 各环节能否各取所需避免同一路码流反复解码转码带来的 CPU 开销。1.2 品牌建议与避坑官方推荐的品牌优先级为Dahua大华 Hikvision海康威视 AmcrestDahua 之所以排在 Hikvision 之前官方说明主要是因为更容易购买而非画质更好Dahua 与 Hikvision 均具备多码流、可配置分辨率与帧率的能力且码流稳定性高两者都有以大尺寸传感器著称、夜间画质优秀的型号传感器尺寸比分辨率更重要尤其是在夜间场景大传感器如 1/1.8远优于一味堆高像素Amcrest 是降级推荐其本质是贴牌的 Dahua且贴牌的多为低端型号传感器更小、配置项更少。1.3 必须避开的坑WiFi 摄像头不推荐WiFi 码流可靠性差会导致连接丢失或视频数据丢失尤其是同时部署多台 WiFi 摄像头时问题更明显社区讨论见 Camera ConflictsReolink 4K 及以上型号问题较多多位用户报告各类问题建议 Reolink 摄像头尽量选择 5MP 及以下型号若使用 Reolink务必参照 Reolink 专用配置官方示例机型供参考不构成购买建议Loryta(Dahua) IPC-T549M-ALED-S3、Loryta(Dahua) IPC-T54IR-AS、Amcrest IP5M-T1179EW-AI-V3、HIKVISION DS-2CD2387G2P-LSU/SL ColorVu 8MP。二、服务器选型解码能力决定摄像头规模Frigate 的解码、运动检测、录制都由 CPU 承担详见下文CPU 与检测器的分工一节因此服务器的解码能力直接决定能支撑多少路摄像头。2.1 最低可行标准任意Intel CPU带 AVX AVX2 指令集、可运行 Debian 的机器即可eBay 上大量二手工作站都是成熟选择加分项带有M.2 或 PCIe 插槽以便扩展 Google Coral、Hailo 等 AI 加速卡。2.2 注意点很多迷你主机预装 Windows需要按 getting started 指南 自行安装 Linux官方当前主推 Beelink EQ13N100 CPU 双千兆网口双网口可搭建摄像头专用隔离内网禁止摄像头访问互联网EQ13 缺货时链接可能跳转替代品且Beelink EQ14 存在已知兼容性问题应避免购买。2.3 官方参考服务器能力对照机型能力说明Beelink EQ13可运行数路 1080p 摄像头、中低活动量的目标检测双千兆网口便于搭建隔离摄像头网络Intel 1120P可承载大量 1080p 摄像头、高活动量—Intel 125H可承载大量 1080p 摄像头、高活动量内置 NPU0.17 版本可更高效地进行检测从源码看检测进程与 Frigate 主进程是独立的多进程模型见 frigate/service_manager/multiprocessing.pyCPU 核数与内存带宽会直接影响并发处理能力选购时建议给足内存与共享内存shm-size。三、检测器Detector是什么为什么必须要有检测器detector是专门为高效执行推理而优化的硬件设备用于运行目标检测模型。使用检测器意味着检测之间的延迟更低每秒可执行的检测次数更多Frigate 的设计前提就是必须有一块检测器以获得极低的推理速度将 TensorFlow 推理卸载到检测器后速度提升一个数量级并大幅降低 CPU 负载。Frigate 支持的检测器覆盖绝大多数主流硬件平台官方划分为以下类别详细配置见 对象检测器配置文档平台检测器模型架构支持最佳模型尺寸通用Hailo-8/8L支持多种模型架构tiny / small通用Google Coral EdgeTPU以 ssdlite、mobilenet 为主—通用MemryX MX3支持多种模型架构tiny / small / mediumAMDROCmAMD 独立 GPU支持有限模型架构独立 GPUAppleApple SiliconM1 及以上以 ssdlite、mobilenet 为主任意尺寸含 largeIntelOpenVINO支持大多数模型架构tiny / small / mediumNvidiaNVIDIA GPUONNX支持大多数模型架构任意尺寸含 largeNvidiaJetsonTensorRT/ONNX——RockchipRKNN内置 NPU支持有限模型架构tiny / smallSynapticsSynaptics synap——AXERAAXEngine——注意多个检测器不能混用做目标检测例如 OpenVINO 与 Coral 不能同时用于目标检测但这不影响用其他硬件加速语义搜索等任务详见 semantic_search。四、Hailo-8/8L 检测器Hailo-8 与 Hailo-8L AI 加速模块以M.2 形态 Raspberry Pi HAT提供兼容面广Raspberry Pi 5 的 AI Kit 即包含 PCIe HAT。官方还确认其已在 x86 平台完成测试。4.1 默认模型与硬件自动识别Frigate 的 Hailo 集成会自动识别硬件类型未指定自定义模型时选择对应默认模型Hailo-8L默认模型YOLOv6nHailo-8默认模型YOLOv6n从源码看硬件架构识别是通过hailortcli fw-control identify命令完成的解析输出中的Device Architecture字段区分HAILO8L与HAILO8见 frigate/detectors/plugins/hailo8l.py#L56-L74默认模型yolov6n.hef在首次启动时从 Hailo Model Zoo 下载并缓存缓存后即可完全离线工作见 frigate/detectors/plugins/hailo8l.py#L50-L53 与 网络要求文档。4.2 实测推理耗时官方在 x86双 PCIe 通道上测得的数据优于树莓派方案多摄像头并发也能保持稳定性能模型Hailo-8 推理耗时Hailo-8L 推理耗时ssd mobilenet v1~ 6 ms~ 10 msyolov9-tiny—320: 18 msyolov6n~ 7 ms~ 11 ms4.3 Hailo 硬件安装Raspberry PiBookworm 系统内核自带旧版 Hailo 驱动与 Frigate 不兼容必须先禁用内置驱动modprobe -r hailo_pci、重命名内核模块、depmod -a、重启再运行官方安装脚本Trixie 系统驱动通过 DKMS 安装无冲突直接运行安装脚本即可安装脚本docker/hailo8l/user_installation.sh会安装构建依赖 → 克隆并编译官方 Hailo 驱动 → 安装驱动 → 下载固件 → 配置 udev 规则验证ls -l /dev/hailo0、lsmod | grep hailo_pci、cat /sys/module/hailo_pci/version、ls -l /lib/firmware/hailo/hailo8_fw.bin若出现max_desc_page_size given 16384 is bigger than hw max desc page size 4096错误写入/etc/modprobe.d/hailo_pci.conf配置options hailo_pci force_desc_page_size4096并重启。4.4 在 Docker 中启用与配置在docker-compose.yml中透传设备services: frigate: devices: - /dev/hailo0docker run则加--device /dev/hailo0。随后配置检测器path参数可接受本地 .hef 路径或 URL若两者都给先检查本地文件不存在则从 URL 下载模型缓存于/config/model_cache/hailodetectors: hailo: type: hailo8l device: PCIe model: path: /config/model_cache/hailo/yolov6n.hef # 或 path: https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/.../yolov6n.hef源码佐证Hailo 检测器通过 HailoRT SDK 的VDeviceHailoSchedulingAlgorithm.ROUND_ROBIN调度实现异步推理输入预处理采用保持宽高比的 letterbox 填充preprocess_tensor填充值 114见 frigate/detectors/plugins/hailo8l.py#L26-L44检测置信度阈值默认为 0.4单帧最多返回 20 个检测结果frigate/detectors/plugins/hailo8l.py#L359-L380。五、Google Coral Edge TPU5.1 现状警告官方明确Coral 已不再推荐用于新的 Frigate 安装仅适用于功耗要求极低、或无法使用其他 AI 加速器的部署。Frigate 会尽可能长期保持对 Coral 的支持因为它仍是执行目标检测模型最高效低功耗的设备之一。5.2 两种形态USB 版兼容硬件最广主机无需驱动缺点是没有自动降频throttling机制PCIe / M.2 版需要在主机安装驱动使用 gasket-builder 构建。5.3 性能估算公式一块 Coral 配合默认模型可支撑多路摄像头适合绝大多数用户。Coral 只能同时运行一个模型实例因此最大吞吐 1000 / 推理耗时(ms)FPS例如推理耗时 10ms 时Coral 上限为1000/10 100FPS。如果检测 FPS 经常接近该值应优先调整运动掩码motion masks掩码已调优仍不够才考虑加第二块 Coral。5.4 配置示例detectors: coral: type: edgetpu device: usb # USB 版usb多块用 usb:0、usb:1 # device: pci # PCIe/M.2 版pci多块用 pci:0、pci:1 # device: # 原生 Coral Dev Board 留空源码佐证EdgeTPU 检测器通过 TensorFlow Lite 的load_delegate(libedgetpu.so.1.0, device_config)加载 Coral 委托device未设置时自动使用第一个设备其supported_models仅含ssd与yolo-generic见 frigate/detectors/plugins/edgetpu_tfl.py#L21-L44。六、OpenVINO - Intel 检测器6.1 支持范围第 6 代 Intel 平台及以上带 iGPUx86 主机上的Intel Arc GPU含 Arc A 系列与 B 系列 BattlemageIntel NPU大多数现代 AMD CPU非 Intel 官方支持x86 与 Arm64 主机的 CPU 模式一般不推荐。6.2 实测推理耗时GPU名称MobileNetV2YOLOv9YOLO-NASRF-DETR备注Intel HD 53015–35 ms———只能跑一个检测器实例Intel HD 62015–25 ms—320: ~35 ms—Intel HD 630~15 ms—320: ~30 ms—Intel UHD 730~10 mst-320: 14ms / s-320: 24ms / t-640: 34ms / s-640: 65ms320: ~19 ms / 640: ~54 ms—Intel UHD 770~15 mst-320: ~16 ms / s-320: ~20 ms / s-640: ~40 ms320: ~20 ms / 640: ~46 ms—Intel N100~15 mss-320: 30 ms320: ~25 ms—只能跑一个检测器实例Intel N150~15 mst-320: 16 ms / s-320: 24 ms——Intel Iris XE~10 mst-320: 6 ms / t-640: 14 ms / s-320: 8 ms / s-640: 16 ms320: ~10 ms / 640: ~20 ms320-n: 33 msIntel NPU~6 mss-320: 11 ms / s-640: 30 ms320: ~14 ms / 640: ~34 ms320-n: 40 msIntel Arc A310~5 mst-320: 7 ms / t-640: 11 ms / s-320: 8 ms / s-640: 15 ms320: ~8 ms / 640: ~14 ms—Intel Arc A380~6 ms—320: ~10 ms / 640: ~22 ms336: 20 ms / 448: 27 msIntel Arc A750~4 ms—320: ~8 ms—表内t为 tiny 变体、s为 small 变体数字为该输入分辨率如 t-320 表示 tiny 模型 320 输入。6.3 NPU 注意事项NPU 固件由宿主内核加载不属于 Frigate 镜像内容容器内已捆绑特定版本的 linux-npu-driver宿主固件必须来自该版本或更新版本否则会报MAPPED_INFERENCE_VERSION is NOT compatible with the ELF可用sudo dmesg | grep -i vpu检查宿主固件构建日期Home Assistant OS 不含 NPU 固件无法使用 Intel NPUNPU GPU 双平台建议Core Ultra 处理器用 NPU 做目标检测、GPU 做语义搜索/人脸识别等 enrichment性能与兼容性最佳。6.4 多检测器配置多摄像头场景下单个检测器可能不够OpenVINO 支持定义多个检测器各自跑独立进程、共享检测请求队列detectors: ov_0: type: openvino device: GPU # 或 NPU ov_1: type: openvino device: GPU # 或 NPU源码佐证OpenVINO runner 在GPU/AUTO/NPU设备上设置PERFORMANCE_HINTLATENCY并为 GPU 配置GPU_QUEUE_THROTTLELOW、为 NPU 配置NPU_TURBOYES进程内所有 OpenVINO 推理通过_OPENVINO_LOCK串行化见 frigate/detectors/detection_runners.py#L311-L327。七、Nvidia GPU 检测器Frigate 可利用支持CUDA 12.x 系列库的 Nvidia GPU通过onnx检测器类型在-tensorrt镜像中。7.1 最低硬件要求宿主驱动版本 545CUDA 12.x 具有 minor version 兼容性GPU 计算能力Compute Capability 5.0即 Maxwell 架构或更新宿主需安装 nvidia-container-runtime 以便将 GPU 透传给容器。7.2 参考推理耗时推理耗时因 GPU 与模型差异极大tiny (t)变体通常快于同型号非 tiny 变体。表中 ✅ 表示已用 CUDA Graphs 加速❌ 表示未加速名称✅ YOLOv9✅ RF-DETR❌ YOLO-NASGTX 1070s-320: 16 ms—320: 14 msRTX 3050t-320: 8 ms / s-320: 10 ms / s-640: 28 msNano-320: ~12 ms320: ~10 ms / 640: ~16 msRTX 3070t-320: 6 ms / s-320: 8 ms / s-640: 25 msNano-320: ~9 ms320: ~8 ms / 640: ~14 msRTX 5060 Tit-320: 5 ms / s-320: 7 ms / s-640: 22 msNano-320: ~4 ms—RTX A4000——320: ~15 msTesla P40——320: ~105 ms源码佐证ONNX 检测器在 CUDA 后端会自动启用 CUDA Graphsenable_cuda_graph并通过CudaGraphRunner捕获/回放推理图以降低开销不过 CUDA Graphs 对模型算子有限制YOLO-NAS、D-FINE、PaddleOCR、Jina 系列等复杂模型不支持见 frigate/detectors/detection_runners.py#L178-L200、frigate/detectors/detection_runners.py#L597-L612。八、MemryX MX3社区支持MemryX MX3 以M.2 2280 形态类似 NVMe SSD提供支持 x86Intel/AMD、Raspberry Pi 5、Orange Pi 5 Plus/Max 以及多 M.2 PCIe 载板。单块 MX3 用默认模型即可处理多路摄像头更大规模部署可配置多个 MX3 模块Frigate 支持多检测器配置横向扩展推理容量。默认模型为 YOLO-NAS-Small。重要MX3 是流水线架构其最大 FPS进而支持的摄像头数不能用1/推理耗时计算需参考MX3 Total FPS列估算检测器上限。官方在Intel 13700 CPU上的实测数据模型输入尺寸MX3 推理耗时MX3 总 FPSYOLO-NAS-Small320~9 ms~378YOLO-NAS-Small640~21 ms~138YOLOv9s320~16 ms~382YOLOv9s640~41 ms~110YOLOX-Small640~16 ms~263SSDlite MobileNet v2320~5 ms~1056树莓派、Orange Pi 等 ARM 板卡处理能力不同实际总 FPS 可能受限。部署要点安装需使用MemryX SDK 2.1其他 SDK 版本不支持运行 docker/memryx/user_installation.sh 后重启Docker 需特权模式并挂载 max-managerservices: frigate: privileged: true devices: - /dev/memx0 volumes: - /run/mxa_manager:/run/mxa_manager九、Nvidia Jetson社区支持Jetson 设备在Jetpack 6下通过TensorRT 或 ONNX 检测器支持。配置对应的 硬件加速预设 后会利用 Jetson 的硬件媒体引擎做视频处理配置 TensorRT 检测器 后会利用GPU 与 DLA做目标检测。推理耗时取决于 YOLO 模型、Jetson 平台与nvpmodelGPU/DLA/EMC 时钟频率多数模型典型值为20–40 ms。DLA 比 GPU 更省电但不更快用 DLA 可降低功耗但推理耗时略增。十、Apple Silicon 检测器Frigate 可利用M1 及更新 Apple Silicon的 NPU详见 Apple Silicon 检测器配置。关键限制Apple Silicon 的 NPU无法在容器内访问因此需通过ZMQ 代理与运行在宿主上的 Apple Silicon Frigate detector 通信同机运行时延迟增量很小但 ZMQ 代理本身会带来额外延迟只建议本地连接使用。名称YOLOv9 推理耗时M4s-320: 10 msM3 Prot-320: 6 ms / s-320: 8 ms / s-640: 20 msM1s-320: 9 ms从源码看Apple Silicon 通过 ZMQ IPC 与宿主代理交互相关通信实现在 frigate/detectors/plugins/zmq_ipc.py。十一、ROCm - AMD GPU 检测器Frigate 通过 ROCm 检测器 利用 AMD 独立 GPU需使用-rocm后缀镜像。名称YOLOv9 推理耗时YOLO-NAS 推理耗时RF-DETR 推理耗时AMD 780Mt-320: ~14 ms / s-320: 20 ms320: ~25 ms / 640: ~50 ms—AMD 8700G—320: ~20 ms / 640: ~40 ms—AMD 9060XT 16Gt-320: ~4 ms / s-320: 5 ms320: ~6 msNano-320: ~90 ms部署要点需要访问/dev/kfd与/dev/dri设备非 root 运行还要加入video可能还有render、ssl/_ssl组services: frigate: devices: - /dev/dri - /dev/kfd芯片组覆盖AMD/ROCm 驱动覆盖有限新 GPU 常需用HSA_OVERRIDE_GFX_VERSION覆盖芯片版本内置自动映射 gfx1031→10.3.0、gfx1103→11.0.0services: frigate: environment: HSA_OVERRIDE_GFX_VERSION: 10.0.0排查方法容器内运行/opt/rocm/bin/rocminfo确认 GPU 被识别(unset HSA_OVERRIDE_GFX_VERSION /opt/rocm/bin/rocminfo | grep gfx)查询真实芯片版本 gfxNNN再据此搜索所需覆盖值模型限制D-FINE / DEIMv2 不支持YOLO-NAS 在核显上表现不佳转换建议AMD GPU 内核在模型转 mxr 格式时易出问题推荐先关闭目标检测启动 Frigate 完成模型转换缓存日志显示完成后再在 UI 中启用并确认正常最后在配置中重新开启。十二、Rockchip 平台社区支持Frigate 支持所有 Rockchip 板卡的硬件视频处理但硬件目标检测仅支持RK3562、RK3566、RK3568、RK3576、RK3588。名称YOLOv9 推理耗时YOLO-NAS 推理耗时YOLOx 推理耗时rk3588 3 核tiny: ~35 mssmall: ~20 ms / med: ~30 msnano: 14 ms / tiny: 18 msrk3566 1 核—small: ~96 ms—rk3588 开启全部 3 核时yolo-nas s 的典型推理耗时约25–30 ms。RKNN 检测器跑在板载 NPU 上功耗低适合 tiny/small 模型。源码佐证RKNN runner 通过rknnlite.api.RKNNLite加载模型并以core_mask指定 NPU 核心frigate/detectors/detection_runners.py#L462-L485Frigate 还会对 ONNX 模型做 RKNN 自动转换auto_convert_model。镜像与依赖见 docker/rockchip/Dockerfile。十三、Synaptics社区支持Synaptics 检测器在带 NPU 的 Synaptics 设备如 Astra Machina上运行synap模型默认模型为 mobilenet。名称Synaptics SL1680 推理耗时ssd mobilenet~25 msyolov5m~118 ms十四、AXERA社区支持AXEngine 检测器通过 AXERA NPU 运行模型默认模型为 yolov9。名称AXERA AX650N/AX8850N 推理耗时yolov9-tiny~4 ms十五、CPU 与检测器的分工ELI5 版官方用一个通俗比喻解释两者关系CPU 是我Google Coral 是我的搭档 Mendel——CPU 负责在整幅画面中找运动检测器负责认出运动的物体是什么CPU 等待画面中出现运动抓拍一帧交给检测器检测器判断画面内容绝大多数时候没有目标发现目标如邻居家的鸟时CPU 与检测器配合完成识别。提高分辨率/帧率的影响画面数据量显著增加后CPU 需要扫描更大区域、解析更多数据计算压力上升检测器也需要处理包含更多细节的图片同样更吃力。因此 Frigate 的平衡策略是CPU 负责运动检测检测器只负责被送入的运动区域帧这样一块检测器就能服务于大量摄像头而不过载。源码佐证检测请求由各摄像头提交到共享队列检测器进程从队列取帧推理多检测器各自跑在独立进程中见 frigate/detectors/detection_runners.py 与 frigate/object_detection/base.py。十六、用了 Coral 还需要 hwaccel 吗需要结论需要Coral 不解码视频流。视频流解压解码本身消耗大量 CPU视频压缩依赖关键帧I-frame发送完整画面后续帧只携带与关键帧的差值CPU 必须将每个差值帧与关键帧合并才能还原完整画面。分辨率与帧率越高解码所需的算力越大。因此尽量在摄像头端将分辨率与帧率设置为实际所需值避免无谓的解码工作在 Frigate 中配置 硬件加速hwaccel把解码也卸载到 GPU/媒体引擎CPU 才能专注于运动检测与帧合成。十七、小结选型决策路径摄像头H.264 AAC、多子码流、传感器优先避开 WiFi 与 Reolink 4K服务器Intel CPUAVX/AVX2 Debian 即可起步预留 M.2/PCIe 扩展位按摄像头路数与活动量对照官方能力表选择检测器按手头硬件对号入座——树莓派/x86 通用选 Hailo-8/8L 或 MemryX MX3Intel 平台用 OpenVINONPU/GPUNvidia 用 ONNXCUDA Graphs 加速Apple 用 Apple Silicon 代理AMD 用 ROCmRockchip 板用 RKNNJetson 用 TensorRT估算负载单实例设备用1000/推理耗时估算 FPS 上限Coral流水线设备用厂商总 FPS 列MX3并始终结合 运动检测与掩码调优 控制送入检测器的帧量别忘了无论哪种检测器视频解码的 hwaccel 都要单独配置检测器不负责解码。参考文档索引对象检测器完整配置文档硬件加速视频文档安装与硬件额外步骤Hailo/MemryX 等Getting Started 指南摄像头专用配置含 ReolinkHailo 检测器源码实现EdgeTPU 检测器源码实现模型 runner 与加速后端实现检测器配置模型定义Hailo 用户安装脚本MemryX 用户安装脚本【免费下载链接】frigateNVR with realtime local object detection for IP cameras项目地址: https://gitcode.com/GitHub_Trending/fr/frigate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门