panda 1a135cdda7 v1.1
支持本地视频测试
2025-12-23 17:59:18 +08:00
2025-12-23 17:59:18 +08:00
2025-12-23 17:59:18 +08:00
2025-12-23 17:59:18 +08:00
2025-12-23 17:59:18 +08:00
2025-12-23 17:59:18 +08:00
2025-12-23 17:59:18 +08:00
2025-12-23 17:59:18 +08:00
2025-12-23 17:59:18 +08:00

观赏鱼健康监控系统

基于 YOLOv8 + DeepSORT 的实时观赏鱼检测与健康异常告警 Demo(笔记本摄像头版),通过 Streamlit 提供可视化界面。

主要功能

  • 实时调用摄像头检测 COCO 数据集中的 fish 类别(ID=17),并进行多目标跟踪。
  • 记录每条鱼最近 30 帧的运动轨迹,计算速度(像素/秒)。
  • 简单异常规则:鱼体速度低且位于画面底部 20% 区域时发出“低速 + 沉底”告警。
  • 在页面同时展示视频画面与告警信息。

代码结构

  • app.py:Streamlit 前端入口,负责摄像头采集、显示和告警呈现。
  • fish_tracker.py:封装检测、跟踪、轨迹维护与异常规则。
  • requirements.txt:依赖列表。
  • yolov8n.ptYOLOv8n 预训练权重(COCO)。

环境依赖

Python 包

requirements.txt 已列出核心依赖:

  • ultralytics==8.3.241
  • deep_sort_realtime==1.3.2
  • streamlit==1.52.2
  • numpy==2.4.0

建议使用 Python 3.9+。安装:

pip install -r requirements.txt

额外系统依赖

  • OpenCV 访问摄像头需要正确的驱动与权限。
  • 若使用 GPU,加装对应版本的 PyTorch 与 CUDAultralytics 会依赖 torch,确保版本匹配)。

快速开始

  1. 安装依赖(见上)。
  2. 连接摄像头,确保权限正常。
  3. 运行 Streamlit
streamlit run app.py
  1. 在浏览器中打开提示的本地地址,实时查看画面、告警,并自动积累鱼类活动档案;每日 20:00 自动生成当日报告(reports/fish_report_YYYYMMDD.txt)。

核心处理流程

  • FishTracker.process_frame(frame):
    1. 使用 YOLOv8 推理,过滤出 fish 类别且置信度高于阈值(默认 0.5)。
    2. 送入 DeepSORT 进行多目标跟踪,获取每条鱼的 ID 与位置。
    3. 维护每个 ID 近 30 帧的轨迹,计算平均速度(像素/秒),并输出 track_stats(速度、是否在底部、步进位移等)。
    4. 规则判断:速度 < 15 且中心点落在图像底部 20% 区域则告警。
    5. 在帧上绘制边框与 ID,并返回帧、告警列表和 track_stats
  • history_manager.py:累计各鱼 ID 的当日指标(帧数、位移、底部占比、慢速占比、平均速度),20:00 生成日度报告并写入 reports/
  • app.py 循环读取摄像头帧,调用检测与历史积累,时间到达 20:00 时自动生成报告并提示。

配置与自定义

  • 置信度阈值、规则阈值可在 FishTracker.__init__process_frame 中调整。
  • 若要替换模型权重,可将 model_path 指向新 .pt 文件。
  • 需要支持更多异常模式(如停留时间过长、群体异常等)可在规则部分扩展。

已知局限

  • 依赖 COCO 中的 fish 类别,针对特定观赏鱼场景准确率有限;建议用自定义数据微调权重。
  • 规则简单,仅基于速度与位置,可能产生漏报/误报。
  • 未包含录像/截图/日志持久化,需自行扩展。

常见问题

  • 无法打开摄像头:检查设备权限和驱动;在 Windows 上确保未被其他应用占用。
  • 模型加载慢/显存占用高:可换更小模型或在 CPU 上运行(速度会下降)。
  • DeepSORT 报错或缺少依赖:确认安装了 deep_sort_realtime,并确保 OpenCV 版本兼容。

下一步可以做什么

  • 引入自定义训练的鱼类检测模型,提升精度。
  • 丰富健康判定规则(体表异常、呼吸频率、群体行为),将日度报告改为可视化仪表盘。
  • 增加数据记录与回放,支持告警/报告历史查询。
S
Description
观赏鱼健康检测系统
Readme 20 MiB
Languages
HTML 53%
Python 42.4%
CSS 4.6%