基于yolov5的防溺水检测系统

基于yolov5的防溺水检测系统

1. 前言:

这是一个基于yolov5的防溺水检测系统,主要用到pyqt5+yolov5+ffmpeg。该系统对视频图片进行检测,如果检测到holding超过一定时间会报警提醒。
本项目只是一个demo版本,视频检测很卡顿😭(别问,问就是拿cpu跑的😋),借鉴诸多大佬东拼西凑出来的一个项目,优化不是很好,总之没有达到开始的预期,后面会继续优化的😋。

话不多说,上图:

[登陆界面]

[主界面]

2. 模型训练

1. 相关环境依赖

  1. 配置环境在windows上部署,需要用到Anaconda+Pycharm,最后打包成exe文件,这样就可以在本地直接运行啦。

  2. 这里大致是这样,需要补充
    image

  3. cuda、cudnn配置、pyqt5界面相关配置太复杂了出门左转问问度娘,还需要报警播放器ffmpeg这里放个链接:
    https://gitee.com/mirrors/ffmpeg?_from=gitee_search

2. 训练模型

这里我是按照大佬的流程来的超详细 👉传送

3. 配置数据文件

image

4. 训练结果

F1_curve

5. 检测结果

在yolo文件夹下可以找到一个weights的文件夹,里面存放.pt文件就是训练的模型,将模型的相对路径复制到detect.py对应位置
image

运行detect.py

    ```undefined
    python detect.py
    ```

检测结果如下:
IMG_4468

这里模型运行结束

3. pyqt界面

1. 登录界面

主要功能实现:登陆、注册、重置密码,登陆成功页面跳转。一搜有很多登陆界面教程,俺也是现学现卖,设计非常简陋😩

2. 主界面

借鉴大佬:https://github.com/Javacr/PyQt5-YOLOv5

主要功能有检测视频图片,视频流
非常喜欢这个界面,很友好,稍作修改就ok了。

4. 报警机制

```undefined
# 警报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消失**/
```

5. 项目打包

将该项目打包成exe,发送给你的好朋友

1. 打开conda环境切换到配置环境中

    ​```
    pip install pyinstaller
    `​``

2. 选择main.py

    ```undefined
    pyinstaller -F -i 图标.ico main.py
    ```

如需要需要其他打包配置,请自行搜索

打包好的目录如下:

image

6. 本地运行双击swim_detect.exe就行

7. 总结

该项目有很多没有完善的地方,需要大家支持与帮助
这里我将打包好的项目已上传,热乎的😋

点这里

该项目制作不易,如转载请声明

posted @ 2024-04-23 01:24  小刘速通  阅读(231)  评论(0)    收藏  举报