# PyQt5-YOLOv5
**Repository Path**: zhangwl1998/PyQt5-YOLOv5
## Basic Information
- **Project Name**: PyQt5-YOLOv5
- **Description**: No description available
- **Primary Language**: Python
- **License**: GPL-3.0
- **Default Branch**: yolov5_v5.0
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-11-14
- **Last Updated**: 2023-11-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 友情提示:由于官方给出的yolov5版本会持续更新。为了避免不兼容的问题,建议使用本仓库的yolov5。如果想兼容最新版本的yolov5,自行更改对应的代码即可。
本仓库的yolov5版本为**v5.0**,是直接从官方仓库拉取的,支持训练。
本仓库依赖模型有yolov5s.pt、yolov5m.pt、yolov5l.pt、yolov5x.pt,下载地址:https://github.com/ultralytics/yolov5/releases/tag/v5.0
点击地址后翻到最下面有下载链接,将下载好的模型放在pt文件夹下,运行界面时,**会自动检测已有模型**。
如果模型下载太慢,可以用百度网盘下载,链接:https://pan.baidu.com/s/1sFFWVyidFZZKi76CsKhf6Q?pwd=6666
提取码:6666
### 更新日期:2022/5/29
新增:检测完成后,自动保存
**界面**

**运行效果:**

演示视频:
[https://www.bilibili.com/video/BV1sQ4y1C7Vk?spm_id_from=333.999.0.0](https://www.bilibili.com/video/BV1sQ4y1C7Vk?spm_id_from=333.999.0.0)
csdn:
[https://blog.csdn.net/weixin_41735859/article/details/120507779?spm=1001.2014.3001.5501](https://blog.csdn.net/weixin_41735859/article/details/120507779?spm=1001.2014.3001.5501)
**功能:**
1. 模型选择
2. 输入选择(本地文件、摄像头、RTSP);在检测RTSP视频流的时候,尽量不要启用帧间延时,否则会出现很高的延时,用yolo5x模型时,rtsp会很卡,建议抽帧检测, 把main.py中的133-135行注释取消
```python
# jump_count += 1
# if jump_count % 5 != 0:
# continue
```
3. IoU调整
4. 置信度调整
5. 帧间延时调整
6. 播放/暂停/结束
7. 统计检测结果(显示边框时,支持中文标签)
8. 检测完成后,自动保存检测结果
**使用:**
```bash
# conda创建python虚拟环境
conda create -n yolov5_pyqt5 python=3.8
# 激活环境
conda activate yolov5_pyqt5
# 到项目根目录下
cd ./
# 安装依赖文件
pip install -r requirements.txt
# 将下载好的模型放在pt文件夹下
# 运行main.py
python main.py
```
运行*main.py*开启检测界面后**会自动检测已有模型**。ui文件也已上传,可以按照自己的想法更改ui界面。
**使用过程中如果遇到问题,欢迎Issue,同时也欢迎Pull request**
**问题汇总**
**Q:** 把模型替换为yolov5最新版本的模型后,界面左下角有错误提示,但是没有报错,请问怎么解决?
**A:** 使用v5.0之后的版本会报错"The size of tensor a (80) must match the size the size of tensor b(52) at non-singleton dimension 3"或者"AttributeError: Can't get attribute 'SPPF' on "。模型版本不同则无法直接使用,建议用本仓库训练,或者修改代码以匹配你的模型。如果你想看详细错误报告,可以把DetThread类中的异常捕获取消,或者调用cgit模块(自行搜索cgit的用法,很简单)。
**Q:** 遇到错误:Permission denied:'pt'
**A:** 可能是pt文件在下载时有损坏,重新下载,或者是没有将pt文件放到pt文件夹中。
**Q:** ‘Upsample’ object has no attribute 'recompute_scale_factor'
**A:** torch版本太高,下降一下版本吧,我的是torch=1.7.1、torchvision=0.8.2。torch==1.9.0、torchvision==0.10.0也可以。
**Q:** 如何打包成exe文件?
**A:** 打包过一次,但是启动后打不开,打包的文件1G左右,不建议打包。如果有人打包成功了,可以留个言。如果你只是不想使用命令行启动文件,windows用户可以建一个bat文件快速启动。
**Q:** 点击摄像头按钮后,再检测,为什么还是检测上一次的文件?
**A:** 点击摄像头按钮后,会自动检测电脑连接了几个摄像头(除了电脑自带摄像头,有些人还会连接usb摄像头),检测完成后,摄像头按钮下方会出现数字序号,你需要手动点击出现的数字选择摄像头。
**Q:** 请问怎么更改背景图片、背景颜色?
**A:** 自行搜索:pyqt5+qss。
**Q:** 你是怎么学习PyQt5的?
**A:** 买了本《PyQt5快速开发与实战》,书上没有的就查官方文档+CSDN+StackOverflow+github
**Q:** 我将摄像头的默认分辨率640x480修改为1920x1080后,画面就很卡顿,FPS从30变为了7,我在网上也搜了相关的解决办法,有说需要重新编译opencv的,但是我单独用代码调用高分辨率摄像头不会卡顿,不知道是不是opencv的问题,请博主给一些指导。谢谢(修改帧率也试过了没用)
**A:** 为了快速启动摄像头,代码中opencv是使用direct show模式打开摄像头的,这种模式下摄像头捕获分辨率调高之后,帧率可能会下降。改一下datasets.py中LoadWebcam类,大概242行,把括号中“, cv2.CAP_DSHOW”删除,括号里就留一个“eval(pipe)”就行了。但是启动摄像头需要的时间会比之前长一些。
或者,依旧使用direct show模式,将244行的`self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 3)`替换为以下代码
```python
self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 3) # set buffer size
self.cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'))
```
第二种方法可能对有些电脑不适用。