本帖最后由 hood2000 于 2024-8-25 14:21 编辑
1.服务器
二手华为2288hv5 一台,垃圾矿卡 tesla P4 一张。
2.监控设备
垃圾tplink一套,支持rtsp 。
3.环境配置(1)PVE配置vGPU host 驱动,单独部署一个docker FastAPI-DLS授权服务,将P4 切分给虚拟机。不得不说,P4这张卡,300多一片,8G显存,待机功耗10w,满载75w,我按2g显存切成为4份,分别配置给黑群、win11、Jellyfin和Frigate,一般软件和解码足够用了。 具体可参考 https://xinalin.com/159/vgpu-configuration-on-pve 。
(2)配置Frigate专用的虚拟机,要用ubuntu server,安装vGPU驱动。驱动装好之后如下图,暂时忽略下面的ffmpeg进程,这是加载了6个摄像头的进程。
(3)配置docker部署frigate。这里可参照使用Frigate配合摄像头进行人数统计最详细的中文教程 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com),也要参照官方文档 Full Reference Config | Frigate。
image: ghcr.io/blakeblackshear/frigate:stable-tensorrt #镜像文件看官方文档,这里选用了自带模型的镜像。
devices: #这是docker直通虚拟机显卡的配置,nvidia gpu及驱动。
- driver: nvidia
count: 1
capabilities: [gpu]
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
volumes:
- /root/frigate/:/config
- /root/frigate/storage:/media/frigate #建议加上,需要下载模型文件
<blockquote>ffmpeg:
hwaccel_args: preset-nvidia-h264 #GPU
(4)frigate配置。配置参照文档自己调整,用gpu模型需要配置好detectors和model。
mqtt:
host: 192.168. . #mqtt的ip
port: 1883 #mqtt端口
user: mqtt #mqtt用户名,如果没有的话,可不写
password: #mqtt密码,如果没有的话,可不写
client_id: frigate #用于区分
detectors:
tensorrt:
type: tensorrt #nvidia tensorrt
device: 0 #第一个gpu
model:
path: /config/model_cache/tensorrt/yolov7-tiny-288.trt
input_tensor: nchw
input_pixel_format: rgb
width: 288
height: 288
objects:
track:
- person
- dog
- face
cameras:
South:
enabled: True
record:
enabled: True
ffmpeg:
inputs:
- path: rtsp://admin:*****@1.1.1. 1:554/stream2&channel2
roles:
- detect
- audio
- record
audio:
enabled: True
detect:
enabled: True
ffmpeg:
hwaccel_args: preset-nvidia-h264 #GPU
4.效果控制界面
动态鹰眼图,可以实时看所有的摄像头。
动态事件,在gpu和模型的加持下,有一点风吹草动都跑不掉,比tplink的app更灵敏更准确。但是,目前发现人狗不分。。。
有gpu的支持,系统占用喜人,功耗不超过30w
5.模型选择
frigate docker部署完成后,如果需要重新选择物体检测的模型,需要删除docker重新构建并生成相应预训练文件。备份好docker-compose.yml和config.yml ,分别在相应位置修改。
模型可选范围Object Detectors | Frigate
frigate:
environment:
- YOLO_MODELS=yolov7-320,yolov7x-640 #模型可选范围见
- USE_FP16=false
detectors:
tensorrt:
type: tensorrt
device: 0 #This is the default, select the first GPU
model:
path: /config/model_cache/tensorrt/yolov7-320.trt #预训练的模型文件
input_tensor: nchw
input_pixel_format: rgb
width: 320 #与上面文件尺寸对应
height: 320
初次编译模型的时间还是挺长的,如果同时选择了几个,不要着急。
换成yolov7-320,分辨率4608x1260占用大概在300m左右,分辨率1792x490大概在150m,识别的成功率明显提高,但是显存和功耗也相应提升不少。
p4在切片为2g显存的情况下,如果采用yolov7-640 ,不足以支持以上6台摄像头。
配合mqtt推送给手机客户端,可参照下文。
Frigate + MQTT + HA 推送摄像头----更新为PushDeer推视截图+视频 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com)
6.更新问题处理1.虚机机restore之后无法恢复。 restore之后,grid驱动授权会失效,症状是启动正常,但是过一会,视频无法采集,编译器无法启用。按上面vgpu驱动安装中教程重新获取授权即可。
|