零基础搭建 AI+安防应用:从环境准备到人脸识别监控落地
想把普通摄像头变成能识别人员、车辆并自动报警的智能安防系统,最省事的做法是用 Docker 跑一个开源视频分析平台。
下面以 Frigate 为例,配合轻量人脸识别服务,讲清楚从硬件准备到报警验证的完整流程。
先确认硬件和系统条件
AI 视频分析吃 CPU 和内存,零基础用户优先选带核显的 Intel 平台,或者有 NVIDIA 显卡的机器。
纯 CPU 也能跑,但检测帧率要调低。
- 系统:Ubuntu 22.04 或 Debian 12,已安装 Docker 和 Docker Compose。
- 摄像头:支持 RTSP 协议的网络摄像头,海康、大华、TP-LINK 均可,在摄像头后台开启 RTSP 并记下地址,格式类似
rtsp://user:pass@192.168.1.64:554/Streaming/Channels/101。 - 存储:至少预留 20GB 给录像和模型文件。
- 确认 Docker 可用:
docker --version
docker compose version
如果提示命令不存在,先执行 sudo apt install docker.io docker-compose-plugin -y 并重启终端。
部署 Frigate 并接入摄像头
创建配置目录,避免容器重建后配置丢失:
mkdir -p /opt/frigate/config
cd /opt/frigate
新建 docker-compose.yml,写入以下内容(按实际摄像头地址替换 rtsp:// 部分):
services:
frigate:
image: ghcr.io/blakeblackshear/frigate:stable
container_name: frigate
restart: unless-stopped
privileged: true
shm_size: "256mb"
volumes:
- ./config:/config
- ./media:/media/frigate
- /etc/localtime:/etc/localtime:ro
ports:
- "5000:5000"
- "8971:8971"
environment:
- FRIGATE_RTSP_PASSWORD=你的摄像头密码
在同级目录新建 config/config.yml,最小可用配置如下:
mqtt:
enabled: false
detectors:
cpu1:
type: cpu
cameras:
front_door:
ffmpeg:
inputs:
- path: rtsp://admin:密码@192.168.1.64:554/Streaming/Channels/101
roles:
- detect
detect:
width: 1280
height: 720
fps: 5
启动容器:
docker compose up -d
docker logs -f frigate
日志出现 Camera processor started 且没有反复报错,说明拉流成功。
浏览器访问 http://服务器IP:5000 能看到画面即部署完成。
开启智能检测与报警联动
Frigate 默认只做移动侦测,要识别人和车,需要在 config.yml 的摄像头下补充 objects 配置:
objects:
track:
- person
- car
保存后执行 docker compose restart frigate 生效。
此时画面中有人经过,事件列表会出现带标签的检测框。
报警联动推荐先用 MQTT 接入 Home Assistant 或 Node-RED。
在配置中加入:
mqtt:
enabled: true
host: 192.168.1.10
user: mqttuser
password: mqttpass
重启后,Frigate 会向 frigate/events 主题推送 JSON 消息,下游工具订阅该主题即可触发通知、开灯或录像。
避坑提醒:这些地方最容易卡住
- RTSP 地址写错:日志出现
Unable to open input时,用ffplay rtsp://...在宿主机先验证地址能否播放,排除密码、通道号错误。 - CPU 占用过高:默认 CPU 检测器在 1080p 下容易跑满,把
detect宽高降到 1280x720、fps设为 5,可明显降低负载。 - 共享内存不足:多路摄像头时
shm_size建议调到512mb或1gb,否则容器会异常退出。 - 人脸识别不要一开始就上:Frigate 本身不做人脸比对,需要额外部署识别服务并通过 MQTT 联动。建议先把人员检测跑稳,再考虑人脸,避免一次引入太多变量。
- 配置改完不生效:确认修改的是宿主机
/opt/frigate/config/config.yml,而不是容器内路径,改完必须重启容器。
验证智能安防是否真正生效
完成配置后,按以下顺序检查:
- 打开
http://服务器IP:5000,确认画面流畅、时间戳正常。 - 在摄像头前走动,事件页应出现
person标签的快照和录像片段。 - 查看
docker stats frigate,CPU 占用长期低于 80% 视为可接受。 - 若配置了 MQTT,用
mosquitto_sub -h 192.168.1.10 -t frigate/events订阅,触发检测时应收到消息。
以上步骤全部通过,说明 AI+安防的基础链路已经跑通。
后续再根据实际场景增加摄像头、调整检测区域或接入人脸识别服务,排错时优先回看日志和 RTSP 地址这两处。