专栏首页深度学习和计算机视觉人眼疲倦检测开源算法

人眼疲倦检测开源算法

这次小白为小伙伴们带来了和生活相关性很大的一个系统。司机疲劳驾驶一直都是交通事故高发的主要原因。因此本项目的开发者计划通过视觉观测人的眼睛来判断被观察者是否存在疲劳,接下来小白将为大家详细介绍该系统。

1 算法原理

我们首先需要确定眼睛的位置,在确定眼睛位置之后,选择6个点来表示眼睛,具体如下图所示:

标号的顺序是从眼睛的左角开始,然后顺时针绕着眼睛进行编号。

根据这六个点我们便可以表示眼睛的睁开和闭上的状态。当开启的时候,上图中竖着的黄色箭头会变得比较高,而眼睛闭上(疲劳状态)这个箭头就会变矮。但是由于观看的距离不同,单纯用高度来表示状态缺少参考比较,因此提出如下公式表示状态:

用这个数据便可以相对客观的表示眼睛的状态,于是通过大量测试发现一个统计结果,当EAR小于0.25很多的时候,便是疲劳状态。

当然了,图像可能会存在一帧突然低于0.25,因此算法中采用的是判定连续20帧图像EAR都小于0.25才判定为疲劳驾驶

2 配置方式

代码是用Python写成的,需要使用2.7或以上版本。

依赖库

import cv2
import immutils
import dlib
import scipy

运行测试示例:

python Drowsiness_Detection.py

具体关于代码的讲解参考:https://www.pyimagesearch.com/2017/05/08/drowsiness-detection-opencv/

3 项目运行展示

项目在车的前方装置一个USB Webcam摄像头,如下图所示:

由于测试的视频比较大,这里小白只放了几张图片,感兴趣视频全部内容的可以去参考上面分享的链接

如果小伙伴想了解更多的关于项目的内容,可以通过下载代码,阅读里面的说明文档,也可以在自己的电脑上跑一下该程序。

https://github.com/akshaybahadur21/Drowsiness_Detection

本文分享自微信公众号 - 小白学视觉(NoobCV),作者:小白学视觉

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【SLAM】卡尔曼滤波:究竟滤了谁?

    一派是基于马尔科夫性假设的滤波器方法,认为当前时刻的状态只与上一时刻的状态有关。另一派是非线性优化方法,认为当前时刻状态应该结合之前所有时刻的状态一起考虑。

    小白学视觉
  • 【数据结构与算法】 通俗易懂讲解 冒泡排序

    冒泡排序一种简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历...

    小白学视觉
  • 高翔Slambook第七讲代码解读(3d-2d位姿估计)

    上回咱们读完了pose_estimation_2d2d.cpp这个文件,基本上明白了通过对极几何计算相机位姿变换的过程,简单地说就是:你给我两帧图像,我给你算个...

    小白学视觉
  • SAP ME 助力制造业打造完美工厂(转)

    用户5495712
  • 用神经网络预测股票市场

    机器学习和深度学习已经成为定量对冲基金常用的新的有效策略,以最大化其利润。作为一名人工智能和金融爱好者,这是令人激动的消息,因为它结合了我自己感兴趣的两个领域。...

    用户2769421
  • RAC环境下误操作将数据文件添加到本地存储

    今天碰到个有意思的事情,有客户在Oracle RAC环境,误操作将新增的数据文件直接创建到了其中一个节点的本地存储上。 发现网上去搜的话这种问题还真不少,对应...

    Alfred Zhao
  • 第二课 如何实现以太坊最简智能合约“Hello World”的运行

    如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇。 就先学习任何编程语言一样,入门的第一个程序都是Hello World...

    辉哥
  • Spring Boot 优雅重启知多少

    项目在重新发布的过程中,如果有的请求处理时间比较长,还没执行完成,此时重启的话就会导致请求中断,影响业务功能,优雅重启可以保证在停止的时候,不接收外部的新的请求...

    黄泽杰
  • Spring Boot 1.X和2.X优雅重启实战

    项目在重新发布的过程中,如果有的请求时间比较长,还没执行完成,此时重启的话就会导致请求中断,影响业务功能,优雅重启可以保证在停止的时候,不接收外部的新的请求,等...

    用户5224393
  • Spring Boot 1.X和2.X优雅重启实战

    项目在重新发布的过程中,如果有的请求时间比较长,还没执行完成,此时重启的话就会导致请求中断,影响业务功能,优雅重启可以保证在停止的时候,不接收外部的新的请求,等...

    纯洁的微笑

扫码关注云+社区

领取腾讯云代金券