驾驶员困倦检测系统:带有源代码的Python项目

睡意检测是一项安全技术,可以防止驾驶员在驾驶时入睡而导致的事故。 这个中间Python项目的目的是建立一个睡意检测系统,该系统将检测人的眼睛闭合几秒钟。 当检测到困倦时,该系统将警告驾驶员。 驾驶员嗜睡检测系统–关于项目 在此Python项目中,我们将使用OpenCV收集来自网络摄像头的图像,并将其输入到深度学习模型中,该模型将对人的眼睛是“睁开”还是“闭合”进行分类。 我们将用于...
摘要由CSDN通过智能技术生成

睡意检测是一项安全技术,可以防止驾驶员在驾驶时入睡而导致的事故。

这个中间Python项目的目的是建立一个睡意检测系统,该系统将检测人的眼睛闭合几秒钟。 当检测到困倦时,该系统将警告驾驶员。

驾驶员嗜睡检测系统–关于项目

在此Python项目中,我们将使用OpenCV收集来自网络摄像头的图像,并将其输入到深度学习模型中,该模型将对人的眼睛是“睁开”还是“闭合”进行分类。 我们将用于此Python项目的方法如下:

步骤1 –将图像作为来自摄像机的输入。

第2步–检测图像中的人脸并创建关注区域(ROI)。

第3步–从ROI中检测眼睛并将其输入分类器。

步骤4 –分类器将对睁开或闭合的眼睛进行分类。

步骤5 –计算分数以检查该人是否困倦。

现在,在开始 先决条件,数据集和模型体系结构之前 ,如果您是新手,我建议您参考此 Python Master工作表 以学习Python编程语言的所有必要概念。

先决条件-

此Python项目的要求是一个网络摄像头,我们将通过该摄像头捕获图像。 您需要在系统上安装Python(建议使用3.6版),然后使用pip安装必需的软件包。

  1. OpenCV – pip安装opencv-python (面部和眼睛检测)。
  2. TensorFlow – pip安装tensorflow(keras使用TensorFlow作为后端)。
  3. Keras – pip安装keras(以建立我们的分类模型)。
  4. Pygame –点子安装pygame(播放警报声音)。

数据集-

用于此模型的数据集由我们创建。 为了创建数据集,我们
编写了一个脚本,可以捕获相机的眼睛并将其存储在本地
磁盘。 我们将它们分为各自的标签“打开”或
'关闭'。 通过删除不需要的图像手动清除了数据
这对于构建模型不是必需的。 数据包括
在不同的照明条件下,大约可以看到7000张人眼的图像。
在我们的数据集上训练模型后,我们将最终
权重和模型架构文件“ models / cnnCat2.h5”。

现在,您可以使用此模型对人眼睁开或闭眼进行分类。

模型架构-

我们使用的模型是通过Keras使用卷积神经网络(CNN)构建的。 卷积神经网络是一种特殊的深度神经网络,在图像分类方面表现非常出色。 CNN基本上由一个输入层,一个输出层和一个可以包含多个层的隐藏层组成。 使用在层和滤波器上执行2D矩阵乘法的滤波器对这些层执行卷积运算。

CNN模型架构包括以下几层:

  • 卷积层; 32个节点,内核大小为3
  • 卷积层; 32个节点,内核大小为3
  • 卷积层; 64个节点,内核大小3
  • 全连接层; 128个节点

最后一层也是具有2个节点的完全连接的层。 在所有
层,除了在输出层中使用Relu激活功能
我们使用Softmax。

Python项目执行驾驶员嗜睡检测步骤

从zip下载Python项目源代码,然后将文件提取到系统中: Python Project Zip File

压缩文件的内容为:

  1. “ haar级联文件”文件夹包含从图像中检测对象所需的xml文件。 在我们的案例中,我们正在检测人的脸部和眼睛。
  2. models文件夹包含我们的模型文件“ cnnCat2.h5”,该文件在卷积神经网络上进行了训练。
  3. 我们有一个音频剪辑“ alarm.wav”,当人昏昏欲睡时播放。
  4. “ Model.py”文件包含用于通过对数据集进行训练来构建分类模型的程序。 您可以在此文件中看到卷积神经网络的实现。
  5. “睡意检测.py”是我们项目的主文件。 要开始检测过程,我们必须运行此文件。

现在,让我们逐步了解我们的算法。

步骤1 –将图像作为相机的输入

使用网络摄像头,我们将图像作为输入。 因此,要访问网络摄像头,我们进行了无限循环,将捕获每个帧。 我们使用OpenCV提供的方法cv2.VideoCapture(0)访问摄像机并设置捕获对象(上限)。 cap.read()将读取每一帧,然后将图像存储在frame变量中。

第2步–在图像中检测人脸并创建关注区域(ROI)

要检测图像中的人脸,我们首先需要将图像转换为灰度,因为用于对象检测的OpenCV算法在输入中获取了灰度图像。 我们不需要颜色信息来检测物体。 我们将使用haar级联分类器来检测人脸。 该行用于设置我们的分类器face = cv2.CascadeClassifier('我们的haar级联xml文件的路径') 。 然后,我们使用faces = face.detectMultiScale(gray

  • 5
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值