dlib安装_使用dlib进行睡意检测

本文介绍了如何利用dlib库进行驾驶员睡意检测,通过检测面部特征,特别是眼睛的开闭状态,结合眼睛长宽比判断是否闭眼,并在一定数量的连续帧中都检测到闭眼状态时,判定驾驶员可能处于睡意状态。此外,代码还实现了在检测到睡意时播放警报音的功能。这种方法同样适用于检测眨眼,适用于需要人脸识别的场景。
摘要由CSDN通过智能技术生成

92f505de9458e03b68ee86c07aa9ab1d.png

前言

自动驾驶是计算机视觉在现实生活中的一个应用。目标检测、光流估计、图像分割等技术在自动驾驶上应用广泛。然而自动驾驶技术距离完全落地实用还有一定的距离,计算机视觉在自动驾驶上更多的只是辅助驾驶的作用,今天我们就来讨论一下如何使用计算机视觉技术来检测驾驶员是否睡着。

睡意检测

我主要使用dlib包来进行睡意检测,dlib的安装可以参考:

小糊糊:win10+dlib+python3.7+minGW编译安装​zhuanlan.zhihu.com

我是通过视频图像中的驾驶员是否长时间闭眼来判断该驾驶员是否有睡意。那么给定一帧图像,我们首先应该找到图像中驾驶员的脸部位置,这是一个目标检测问题,可以使用任意的目标检测模型实现。这里我使用的是dlib中已经训练好的人脸检测模型:

dlib

在得到脸部位置之后,我们需要检测出面部标志,也就是眼睛、眉毛、鼻子、下吧的位置。dlib中也有训练好的面部标志检测模型:

dlib

dlib的面部标志检测模型返回的是68个点的坐标,这68个点按照序号对应人脸的各个位置如下图所示:

cd526a5f9b2526ea0a32bf0dfcd3c6bc.png
68点面部标志

通过面部标志结果我们可以很容易得到眼睛的位置,每只眼睛用6个点表示,也就是编号37-42(右眼),43-48(左眼)。接下来我们要判断眼睛是闭眼还是睁眼,我参考的是这篇论文的方法:

http://vision.fe.uni-lj.si/cvww2016/proceedings/papers/05.pdf​vision.fe.uni-lj.si

论文使用的方法简单有效,根据眼睛长宽比来判断是睁眼还是闭眼,如下图所示:

ae1a71ddf60437c85aff5ae47fbc9c98.png

眼睛长宽比的计算方式如下:

如果ERA大于所设阈值,则认为是睁眼,否则则认为是闭眼。

因为人是会不断眨眼的,所以我们判断睡意时将一定数量的连续视频帧都闭眼才认定为驾驶员有睡意。

代码实现

# USAGE

代码中使用了dlib预训练的模型,得先下载好再将路径传入。下载地址:

http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2​dlib.net

代码中检测到睡意后还可以播放警报提示音,对应--alarm参数,需要将提示音乐文件路径传入。代码逻辑很简单,就不再细说。

总结

上面方法除了可以检测睡意外,还可以运用到相机上检测是否眨眼。如果你的应用场景跟人脸相关的话,可以考虑使用dlib包。

参考

https://www.pyimagesearch.com/2017/05/08/drowsiness-detection-opencv/​www.pyimagesearch.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值