本帖最后由 gasment 于 2025-11-17 15:08 编辑
我的frigate里目前有10条检测流,峰值检测帧数为60fps,目前使用coral edge tpu跑默认的SSD MobileDet模型做对象检测,SSD MobileDet速度比较快(典型值10ms,我这里为6~7ms),但是精度不行;
需要提高精度的话要跑yolo/yolo-nas,但是官方尚未支持coral检测器的yolo模型;
最近翻到一个github项目,专门为frigate的coral检测器的适配了yolo v9模型(https://github.com/dbro/frigate-detector-edgetpu-yolo9)
如果你也使用coral检测,而又为检测精度烦恼,可以尝试下这个项目,我这里做下搬运
PS:如果想了解更多firgate知识,可以翻下我经验总结文档:【更新0.16.1正式版】万字经验,一文带你入门frigate AI监控 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz!)
测试环境:
- frigate 0.16.2
- 黑裙DSM7.2 linux 5.10
- CC150 8C16T CPU
- nvidia T600 gpu (仅用于编解码)
- coral edge tpu pcie版
跟换模型前后对比:
- CPU:未见明显使用率提升
- coral:yolo9-small-320模型检测速率上升到8~10ms;yolo9-small-512模型检测速率上升到16~18ms;对比默认模型为6~7ms
项目使用方法:
1、下载3个必须文件
person
bicycle
car
motorcycle
airplane
bus
train
truck
boat
bird
cat
dog
horse
sheep
cow
elephant
bear
- 模型文件,目前(v1.5)作者提供了两个版本的模型:
- YOLO v9 small 320x320:输入尺寸为320x320,适合中近距离的检测,检测速度比较快,我这边测试是8~10ms
- YOLO v9 small 512x512: 输入尺寸为512x512,在320x320的基础上,对远距离小物体的检测更好,检测置信度普遍比320高一些,但是检测速度会下降,我这边测试是16~18ms
- 以上模型按需选择
- 320模型:github,网盘分流:
- 512模型:github,网盘分流:
2、将edgetpu_tfl.py、labels-coco17.txt、yolov9-s-relu6-tpumax_320_int8_edgetpu.tflite 3个文件放入到firgate的docker映射目录config下
比如/config/coral_yolo9/
3、停止frigate容器,修改frigate的compose配置。在volumes配置里添加:
volumes:
- /volume1/docker/frigate/frigate_16_release/config/coral_yolo9/edgetpu_tfl.py:/opt/frigate/frigate/detectors/plugins/edgetpu_tfl.py:ro
其中/volume1/docker/frigate/frigate_16_release/config/coral_yolo9/edgetpu_tfl.py需要改为你edgetpu_tfl.py文件的真实路径
4、重新构建frigate compose 容器,启动frigate,进入配置编辑器,将原来的detectors配置修改为:
# detectors: #原来的配置注释掉
# coral:
# type: edgetpu
# device: pci
detectors:
coral:
type: edgetpu
model: #新增一个模型配置
model_type: yolo-generic
labelmap_path: /config/coral_yolo9/labels-coco17.txt #按自己实际路径填写
path: /config/coral_yolo9/yolov9-s-relu6-tpumax_320_int8_edgetpu.tflite #按自己实际路径填写
width: 320 #按自己选择的模型填写
height: 320
5、保存配置后,重启firgate,观察日志有无报错,如启用成功,会看到一些相关输出
6、因为模型更换,识别置信度和旧模型存在差异,需要重新调试检测流的objects filters阈值
✅以上~
|