基于 YOLOv8 深度学习模型与 PyQt5 桌面框架构建,旨在实时检测盲道上的常见障碍物,为视障人士的出行安全提供辅助。系统提供直观的可视化操作界面,支持图片、视频文件和实时摄像头三种检测模式,并集成了完整的用户认证与历史记录功能。
✨ 主要功能
用户认证系统
- 登录 / 注册:支持用户名与密码的账号体系,密码经 SHA-256 加密后存储于本地
users.json。 - 找回密码:通过安全问题验证身份后重置密码(需注册时设置安全问题)。
多模式障碍物检测
- 图片识别:上传单张图片,系统识别后以标注图和详情表格(类别、置信度、坐标)的形式展示结果,支持一键保存。
- 视频识别:逐帧处理本地视频文件,实时显示检测画面、用时、目标数量及进度条。
- 摄像头识别:调用本地摄像头进行实时画面捕捉和障碍物检测,支持多设备切换。
历史识别记录
- 每次完成图片、视频或摄像头识别后,系统自动将识别时间、来源类型、文件名、目标数量和用时写入本地
history.json。 - 在"历史记录"页面可查看所有记录(按时间倒序排列),支持刷新、删除选中和清空全部操作。
可视化界面
- 浅色渐变主题:默认采用清爽的蓝色渐变主题,同时内置深蓝、绿色、橙色等多种主题可切换。
- 左侧导航栏:在图片识别、视频识别、摄像头识别、历史记录四个模块间快速切换。
- 自动加载权重:启动时自动寻找
runs/train/下最新的best.pt,也支持手动选择。
支持识别的障碍物类别(共 16 种)
英文标签 |
中文名称 |
英文标签 |
中文名称 |
blind track |
盲道 |
pole |
立杆 |
ashcan |
垃圾桶 |
fire_hydrant |
消防栓 |
car |
汽车 |
stop_sign |
停止标志 |
bicycle |
自行车 |
truck |
卡车 |
person |
行人 |
dog |
狗 |
spherical_roadblock |
球形路障 |
motorbike |
摩托车 |
warning_column |
警示柱 |
bus |
公交车 |
tricycle |
三轮车 |
reflective_cone |
反光锥 |
🛠️ 技术栈
类别 |
技术 |
深度学习模型 |
Ultralytics YOLOv8 |
深度学习框架 |
PyTorch |
图形用户界面 |
PyQt5 |
图像处理 |
OpenCV-Python |
数值计算 |
NumPy |
📁 文件结构
├── gui.py # 主程序 GUI 界面与核心推理逻辑 ├── login.py # 登录、注册、找回密码模块 ├── theme.py # 主题管理器(浅色渐变 / 深蓝 / 绿色 / 橙色) ├── history_manager.py # 历史识别记录读写管理 ├── train.py # 模型训练脚本 ├── requirements.txt # Python 依赖清单 ├── users.json # 用户数据库(运行后自动生成) ├── history.json # 历史记录数据库(运行后自动生成) ├── data/ # 数据集目录 │ └── data.yaml # 数据集配置文件 └── runs/ # YOLOv8 训练 / 推理输出目录 └── train/ └── blindtrack_detection/ └── weights/ └── best.pt # 训练好的最优权重(自动加载)
🚀 快速开始
1. 环境准备
- Python 3.8+
- (可选但推荐)NVIDIA 显卡 + CUDA,用于 GPU 加速推理
2. 安装依赖
# 建议先创建虚拟环境 python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # Linux / macOS pip install -r requirements.txt
3. 准备模型权重
- 自动加载:将训练好的权重目录(含
best.pt)放在runs/train/下,启动时自动识别最新权重。 - 手动选择:在"图片识别"页面点击"选择权重"按钮手动指定
.pt文件。
4. 启动程序
python gui.py
首次运行会弹出登录窗口,请先注册账号再登录。
📖 使用指南
用户认证
- 点击"注册账号",填写用户名(≥3字符)和密码(≥6字符)完成注册。
- 登录后进入主界面。
图片识别
- 确认顶部权重路径已加载(或手动选择
best.pt)。 - 调整置信度阈值(默认 0.25)。
- 点击"打开图片",选择图片后系统自动检测。
- 右侧面板展示目标列表;点击"保存结果"导出标注图。
视频识别
- 点击"选择视频"选择
.mp4 / .avi / .mov / .mkv文件。 - 点击"开始"逐帧检测,进度条实时更新;点击"停止"终止。
- 识别结束后自动写入历史记录。
摄像头识别
- 点击"刷新设备"扫描可用摄像头并在下拉列表中选择。
- 点击"开始"进行实时检测;点击"停止"结束并写入历史记录。
历史记录
- 点击左侧导航"历史记录"可查看所有历史。
- 支持选中行后点击"删除选中",或"清空全部"一键清除。
📊 模型训练
使用 train.py 对自定义数据集进行训练:
python train.py
训练完成后,结果输出至 runs/train/ 目录,包含以下关键文件:
文件 |
说明 |
|
验证集上表现最优的权重,供推理使用 |
|
各 epoch 的损失、精确率、召回率、mAP 变化曲线 |
|
混淆矩阵,对角线越亮分类越准确 |
|
精确率-召回率曲线,曲线下面积越大越好 |
|
F1 分数曲线,用于寻找最优置信度阈值 |
|
数据集类别与标注框分布可视化 |
|
验证集批次预测效果直观展示 |
本项目为个人原创,结构清晰,功能完整,适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求可以评论或私信作者。