前言:
前面两篇文章中,我们搭建了frigate和配置了视频流硬件加速,这次我们来配置ai的硬件计算,前两篇教程使用的是 CPU这次我么来用GPU。
本次教程使用的nVidia tesla p4 作为yolov7模型的硬件加速,在开始前,我们需要注意,使用时处理一些基础问题。
frigate的ai部分使用nvidia显卡或者计算卡的时候,使用的是tensonrrt,容器要求,nvidia显卡驱动不能低于530,cuda不能低于12,所以在开始前,请自行更新驱动和cuda到要求版本,否者在使用中会导致无画面,或者检测时报错未收到帧。
教程:
用命令查看当前nvidia驱动版本,和cuda版本nvidia-smi
驱动版本和cuda版本符合要求,我们就继续,如果是Linux系统,需要配置NVIDIA Container Toolkit,如果是UNRAID安装nVidia驱动插件后就包含了,所以可以跳过此步骤,其他系统都需要安装。
网址:Installing the NVIDIA Container Toolkit — NVIDIA Container Toolkit 1.14.5 documentation
安装过程很简单,几条命令即可,(需要科学网络)
重新编辑docker compose的启动文件,在frigate增加下面参数。
###frigate frigate: image: ghcr.io/blakeblackshear/frigate:stable-tensorrt ... privileged: true ... environment: - "YOLO_MODELS=yolov4-608,yolov7x-640" - "USE_FP16=false" ... deploy: resources: reservations: devices: - driver: nvidia device_ids: ['0'] capabilities: [compute,utility,video,gpu]
启动参数中增加了模型参数和nVidia显卡参数,其中注意YOLO_MODELS=yolov4-608,yolov7x-640
是模型参数,因为nVidia tesla p4 并不支持FP16所以增加参数USE_FP16=false
关闭fp16.
模型测参数和型号,官方给了一个列表,我这里用的是这两个,yolov7x-640的显存消耗大约800-1000M显存,对于8G的P4 还算可以。
官方提供参数:
yolov3-288 yolov3-416 yolov3-608 yolov3-spp-288 yolov3-spp-416 yolov3-spp-608 yolov3-tiny-288 yolov3-tiny-416 yolov4-288 yolov4-416 yolov4-608 yolov4-csp-256 yolov4-csp-512 yolov4-p5-448 yolov4-p5-896 yolov4-tiny-288 yolov4-tiny-416 yolov4x-mish-320 yolov4x-mish-640 yolov7-tiny-288 yolov7-tiny-416 yolov7-640 yolov7-320 yolov7x-640 yolov7x-320
大家可以根据自己的视频流,硬件性能选择模型,配置完成后,使用docker compose up -d启动容器,但是启动后需要等一短时间,才能访问frigate,因为增加了模型参数后,frigate会根据参数生成模型,这个过程需要一段时间,等大约15分钟左右,使用ip:5000尝试访问frigate。
能访问到frigate后,在webui界面左侧找到config,使用webui的编辑器编辑配置文件。
####目标检测 detectors: tensorrt: type: tensorrt device: 0 ###GPU ID选择 model: path: /config/model_cache/tensorrt/yolov7x-640.trt input_tensor: nchw input_pixel_format: rgb width: 640 height: 640
增加完成后,点击上面的保存并重启。
配置了gpu的ai推算后,重启时间会稍微增长,稍微有耐心等待,启动后访问frigate的web界面看system查看是否有gpu相关信息。
结尾:
在ai推算加速上,frigate还支持rk的芯片Google的tpu nvidia的显卡也是可以的但是我目前受硬件限制,只能做P4的教程了。
请登录后查看评论内容