基于yolov5的防溺水检测系统
.
-
前言:
这是一个基于yolov5的防溺水检测系统,主要用到pyqt5+yolov5+ffmpeg。该系统对视频图片进行检测,如果检测到holding超过一定时间会报警提醒。
本项目只是一个demo版本,视频检测很卡顿😭(别问,问就是拿cpu跑的😋),借鉴诸多大佬东拼西凑出来的一个项目,优化不是很好,总之没有达到开始的预期,后面会继续优化的😋。
话不多说,上图:
[登陆界面]
[主界面]
-
模型训练
-
相关环境依赖
-
配置环境在windows上部署,需要用到Anaconda+Pycharm,最后打包成exe文件,这样就可以在本地直接运行啦。
-
这里大致是这样,需要补充
-
cuda、cudnn配置、pyqt5界面相关配置太复杂了出门左转问问度娘,还需要报警播放器ffmpeg这里放个链接:
https://gitee.com/mirrors/ffmpeg?_from=gitee_search
-
-
训练模型
这里我是按照大佬的流程来的超详细 👉传送
-
配置数据文件
-
训练结果
-
检测结果
在yolo文件夹下可以找到一个weights的文件夹,里面存放.pt文件就是训练的模型,将模型的相对路径复制到detect.py对应位置
运行detect.py
python detect.py
检测结果如下:
这里模型运行结束
-
-
pyqt界面
-
登录界面
主要功能实现:登陆、注册、重置密码,登陆成功页面跳转。一搜有很多登陆界面教程,俺也是现学现卖,设计非常简陋😩
-
主界面
借鉴大佬: https://github.com/Javacr/PyQt5-YOLOv5
主要功能有检测视频图片,视频流非常喜欢这个界面,很友好,稍作修改就ok了。
-
-
报警机制
# 警报1 if names[int(cls)] == 'holding': # 检测到holding报警 value = det[:, 4].max().item() # 进行多个目标检测,检测的所需目标才发出语音告警 if value > 0.70: count += 1 if count > 800: # 当检测到value>0.70时的次数>800时报警 count = 0 if time.time() - tplay > 4.0: import os os.system( 'start /b F:/PyQt5-YOLOv5/ffplay.exe -autoexit -nodisp F:\PyQt5-YOLOv5\警报1.mp3') # 音乐播放 # 参数含义: start /b 后台启动 ffplay音乐播放软件的位置 -autoexit 播放完毕自动退出 -nodisp不显示窗口 mp3语音的位置 tplay = time.time() /**未能将报警机制实现:当检测到单个物体hoding>0.70时, 追踪该物体并增加一个计时器, 如果在一段时间内(30s)hoding持续存在则报警, 每隔4s报警一次,直到该物体holding消失**/
-
项目打包
将该项目打包成exe,发送给你的好朋友
-
打开conda环境切换到配置环境中
pip install pyinstaller
-
选择main.py
pyinstaller -F -i 图标.ico main.py
如需要需要其他打包配置,请自行搜索
打包好的目录如下:
-
-
本地运行双击swim_detect.exe就行
-
总结
该项目有很多没有完善的地方,需要大家支持与帮助
这里我将打包好的项目已上传,热乎的😋
点这里
看不了?那试试网盘: https://pan.baidu.com/s/1alV_eOQ1Q8Q4NeX6xaU1qg?pwd=y5qv
该项目制作不易,如转载请声明