基于OpenCV的实时睡意检测系统

重磅干货,第一时间送达

该系统可以检测一个人在开车时是否困倦,如果有的话,可以通过使用语音消息实时提醒他。该系统使用网络摄像头和电话摄像头进行实时数据传输。

01.研究目的

根据国家公路交通安全管理局的数据,每年均涉及疲劳驾驶事故中导致超过1,550人死亡和71,000人受伤,但是实际数字可能要高得多[1]。因此,为了避免这类事故的发生,我们制作了这个系统。它通过检查人的眼睛是否闭合或正在打哈欠来预测眼睛和嘴巴的标志,从而确定一个人是否正处于疲劳驾驶。

主要内容

02.主要内容

该系统的工作可以分为两个部分:

1. 检测或定位面部。

2. 预测检测到的面部中重要区域的地标。

一旦预测出结果,我们仅使用眼睛地标和嘴部地标来确定人的眼睛长宽比(EAR)和嘴部长宽比(MAR),以检查人是否困倦。EAR和MAR的计算如下所示:

from scipy.spatial import distance as dist def eye_aspect_ratio(eye): # Vertical eye landmarks A = dist.euclidean(eye[1], eye[5]) B = dist.euclidean(eye[2], eye[4]) # Horizontal eye landmarks C = dist.euclidean(eye[0], eye[3])
# The EAR Equation EAR = (A + B) / (2.0 * C) return EAR
def mouth_aspect_ratio(mouth): A = dist.euclidean(mouth[13], mouth[19]) B = dist.euclidean(mouth[14], mouth[18]) C = dist.euclidean(mouth[15], mouth[17])
MAR = (A + B + C) / 3.0 return MAR

现在,既然有了代码,让我们了解一下代码是如何工作的:

dlib库内部的预训练面部界标检测器用于估计映射到面部面部结构的68-(x,y)坐标的位置[2]。这些68-(x,y)坐标表示脸部的重要区域,例如嘴巴,左眉,右眉,左眼,右眼,鼻子和下巴。其中,我们只需要左眼,右眼和嘴巴的(x,y)坐标:

# Grab the indexes of the facial landamarks for the left and right eye respectively (lstart, lend) = face_utils.FACIAL_LANDMARKS_IDXS["left_eye"](rstart, rend) = face_utils.FACIAL_LANDMARKS_IDXS["right_eye"](mstart, mend) = face_utils.FACIAL_LANDMARKS_IDXS["mouth"]

现在,每只眼睛都由一组6-(x,y)坐标表示,该坐标从眼睛的左上角开始(就像您在看那个人一样),然后围绕该区域的其余部分顺时针旋转[3]。:

左上:当眼睛睁开时,眼睛界标的可视化。右上:闭上眼睛时的眼睛地标。底部:绘制随时间变化的眼睛纵横比。眼睛纵横比的下降表示眨眼[3](Soukupová和Čech的图1)。[4]

基于论文Real-Time Eye Blink Detection using Facial Landmarks[5],我们可以得出一个反映这种关系的方程,称为眼睛纵横比(EAR):

眼睛纵横比(EAR)公式。

使用这个概念,我们计算了嘴长宽比:

用68-(x,y)坐标表示人脸

正如我们看到的,嘴由一组20-(x,y)坐标表示。因此,我们已使用坐标62、64、66和68来计算两者之间的距离,方法与EAR计算相同。

结果

在人员困倦或打哈欠时发出警报

另外,为了保留证据,我们保存了让人昏昏欲睡的框架。

框架存储在单独的文件夹中作为证明

该图显示了EAR和MAR随时间的变化

源代码的GitHub链接可在此处获得:https://github.com/fear-the-lord/Drowsiness-Detection

03.参考文献

交流群

(0)

相关推荐

  • 人脸液化技巧

    Ps菜单:滤镜/液化 Filter/Liquify 快捷键:Ctrl/Cmd + Shift + X 液化 Liquify滤镜能够自动识别人脸的某些特征,包括脸部形状.眼睛.鼻子.嘴唇.额头.下颌等, ...

  • "eye to eye"不是“眼对眼”!

    对话框回复"早安"和"晚安",获取暖心音频问候 01 see eye to eye 眼对眼看着 × 赞同某人 √ 在割麦子的这首歌里就有这一句: We were ...

  • 王奔| 4张PPT页面促成的词汇教学效果大反转

    一节糟糕的家常词汇课的反转 桐乡市实验小学教育集团城北小学  王奔 偶然间看到这么一句话:"从一年做一次法国大菜的教师,变成每日三餐过问柴米油盐,并能做出美味佳肴的教师."这意味着 ...

  • 单词

    单词专项练习  姓名: 一.选出正确的单词 ( )1.  蜡笔  A.pen      B.crayon  C.eraser ( )2.  学校   Aschool   B. home   C.zoo ...

  • 实战:使用 PyTorch 和 OpenCV 实现实时目标检测系统

    重磅干货,第一时间送达 一.引言 自动驾驶汽车可能仍然难以理解人类和垃圾桶之间的区别,但这并没有使最先进的物体检测模型在过去十年中取得的惊人进步相去甚远. 将其与 OpenCV 等库的图像处理能力相结 ...

  • 基于OpenCV实战:车牌检测

    重磅干货,第一时间送达 拥有思维导图或流程将引导我们朝着探索和寻找实现目标的正确道路的方向发展.如果要给我一张图片,我们如何找到车牌并提取文字? 一般思维步骤: 识别输入数据是图像. 扫描图像以查看由 ...

  • 基于OpenCV的面部关键点检测实战

    重磅干货,第一时间送达 这篇文章概述了用于构建面部关键点检测模型的技术,这些技术是Udacity的AI Nanodegree程序的一部分. 概述 在Udacity的AIND的最终项目中,目标是创建一个 ...

  • VB开发的设备实时运行状态检测系统

    今天来看一下用VB编程开发完成的判断各设备运行状态的系统. 运行正常,绿灯表示: 运行异常,红灯警告. 用于实际生产中,可以快速定位问题所在,提高处理效率. 程序运行图 VB编程简单易学.功能强大,广 ...

  • 基于OpenCV的路面质量检测

    重磅干货,第一时间送达 路面分类 01.RTK数据集 02.路面类型分类 训练数据文件夹结构 classes = os.listdir('training_data')num_classes = le ...

  • 基于OpenCV的实时停车地点查找

    重磅干货,第一时间送达 简介 我们常常会在停车场周围四处行驶很多次来寻找一个停车位,如果我们的电话可以准确告诉我们最近的停车位在哪里,那是不是很方便! 事实证明,使用深度学习和OpenCV解决这个问题 ...

  • 基于OpenCV的实时面部识别

    重磅干货,第一时间送达 我们将使用一些简单的代码来实现实时面部识别代码,我们可以对个人的面部进行预测. 现在,面部识别已成为生活中的一部分.因此,在介绍主题之前我们先看看实时面部识别示例.我们在手机. ...

  • 使用深度学习和OpenCV的早期火灾检测系统

    重磅干货,第一时间送达 创建用于室内和室外火灾检测的定制InceptionV3和CNN架构. 创建定制的CNN架构 import tensorflow as tfimport keras_prepro ...

  • MaskRCNN 基于OpenCV DNN的目标检测与实例分割

    原文:MaskRCNN 基于OpenCV DNN的目标检测与实例分割 - AIUAI 这里主要记录基于 OpenCV 4.x DNN 模块和 TensorFlow MaskRCNN 开源模型的目标检测 ...