APP下载

图像识别疲劳驾驶监测系统的设计

2022-03-13周万根黄隽

科海故事博览·上旬刊 2022年3期
关键词:人脸识别

周万根 黄隽

摘 要 本研究设计了一种疲劳驾驶检测系统,硬件主要采用DSP芯片和红外摄像头,软件利用OpenCV开源库,进行人脸识别和人眼信息检测,从而进行疲劳检测。该系统的检测效果较好,对疲劳特征进行融合加权之后可以达到92%的准确率,检测帧率普遍维持在24FPS左右,完全满足疲劳检测对实时性的要求。

关键词 疲劳驾驶 人脸识别 人眼定位 DPS芯片

中图分类号:TP391 文献标识码:A 文章编号:1007-0745(2022)03-0001-03

疲劳驾驶作为影响驾驶安全的重要因素之一,已成为热门研究课题。国内外对疲劳驾驶检测的研究方法总体上可以分为两大类:主观检测方法[1]和客观检测方法[2]。主观检测方法包括评价性检测与生理反应检测。然而,主观方法存在自身的局限性,只能用于疲劳判定,难以用于汽车行驶环境。本文采用人脸识别分析人眼特征的疲劳检测算法,适合于汽车行驶的场合,具有较高的便捷性、实用性和经济性,可接受性强,并且检测准确率高,因而具有较好的研究价值和社会价值。

1 系统的工作原理

如图1所示,在DSP的硬件平台,软件利用Op- enCV提供的框架提取视频文件,从视频流循环中读取图像;对图像做维度扩大,并进灰度化;提取帧图像检测人脸,用矩形框标注人脸,并对人脸图像标识 68 个关键特征点;将脸部位置特征信息转换为数组格式,分别提取左右眼坐标,构造函数计算眼部特征EAR值;根据EAR值实时计算PERCLOS值,再结合非疲劳时的EAR,两者实时对比,即可判定为是否疲劳状态,超过疲劳阈值则发出疲劳示警。

2 硬件设计

采用DSP芯片TMS320C6748搭建图像采集与处理的硬件系统,其中还有红外CCD(DH-S10-1080P)、声光预警电路和3.5寸LCD屏,组成了一套具备实时采集、处理、图像显示的系统。红外摄像头安装在驾驶台上前方,通过USB把图像传输给DSP,在夜晚也能采集驾驶员脸部图像。硬件系统的组成如图2所示,红外摄像头安装在驾驶台上前方,通过 USB 端口把图

像数据传输到DSP芯片内部,在光线较差的夜晚也能较清楚的采集到驾驶员脸部的图像信息。DSP内部运行调用OpenCV图像识别开源库,进行人脸识别,将采集的图像显示在3.5寸的液晶屏上,其中可以根据参数设置选择是直接显示采集的图像和带有测试点的图像信息,带有测试点的显示模式便于程序调试。SD卡作为存储元件,是保存驾驶员的人脸特征信息,尤其是精神饱满时的特征值,以便于实时判别其疲劳状态。

3 软件设计

3.1 人脸定位

利用 OpenCV 读写视频流,循环出图像帧,初始化 DLIB 的人脸检测器(HOG),然后创建面部标志物预测。引入并使用人脸识别算法应用中的开源检测器工具dlib.get_frontal_face_detector 和 dlib.shape_predictor 构建人脸位置检测器[3],再获取人脸特征关键点。对从视频流中循环读取出的帧图像做维度扩大,并灰度化。使用 detector(gray,0)进行人脸位置检测,使用predictor(gray,0)获取人脸特征关键点的位置信息,参数gray表示灰度图。将获取的信息转换为array 数组格式。再使用 cv2.convexHull 获取数组array的凸包位置,畫出人脸轮廓位置,进行画图操作。使用 shape_predictor_68_face_landmarks.dat,可以得到 68 个特征点位置的坐标,其中人脸外轮库的标记点的序号为0-16,共计17点,右眉毛的特征点序号为17-21共5个点,左眉为22-25,鼻部的特征点的序号为27-35,右眼特征点序号36-41,左眼为42-47,48-67均为嘴唇的特征点。这些特征点的坐标值就可以用于一些相关信息的计算,其中36-47可以作为双眼睁闭信息的识别。

3.2 人眼信息识别及PERCLOS值计算

根据已经得到的 68 个特征点位置的坐标,参照以上描述的人脸各个重点部位的特征点序号,右眼36-41或者左眼42-47可获得1个眼长和2个眼宽参数,以右眼为例眼长为36与39之间横向差值,眼宽共有两个,宽1为37与41的纵向差值,宽2为38与40的纵向差值,并计算眼睛长宽比EAR值如式(1)所示:

用EAR大小判定眼睛的睁闭状态,还可以求得眼皮遮挡眼球率,用于计算一定时间内闭眼所占的比例值,即PERCLOS值[4],从而进行疲劳判断。如图3所示,图中的t1为眼睛睁开最大程度至闭合眼度20%的时间,也称为睁开程度80%的时间,t2是从最大睁开度到闭合度80%的时间,t3为从最大睁开度到闭合度100%,再到睁开度为20%的时间和,而t4则可以认为是整个闭眼动作的全周期的基础上减去t1的值。

PERCLOS疲劳检测式通过计算人眼的睁开闭合程度,用来衡量疲劳的标准。PERCLOS的具体概念为在规定的时间内人眼闭合某个程度的时间所占总时间的百分比,故有一个阈值用于判断人眼是否闭合,对于这个阈值有三个标准,即P70、P80和EM[5]等标准值。它们具体含义为:P70,遮挡眼球面积大于70%,判定为闭眼;P80,遮挡大于80%;EM,遮挡大于50%,即判定为闭眼。选择任一标准,然后计算眼睛闭合时间比例。PERCLOS的理论值f,需要计算时间值t1~t4,f值的公式如式(2)所示:

在实际检测中,时间的精准度难以保证,主控芯片需要实时读取摄像头的图像数据,将图像信息发送至液晶屏显示,而且还需要运行OpenCV 库代码进行人脸识别,上述三个任务让DSP消费的时间很难精确到毫秒级甚至微秒级别,因此用直观的时间概念来计算PERCLOS的理论值f有点不切实际,故采用检测帧数的计数结果作为时间的参照替代参数,从而便有了PECLOS实际值,或称为PECLOS近似值的计算,其计算方式以检测帧数为参数进行描述,表示见式(3):

每次开启系统,一般认为是驾驶员精神最佳状态,此时人眼活动可以作为聚类学习的库,采集3~5分钟的人眼信息后,进行聚类分析,可以得到眼睛的最大睁开特征值和固定眨眼频率参数等,将其保存起来,再采集50个眼睛睁开特征值,求得平均值作为疲劳判定阈值,就可以用于后续行驶过程中实时判断驾驶员的疲劳状态。

4 系统测试结果

在室内自然光和黑暗无光环境均进行了测试,红外摄像头均可以采集到驾驶员的脸部图像,在灰度显示模式下,同一个驾驶员的脸部信息的采集受到外界光源的影响较小。在以DSP TMS320C6748为主芯片的Analog Devices Visual DSP++平台下,运行OpenCV视频流读写库,能够实时采集人脸信息,识别出人脸的68个特征点,对于同一个驾驶员在疲劳和非疲劳状态,在68个特征点中的双眼12个特征点的相对位置变化较为频繁,嘴部特征点也有一些细微变化,其他部位的36个点均较为稳定,通过实时计算人眼的特征值,实现疲劳检测的功能,并能发出警示声光。实验结果表明本系统能实现疲劳驾驶的检测功能,能达到92%的准确率,检测帧率普遍维持在24FPS左右,完全满足疲劳检测对实时性的要求。

5 结语

本文基于DSP平台,采用OpenCV开源资源对驾驶人进行人脸识别,实现了实时疲劳告警的功能需求,因其设备便携度高,可以廣泛应用于汽车出行。该系统具备良好的可维护性和可拓展性,经过进一步训练与改进,能够成为一个功能更加完备、人机交互更加舒适的疲劳驾驶检测系统。

参考文献:

[1] 张娟萍.人脸识别与对比技术在物联网智能交通中的应用[J].电子技术与软件工程,2019(16):166-167.

[2] 张廷,熊章锦,周小凯,等.基于云平台的疲劳驾驶检测系统[J].中央民族大学学报(自然科学版),2020,29 (03):61-66,70.

[3] 戴燕玲.基于人脸识别技术的汽车防疲劳驾驶系统[J].电子技术与软件工程,2020(12):119-120.

[4] 朱名流,李顶根.基于人脸特征点的疲劳检测方法研究[J].计算机应用研究,2020,37(S2):305-307.

[5] 钟马驰,张俊朗,蓝扬波,等.基于人脸检测和模糊综合评判的在线教育专注度研究[J].计算机科学,20 20,47(z2):196-203.

猜你喜欢

人脸识别
人脸识别的“国标”来了
AI企业云从科技全球FRVT测试中获得双冠
基于改进的2DPCA人脸识别方法
中科视拓开放商业版本人脸识别算法
人脸识别好用但不能滥用
睡梦中被刷脸盗走万元
荣耀畅玩7C:人脸识别
iPhoneX来了!
刷脸支付
刷脸(双语加油站)