基于YOLOV7的疲劳驾驶检测系统

疲劳驾驶司机异常驾驶行为检测及预警系统Python

1.基于深度学习的驾驶员分心驾驶行为 (疲劳+危险行为)预警系统,使用改进网络结构YOLOV7+PERCLOS实现。
2.可以检测是否存在玩手机、抽烟、喝水这三种行为,可以通过计算眼睛和嘴巴的开合程度来判断是存在否闭眼或者打哈欠,并计算疲劳程度直接运行ui.py,即可使用本程序,各函数的信息,均在代码中写好了注释。依赖:YoloV7、Dlib、PySide2可直接调用摄像头实时检测,有可视化界面。
3.包括疲劳检测(打哈欠,低头,闭眼),吸烟检测,吃喝东西检测,打电话检测,摄像头实时检测,视频导入检测。
4.检测精度高,配置环境打包发送,售后进行配置环境指导安装
5.python疲劳驾驶预警系统

环境部署说明

环境配置

1) PythonAnaconda

    1. Python与Anaconda 和pycharm(社区版免费)

Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言。

(你也可以使用C语言或者Java,这里只介绍Python的安装)

安装Anaconda能使我们配置环境更加方便。

我们可以在这个网址下载Anaconda:https://www.anaconda.com/products/individual#Downloads

一般我们选择64位。安装过程一般为:

【选择‘Just me’】==》【选择安装路径,最好不在C盘】==》【两个选项都打钩】==》【完成】

这时候应该能在【开始】找到【Anaconda3(64-bit)】,至此Anacanda3安装完成。

(你可以在利用Anaconda安装pytorch和paddle深度学习环境+pycharm安装---免额外安装CUDA和cudnn(适合小白的保姆级教学)_将python的版本切换为paddle环境中的python插件-CSDN博客 找到详细的安装说明)

      1. Pytorch环境配置

在【开始】菜单中找到【Anaconda3(64-bit)】文件夹,打开Anaconda prompt

执行【conda env list】查看环境

创建新的环境,输入

conda create -n pytorch python=3.7

其中【pytorch】是环境的名字,并不是要你下载pytorch,【python=3.7】是使用的Python版本

执行后会列出该环境要安装的包,输入y执行即可

安装完成后,再次执行【conda env list】,可以看到pytorch环境,执行【conda activate pytorch】,激活环境

      1. Pycharm配置

Pycharm是一款十分好用的Python IDE,你也可以使用其他的IDE,这里介绍Pycharm环境的安装

在官网下载Pycharm,一般下载社区版(社区版够用,专业版要付费)

https://www.jetbrains.com/pycharm/download/#section=windows

安装。注意尽量不要安装在C盘

这里全打钩

选择【later】

打开Pycharm,选择【new project】,注意尽量不在C盘

相关库和Requirements.txt内库的安装

1.将该word同目录文件夹内的requirements.txt放到c盘根目录

2.在cmd内(不知道怎么打开cmd百度)输入:

1)c:

2)  cd C:\

3)activate pytorch

4)pip install -r requirements.txt -i Simple Index

5)pip install -f https://download.pytorch.org/whl/cu110/torch_stable.html torch==1.7.0 torchvision==0.8.0

3.等待全部下载完毕,任何一个文件没安上,百度手动安装

requirements.txt包

numpy>=1.18.5
opencv-python>=4.1.2
pillow
imageio
pywin32
pyautogui
comtypes
matplotlib>=3.2.2
numpy>=1.18.5
opencv-python>=4.1.2
Pillow>=7.1.2
PyYAML>=5.3.1
requests>=2.23.0
scipy>=1.4.1
PyQt5
tqdm>=4.41.0
mediapipe
numpy
opencv-python
tensorboard>=2.4.1
xlwt
PySide2

改进的网络结构

# YOLOv7 🚀 by 茶凉

# Parameters
nc: 80  # number of classes
depth_multiple: 1.0  # model depth multiple
width_multiple: 1.0  # layer channel multiple
anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

# YOLOv7 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Focus, [64, 3]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 9, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]]
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 1, SPP, [1024, [5, 9, 13]]],
   [-1, 3, C3, [1024, False]],  # 9
  ]

# YOLOv7 BiFPN head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14, 6], 1, Concat, [1]],  # cat P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]
 

疲劳数据集

实现界面

(1)该界面包含摄像头实时检测模块、视频文件检测、停止检测模块功能,选择画面中要进行的检测功能模块:在视频或摄像检测的过程中,如若想指定某个文件进行检测,可通过右侧的目标下拉选框选择电脑目标文件,选择时画面暂停等待选择完成,画面中标注框定位到选中的目标。系统主界面如下图4-11所示。

(2)根据训练数据集的权重文件,一类是coco数据集训练权重,另一类是日常道路拍摄、视频截取图片等获得的数据集,可选择不同权重文件进行视频检测,得到的效果也不同。进行选择视频文件进行检测:点击左侧视频按钮可弹出文件选择窗口,选择一个自己的MP4或AVI视频文件即可显示视频画面,目标标注在画面框中,要的目标可通过下拉框选择。如下图4-12所示。

### 构建基于YOLOv8的危险驾驶行为识别系统 #### 1. 系统概述 为了提高道路安全性并减少事故风险,开发了一种基于YOLOv8深度学习模型的智慧交通驾驶行为检测语音提醒系统。此系统通过实时监控驾驶员的行为来判断是否存在潜在的危险驾驶情况,并及时发出警告以增强驾驶员的安全意识[^1]。 #### 2. 数据准备 要训练一个有效的YOLOv8模型用于识别特定类型的危险驾驶行为(如玩手机、未系安全带),需要收集大量标注好的图像或视频片段作为数据集。这些数据应该覆盖各种光照条件下的不同场景,确保模型具备良好的泛化能力。此外,在创建自定义类别标签时应遵循清晰一致的标准以便于后续处理。 #### 3. 模型配置调整 根据具体应用场景的需求对预训练版YOLOv8网络结构做出适当修改,比如增额外层或者改变某些超参数设置等操作都可以帮助优化性能指标。同时也要注意保持原有架构优势的同时引入新的改进措施使得整个框架更适应当前任务特点。 ```python from ultralytics import YOLO model = YOLO('yolov8n.yaml') # YOLOv8 nano版本配置文件 ``` #### 4. 训练过程 利用上述整理完成的数据集来进行迭代式的监督学习直至达到满意的收敛状态为止。期间可以通过交叉验证的方法评估模型效果的好坏从而决定是否继续调参或是提前终止训练周期。值得注意的是在整个过程中还需要定期保存权重副本以防意外丢失重要成果。 ```bash !pip install roboflow from roboflow import Roboflow rf = Roboflow(api_key="YOUR_API_KEY") project = rf.workspace().project("your_project_name") dataset = project.version(1).download("coco") # 开始训练 results = model.train(data='path/to/dataset', epochs=100, imgsz=640) ``` #### 5. 集成到应用程序中 最后一步就是把经过充分测试后的最佳实践方案集成至实际产品里去。这通常涉及到编写图形用户界面(GUI),例如使用PyQt5库构建桌面端软件;或者是将其部署为Web服务供远程客户端访问。无论哪种方式都应当考虑到用户体验层面的因素使交互流程尽可能简洁明了易于上手操作。 ```python import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton from PyQt5.QtGui import QPixmap import cv2 class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Dangerous Driving Behavior Detection System") self.setGeometry(100, 100, 800, 600) label = QLabel(self) pixmap = QPixmap('screenshot.png') label.setPixmap(pixmap) self.resize(pixmap.width(),pixmap.height()) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茶凉技术栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值