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

73 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 观赏鱼健康监控系统
基于 YOLOv8 + DeepSORT 的实时观赏鱼检测与健康异常告警 Demo(笔记本摄像头版),通过 Streamlit 提供可视化界面。
## 主要功能
- 实时调用摄像头检测 COCO 数据集中的 `fish` 类别(ID=17),并进行多目标跟踪。
- 记录每条鱼最近 30 帧的运动轨迹,计算速度(像素/秒)。
- 简单异常规则:鱼体速度低且位于画面底部 20% 区域时发出“低速 + 沉底”告警。
- 在页面同时展示视频画面与告警信息。
## 代码结构
- `app.py`:Streamlit 前端入口,负责摄像头采集、显示和告警呈现。
- `fish_tracker.py`:封装检测、跟踪、轨迹维护与异常规则。
- `requirements.txt`:依赖列表。
- `yolov8n.pt`YOLOv8n 预训练权重(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+。安装:
```bash
pip install -r requirements.txt
```
### 额外系统依赖
- OpenCV 访问摄像头需要正确的驱动与权限。
- 若使用 GPU,加装对应版本的 PyTorch 与 CUDA`ultralytics` 会依赖 torch,确保版本匹配)。
## 快速开始
1) 安装依赖(见上)。
2) 连接摄像头,确保权限正常。
3) 运行 Streamlit
```bash
streamlit run app.py
```
4) 在浏览器中打开提示的本地地址,实时查看画面、告警,并自动积累鱼类活动档案;每日 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 版本兼容。
## 下一步可以做什么
- 引入自定义训练的鱼类检测模型,提升精度。
- 丰富健康判定规则(体表异常、呼吸频率、群体行为),将日度报告改为可视化仪表盘。
- 增加数据记录与回放,支持告警/报告历史查询。