YOLO11+ PyQt5 目标检测系统
一个基于YOLO11和PyQt5的现代化目标检测系统,支持图片、视频和摄像头实时检测,并集成DeepSeek AI分析功能。

项目简介
本项目是一个功能完整的目标检测系统,采用YOLO11作为核心检测算法,PyQt5作为图形界面框架。系统支持多种检测模式,包括图片检测、视频文件检测和摄像头实时检测,并提供了丰富的可视化功能和AI智能分析能力。
功能特点
核心功能
- 多模式检测 :支持图片检测、视频文件检测、摄像头实时检测
- 实时显示 :左右分屏显示原图和检测结果,便于对比分析
- 参数调节 :可实时调整置信度阈值和IoU阈值
- 性能统计 :实时显示FPS、检测数量、处理时间等性能指标
- 历史记录 :记录检测历史,包括时间、模式和路径信息
- 数据可视化 :使用pyecharts生成统计图表,直观展示检测数据
AI智能分析
- DeepSeek集成 :集成DeepSeek API,提供智能检测结果分析
- 专业建议 :基于检测结果提供参数优化和改进建议
- 默认分析 :当API不可用时,提供本地分析结果
界面特点
- 现代化UI :采用深色科技风格,界面美观大方
- 响应式设计 :界面布局合理,操作便捷
- 多标签页 :实时视图、统计图表、历史记录分页显示
环境要求
操作系统
- Windows 10/11
- Linux (Ubuntu 18.04+)
- macOS 10.14+
Python版本
- Python 3.8 或更高版本
硬件要求
- CPU:支持AVX指令集的处理器
- 内存:建议8GB以上
- 显卡:支持CUDA的NVIDIA显卡(可选,用于加速)
- 磁盘空间:至少2GB可用空间
安装配置
1. 克隆或下载项目
git clone code cd yolo11-pyqt5
2. 创建虚拟环境(推荐)
# 使用venv创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows: venv\Scripts\activate # Linux/macOS: source venv/bin/activate
3. 安装依赖
pip install -r requirements.txt
依赖包列表:
- PyQt5==5.15.10 - 图形界面框架
- opencv-python==4.8.1.78 - 图像处理库
- ultralytics==8.3.248 - YOLO模型库
- requests==2.31.0 - HTTP请求库
- numpy==1.24.4 - 数值计算库
- pyecharts==2.0.3 - 数据可视化库
4. 下载YOLO11模型
首次运行时,程序会自动下载 yolo11n.pt 模型文件。如果下载失败,可以手动下载:
# 使用ultralytics命令下载 yolo detect predict model=yolo11n.pt # 或者从官网下载后放到项目目录 # 下载地址:https://github.com/ultralytics/assets/releases
使用方法
启动程序
python main.py
基本操作
1. 选择检测模式
- 图片检测 :选择单张图片进行目标检测
- 视频文件检测 :选择视频文件进行逐帧检测
- 摄像头实时检测 :使用摄像头进行实时检测
2. 调整参数
- 置信度阈值 :控制检测的置信度,值越高检测越严格
- IoU阈值 :控制非极大值抑制的重叠阈值
- 重置默认值 :一键恢复默认参数设置
3. 控制检测
- 选择文件 :选择要检测的图片或视频文件
- 开始检测 :启动检测过程
- 停止检测 :停止正在进行的检测
- 清除结果 :清空所有检测结果和统计信息
4. 查看结果
- 实时视图 :左右分屏显示原图和检测结果
- 统计图表 :查看检测模式的统计信息
- 历史记录 :查看检测历史,包括时间、模式和路径
5. AI分析
- 重新分析 :重新调用DeepSeek API分析当前检测结果
- 复制建议 :将分析建议复制到剪贴板
算法原理
YOLO11算法
YOLO11(You Only Look Once)是一种实时目标检测算法,具有以下特点:
核心思想
- 单阶段检测 :将目标检测视为回归问题,直接从图像预测边界框和类别概率
- 端到端训练 :整个网络在训练时进行端到端优化
- 实时性能 :检测速度快,适合实时应用场景
网络结构
- Backbone :特征提取网络,使用CSPDarknet提取图像特征
- Neck :特征融合网络,使用PANet进行多尺度特征融合
- Head :检测头,预测边界框、目标置信度和类别概率
检测流程
- 图像预处理 :调整图像大小,归一化像素值
- 特征提取 :通过Backbone网络提取图像特征
- 特征融合 :通过Neck网络融合多尺度特征
- 预测输出 :通过Head网络预测检测结果
- 后处理 :应用NMS(非极大值抑制)去除重复检测
关键技术
- Anchor-Free :不使用预定义的锚框,直接预测目标边界框
- 多尺度检测 :在不同尺度的特征图上进行检测,提高小目标检测能力
- 损失函数 :使用CIoU损失函数,提高定位精度
- 数据增强 :使用Mosaic、MixUp等数据增强技术,提高模型泛化能力
参数说明
置信度阈值(Confidence Threshold)
- 定义 :目标检测的置信度阈值
- 作用 :过滤置信度低于阈值的检测结果
- 建议值 :0.4-0.6
- 影响 :
- 值越高:检测越严格,可能漏检,但误检率低
- 值越低:检测越宽松,可能误检,但召回率高
IoU阈值(Intersection over Union)
- 定义 :非极大值抑制的重叠阈值
- 作用 :控制NMS算法去除重复检测的严格程度
- 建议值 :0.4-0.5(密集场景),0.6-0.7(稀疏场景)
- 影响 :
- 值越高:保留更多重叠检测框,可能产生重复检测
- 值越低:更严格地去除重叠检测框,可能漏检
DeepSeek API配置
1. 申请DeepSeek API密钥
注册账号
- 访问DeepSeek官网:https://www.deepseek.com/
- 点击"注册"按钮,填写注册信息
- 完成邮箱验证
获取API密钥
- 登录DeepSeek账号
- 进入"API密钥"页面
- 点击"创建API密钥"按钮
- 复制生成的API密钥(格式:sk-xxxxxxxxxxxx)
充值(可选)
- DeepSeek API通常提供免费额度
- 如需更多调用次数,可以在"充值"页面进行充值
- 查看定价信息:https://www.deepseek.com/pricing
2. 修改API密钥
打开 main.py 文件,找到第404行左右的 DeepSeekAPI 初始化代码:
# 初始化DeepSeek API(使用示例API密钥,实际使用时需要替换) self.deepseek_api = DeepSeekAPI(api_key='sk-d2eb5dc896884f62853d9d1ba89f6065')
将示例API密钥替换为你自己的API密钥:
self.deepseek_api = DeepSeekAPI(api_key='你的API密钥')
3. API调用说明
调用限制
- 速率限制 :根据账号等级有不同的速率限制
- Token限制 :每次请求有最大Token数限制
- 超时设置 :默认超时时间为30秒
错误处理
- 网络错误 :检查网络连接,确保能够访问DeepSeek API
- 认证失败 :检查API密钥是否正确
- 额度不足 :检查账户余额,必要时充值
- 超时错误 :检查网络延迟,或增加超时时间
默认分析
当API调用失败时,系统会使用默认分析方法,提供基本的检测结果分析。默认分析包括:
- 检测结果概览
- 参数优化建议
- 提高检测精度的措施
- 输入图像质量评估
- 实用价值分析
项目结构
yolo11-pyqt5/ ├── main.py # 主程序文件 ├── requirements.txt # 依赖包列表 ├── yolo11n.pt # YOLO11模型文件 └── README.md # 项目说明文档
主要类说明
DeepSeekAPI
- 功能:调用DeepSeek API分析检测结果
- 主要方法:
-
analyze_detection() :分析检测结果 -
get_default_analysis() :获取默认分析结果
DeepSeekAnalyzerThread
- 功能:DeepSeek分析线程,避免阻塞UI
- 信号:
-
analysis_complete :分析完成信号 -
analysis_error :分析错误信号
DetectionThread
- 功能:检测线程,在后台执行目标检测
- 主要方法:
-
detect_image() :检测图片 -
detect_video() :检测视频 -
detect_camera() :检测摄像头 -
stop() :停止检测 - 信号:
-
detection_complete :检测完成信号 -
detection_progress :检测进度信号 -
detection_error :检测错误信号
MainWindow
- 功能:主窗口类,管理整个UI界面
- 主要方法:
-
setup_ui() :设置UI界面 -
init_stylesheet() :初始化样式表 -
select_file() :选择文件 -
start_detection() :开始检测 -
stop_detection() :停止检测 -
update_display() :更新显示区域 -
update_detection_results() :更新检测结果 -
update_performance_stats() :更新性能统计 -
update_history_table() :更新历史记录 -
update_stats_chart() :更新统计图表
常见问题
1. 程序启动失败
问题 :运行 python main.py 时出现错误
解决方案 :
- 检查Python版本是否为3.8或更高
- 确保已安装所有依赖包:
pip install -r requirements.txt - 检查是否有权限问题,尝试使用管理员权限运行
2. 模型文件下载失败
问题 :首次运行时无法下载 yolo11n.pt 模型文件
解决方案 :
- 检查网络连接,确保能够访问GitHub
- 手动下载模型文件:https://github.com/ultralytics/assets/releases
- 将下载的模型文件放到项目目录
3. 视频检测没有反应
问题 :选择视频文件后点击开始检测没有反应
解决方案 :
- 检查视频文件格式是否支持(.mp4, .avi, .mov)
- 检查视频文件是否损坏
- 查看控制台输出,了解具体错误信息
- 尝试使用其他视频文件测试
4. 摄像头无法打开
问题 :摄像头实时检测无法打开摄像头
解决方案 :
- 检查摄像头是否被其他程序占用
- 检查摄像头驱动是否正常安装
- 尝试更换摄像头ID(默认为0)
- 检查系统权限设置
5. DeepSeek API调用失败
问题 :AI分析功能无法正常工作
解决方案 :
- 检查API密钥是否正确
- 检查网络连接,确保能够访问DeepSeek API
- 检查账户余额是否充足
- 查看控制台输出,了解具体错误信息
- 系统会自动使用默认分析,不会影响基本功能
6. 检测结果颜色不正确
问题 :右侧检测结果图像颜色显示不正确
解决方案 :
- 这个问题已在最新版本中修复
- 确保使用的是最新版本的代码
- 如果问题仍然存在,请检查
update_display 方法中的颜色转换逻辑
7. 界面显示异常
问题 :界面布局混乱或样式不正确
解决方案 :
- 确保PyQt5版本正确:
pip install PyQt5==5.15.10 - 检查系统DPI设置,尝试调整缩放比例
- 尝试重新安装PyQt5:
pip uninstall PyQt5 && pip install PyQt5==5.15.10
8. 性能问题
问题 :检测速度慢或程序卡顿
解决方案 :
- 使用GPU加速:安装CUDA版本的PyTorch
- 降低输入图像分辨率
- 使用更小的模型(如yolo11n.pt)
- 调整置信度和IoU阈值,减少检测框数量
- 关闭其他占用系统资源的程序
性能优化建议
1. 模型选择
2. GPU加速
# 安装CUDA版本的PyTorch pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
3. 参数调优
- 根据场景调整置信度阈值
- 根据目标密度调整IoU阈值
- 使用合适的输入图像分辨率
4. 批处理
- 对于大量图片,可以考虑批处理模式
- 使用多线程或异步处理提高效率
更新日志
v1.0.0 (2026-02-10)
- 初始版本发布
- 支持图片、视频、摄像头检测
- 集成DeepSeek AI分析功能
- 实现历史记录和统计图表
- 修复颜色显示问题
- 优化界面布局和样式