基于人脸关键点检测的车载疲劳驾驶系统研究

2022-11-21 02:04王小荣张益通
无线互联科技 2022年17期
关键词:开发板关键点人脸

王小荣,张益通,彭 炫

(新疆大学 工程训练中心,新疆 乌鲁木齐 830001)

1 车载疲劳驾驶检测系统研究背景与问题

近年来,中国每年因疲劳驾驶造成的交通事故数量不断上升,研发一款对驾驶员进行疲劳检测并及时提醒驾驶员从而保障其交通安全的系统非常有必要[1]。目前,市面上的疲劳驾驶检测较少并且推广范围小,主要做到的是眨眼、低头、打哈欠检测,会对司机低头查看仪表盘等动作进行误判,系统的准确性有待进一步提高。

国内外对于疲劳驾驶检测系统的研究较为全面。目前,普遍的检测方法大同小异,可以归纳为:基于机器视觉对疲劳驾驶检测技术进行研究,将疲劳检测的过程分为人脸检测、人脸特征点提取、疲劳特征的提取与识别三步。

在此基础上,添加车道线分割,通过对车辆行驶异常状态的判定与驾驶员面部微表情的结合,从而大大降低了这种误判行为,提高了系统的准确性,并且在系统中加入了目标检测,可以检测抽烟、打电话等不安全行为,进一步保障驾驶员的安全[2]。系统的机械结构外观如图1所示。

图1 渲染

2 新型车载疲劳驾驶检测系统的设计

2.1 设计思路

为更好地解决现有的疲劳驾驶问题,需设计新型检测系统。一个合格的车载疲劳驾驶检测系统对速度和便捷方面有很高的要求。采用英伟达的Jetson nano开发板,该开发板上的GPU具有快速进行图片处理的优势,同时体积小巧,能够满足该系统的需求。图2、图3与图4分别为系统的硬件结构图、内部构造与零件图与整体的思路图。

图2 硬件结构

图3 内部构造与零件

图4 整体思路

在检测方面,本研究采用了三元子人脸关键点检测,提取眼部、嘴部和头部的关键点来判断驾驶员是否闭眼、打哈欠和低头。为了防止误判,将该算法与无人驾驶中的车道线分割技术相结合,通过检测车辆的行驶状况是否异常来判定驾驶员是否疲劳驾驶[3]。

2.2 研究方法

研究所采用的方法是关键点检测+车道线分割+目标检测。

2.2.1 疲劳驾驶检测算法之关键点检测

(1)摄像头提取驾驶员面部图片。

(2)68关键点提取模型提取驾驶员面部关键点。

(3)计算眼睛长宽比(Eye Aspect Ratio,EAR)。当人眼睁开时,EAR在某个值上下波动;当人眼闭合时,EAR迅速下降。

(4)计算嘴部长宽比(Mouth Aspect Ratio,MAR)。当人眼睁开时,EAR在某个值上下波动;当嘴部大幅度张开时,MAR迅速上升。

(5)对EAR和MAR设一个阈值,当EAR低于或者MAR高于阈值时计算时间。

(6)提取头部2D关键点。

(7)采用Head Pose Estimation算法,利用2D人脸关键点检测进行3D人脸模型匹配,求解3D点和对应2D点的转换关系。

(8)根据旋转矩阵求解欧拉角,当角度大过一定值时,判定为低头。

2.2.2 疲劳驾驶检测算法之车道线分割

(1)采用FCN神经网络,通过网络车道线数据集训练神经网络模型。

(2)将该算法与激光雷达相结合,判定车辆是否行驶出驾驶区域,从而判定车辆驾驶是否正常。

(3)将该算法与关键点提取算法结合,判定驾驶员是否疲劳驾驶。

2.2.3 疲劳驾驶检测算法之目标检测

(1)将yolov5神经网络进行修改增加空间向量注意力机制(CBAM),从而提高网络的准确度。

(2)采用自制抽烟打电话数据集,训练神经网络,得到yolov5s_CBAM模型。

(3)使用该模型进行抽烟、打电话等行为的识别,具体检测图像如图5和图6所示。

图5 抽烟检测

图6 手机检测

2.3 新型系统特色

使用三元子算法进行人脸关键点的标注提取,大幅度提高了人脸面部微表情的识别准确度,同时使用了无人车驾驶的部分技术——将车道线分割与激光雷达加入其中,大大降低了该系统误判的可能性,并且加入了目标检测技术,可以检测开车时抽烟打电话等不安全行为,进一步保障驾驶员的安全,有效解决疲劳驾驶检测的问题。

3 结语

通过对人脸关键点的提取以及车辆行驶状态的判定,技术人员可以以较高的准确率检测驾驶员的行驶状态,同时采用jetson nano开发板上的GPU算力,快速对图像数据进行处理,做到实时准确地对疲劳驾驶的检测判定。该系统高度集成于嵌入式开发板中,体积小巧,可以适用于各种车辆,有效减少交通事故的发生[4]。

猜你喜欢
开发板关键点人脸
肉兔育肥抓好七个关键点
有特点的人脸
三国漫——人脸解锁
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
马面部与人脸相似度惊人
医联体要把握三个关键点
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板
锁定两个关键点——我这样教《送考》