【目标检测系统】基于 PyQt5 和 YOLO 的鱼类目标检测系统
·
🐟 鱼类检测系统 (Fish Detection System)
基于 PyQt5 和 Ultralytics YOLO 开发的鱼类目标检测系统,支持图片、批量文件夹、视频文件和实时摄像头四种检测模式。





✨ 一.功能特性
核心功能
- 🎯 模型选择:支持加载任意 YOLOv5/v8/v11 系列
.pt权重 - ⚙️ GPU 模型初始化:启动时预热 CUDA 上下文与首次推理,避免运行时崩溃
- 📄 YAML 类别加载:支持
list和dict两种names字段格式 - ✓ 类别筛选:对话框勾选需要检测的鱼种,支持全选/全不选/反选
- 🖼️ 多源检测
- 单张图片
- 图片文件夹(自动扫描)
- 视频文件
- 实时摄像头
- ▶️ 手动开始:只有点击"开始检测"才执行推理
- ⏸️ 暂停 / 继续 / 停止:运行中随时控制
- 💾 结果保存:带框图片 + Excel 统计表(按类别统计每帧)
- 📊 实时统计:侧边栏累计显示每类鱼检测次数
- 📝 日志记录:操作记录 + 检测日志,带时间戳
- 🀄 中文显示:通过 PIL + 自定义字体绘制中文标签,无乱码
优化增强
- 🎛️ 可调参数面板:置信度 / IoU / 图像尺寸 直接在 UI 上调整
- ⚡ 实时 FPS 显示:视频和摄像头模式下显示推理速度
- 📸 快照功能:摄像头/视频运行中一键保存当前帧(
Ctrl+S) - 📂 快速打开保存目录:检测完成后一键打开(
Ctrl+O) - 📤 统计导出:随时将累计统计导出为 Excel
- 🎨 白色主题:浅色专业界面
- 🔄 默认路径:启动自动加载预设的模型和 YAML
📦 二.环境配置(推荐)
- 操作系统:Windows 10/11(推荐)、Linux、macOS
- Python:3.8 ~ 3.11
- 显卡(可选):支持 CUDA 的 NVIDIA GPU(推荐 GTX 1060 及以上)
- 内存:≥ 8 GB
- 显存:≥ 4 GB(使用 GPU 时)
🚀 三. 操作流程
如果已配置默认路径,启动后会自动完成:
- 模型 → 模型选择 — 选择
.pt权重文件 - 模型 → 模型初始化 (GPU) — 加载模型并预热 GPU
- 类别 → 类别文件选择 (YAML) — 加载类别定义
- 类别 → 类别筛选(可选)— 只检测感兴趣的鱼类
- 数据源 → 选择输入:
- 🖼 图片选择
- 🗂 图片文件夹选择
- 🎬 视频选择
- 📷 实时摄像头
- (可选) 调整右上方参数:置信度 / IoU / 图像尺寸
- ▶ 开始检测 — 运行推理
- 运行中可以:
- ⏸ 暂停 / ▶ 继续
- 📸 拍摄快照(摄像头/视频)
- ⏹ 停止
- 检测完成后点击 📂 打开保存目录 查看结果
📁 四.输出文件结构
每次检测会在 runs/detect/expN/ 下生成独立文件夹:
runs/detect/exp1/
├── det_image1.jpg # 单图/批量:每张标注图
├── det_video.mp4 # 视频:标注视频
├── cam_20260421_153045_30.jpg # 摄像头:自动关键帧
├── snapshot_20260421_153102.jpg # 手动快照
├── detection_results_20260421_153000.xlsx # 图片/批量结果表
├── video_results_20260421_153000.xlsx # 视频统计表
└── camera_results_20260421_153000.xlsx # 摄像头统计表
Excel 表格字段
图片/批量模式
| 文件名 | 检测时间 | 检测总数 | 鲫鱼 | 鲤鱼 | 草鱼 | … |
|---|---|---|---|---|---|---|
| img001.jpg | 2026-04-21 15:30:00 | 5 | 2 | 1 | 2 | … |
视频模式
| 帧序号 | 时间戳(s) | 检测总数 | 鲫鱼 | 鲤鱼 | … |
|---|---|---|---|---|---|
| 120 | 4.80 | 3 | 1 | 2 | … |
摄像头模式
| 时间 | 帧序号 | 检测总数 | 鲫鱼 | 鲤鱼 | … |
|---|---|---|---|---|---|
| 2026-04-21 15:30:45 | 30 | 4 | 2 | 2 | … |
🎛️ 五.参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
| 置信度 (conf) | 0.25 | 低于此值的预测框会被过滤,建议 0.15~0.40 |
| IoU (iou) | 0.45 | NMS 交并比阈值,越低去重越严格 |
| 图像尺寸 (imgsz) | 640 | 推理输入尺寸,越大精度越高但越慢 |
调参经验:
- 漏检多 → 降低
conf(如 0.15) - 误检多 → 提高
conf(如 0.4) - 重叠框多 → 降低
iou(如 0.3) - 小目标多 → 提高
imgsz(如 960 或 1280)
🙏 六.致谢
- Ultralytics YOLO — 目标检测框架
- PyQt5 — GUI 框架
- OpenCV — 图像处理
- Pillow — 中文字体渲染
📮七. 反馈
如有问题或改进建议,欢迎评论或者私信。
更多推荐


所有评论(0)