基于Dlib库的驾驶员疲劳及心率血氧检测系统设计
108
电子技术
Electronic Technology
电子技术与软件工程
Electronic Technology & Software Engineering
●基金项目:山东省2020年大学生创新创业计划项目:基于OpenCV 与物联网的驾驶员健康监控系统(编号:S202010449004);滨州学院大学生SRTP 项目:基于机器视觉的安全驾驶卫士(编号:SRTP2020225)。
自汽车行业的发展,疲劳驾驶一直是我国产生重大交通事故中重要原因之一,为缓解疲劳驾驶这一现象,我国学者对驾驶员疲劳驾驶检测正在不断的进行探索与研究,以期在驾驶员疲惫驾驶时能得到及时提醒抑或实现疲劳驾驶的预警。在本文中设计了一套基于Dlib 库的驾驶员疲劳及心率血氧检测系统,旨在针对货车以及客运汽车驾驶员疲劳驾驶时能进行有效的震动及语音提醒,提醒驾驶员安全驾驶。目前驾驶员疲劳驾驶检测状态主要有以下几类:
(1)基于驾驶员人体生理的信号,其主要是采集驾驶员身体不同部位的生理信号,根据不同部位传递出的信号从而判断出驾驶员的疲劳状态。该类方法虽比较精确,但需要在驾驶员身体多个部位进行电线的连接,这对驾驶员的驾驶行为产生较为明显妨碍作用[1]。
(2)基于对驾驶车辆数据的采集,通过在车辆上安装各类传感器,感应车辆行驶状态或者是方向盘的状况。
(3)基于驾驶员行为特征的检测,如对驾驶员的面部表情特征等进行检测,此类方法对驾驶员影响较小,所以此类方法采用较为广泛。目前行为特征检测有PERCLOS 算法[2],主要判断在某一时间段驾驶员眼睛的闭合时间在这一段时间内所占的比例。机器视觉等领域中应用较为广泛的Gabor 小波[3]也可对驾驶员眼部进行识别从而判断驾驶员的此时驾驶状态。
本文介绍的系统是要是利用OpenCV 借助Dlib 库,通过图像的HOG 特征[4]来实现对人脸特征点的提取,对眼部特征点进行标注,并计算眼部的闭合程度再辅以心率等检测从而判断驾驶员的驾驶状态。1 系统结构与功能
驾驶员疲劳及心率血氧检测系统的结构见图1,系统启动时树莓派与STM32同时开始工作,树莓派首先通过摄像头获取驾驶员面部图像后,调用face_recognition 模块与Dlib 库进行当前驾驶员人脸编码并与已加载的人脸编码库进行对比,识别驾驶员身份信息,实现驾驶员快速签到功能[5]。信息比对完成
后利用Dlib 库中HOG 特征对驾驶员眼部特征点标注,计算驾驶员眼睛闭合程度,开始实时进行驾驶员疲劳状态监测,于此同时STM32开始进行驾驶员心率血氧的监测,当测定的疲劳值达到一定阈值时,树莓派与STM32通过串口通信,控制震动模块逐渐加大震动并通过语音播报提醒驾驶员到安全地点进行休息。2 系统硬件分析
STM32系统原理图见图2,系统板搭载STM32F103ZET6,其最高的工作频率可以达72 MHz ;具有串行的单线调试和JTAG 接口,2个USART 接口可进行全双工通用同步/异步串行收发;
基于Dlib 库的驾驶员疲劳及心率血氧检测系统设计
孙洋1  孙新宇2  李珺珺1  王彩凤1*
(1.滨州学院航空工程学院  山东省滨州市  256600    2.鲁东大学物理与光电工程学院  山东省烟台市  264025)
STM32连接有监测驾驶员心率血氧模块、语音模块和震动提醒模块。其中MAX-30100是一种非侵入式集成的心率和血氧饱和监测模块,其依靠两个发光二极管和一个光检测器,驾驶员只需将手指紧贴传感器之上,便可使系统通过IIC 协议随时读取驾驶员心率与血氧饱和度,其原理见图2 U2;语音模块采用的为语音识别模块LD3320[6]、SYN6288语音合成模块,系统上电后驾驶员可根据预置的唤醒指令
激活模块,并进入语音识别状态,系统可根据驾驶员发出的指令进行一系列操作。如驾驶员查询心率时,当模块收到指令之后便会与已设定好的词汇做对比,相一致时所得数据便会通过语音合成模块输出并播报。树莓派4B 采用官方的Raspbian 操作系统,搭载OpenCV 环境,大(主)芯片为Broadcom 的BCM2711BO ,最高主频1.5GHz ,4个Cortex A72内核,支持64位[7]。树莓派4B 配备500万像素的广角摄像头,其静止图像分辨率可达2592*1944px ,并支持720p 与1080p 视频。 3 系统总体设计
当驾驶员启动车辆时,系统内各个模块进行初始化。树莓派通过摄像头获取每帧图像,并在图像中定位驾驶员人脸,通过对驾驶员人脸信息编码并于已预加载中的人脸编码信息库对比获取驾驶员身份信息,并进入签到系统进行签到。车辆行驶过程中树莓派通过计算出驾驶员眼部的闭合程度与嘴部的开合度对驾驶员进行疲劳检测。同时树莓派接收通过STM32串口通信传来的MAX30100模块驾驶员的心率与血氧饱和度的数据显示在显示屏中。驾驶员也可通过语音指令获取数据。当检测到驾驶员疲劳驾驶时,系统会通过语音模块与震动模块进行语音与震动提醒。
摘 要:本文针对客车以及货车驾驶员疲劳驾驶的危害,设计了一套基于Dlib 库的驾驶员疲劳及心率血氧检测系统。该系统利用面部特征点捕捉和人脸识别系统建立起一套驾驶员身份、疲劳值和心率血氧检测体系。该系统可实时对疲劳驾驶中的驾驶员进行震动与语音
提醒,同时还可以进行驾驶员身份识别,可接入打卡系统方便快捷地进行上班签到。通过反复测试验证,该系统各项功能稳定准确,在驾驶员安全驾驶领域具有较为良好的应用前景。
关键词:Dlib 库;身份识别;心率血氧监检测图1:驾驶员疲劳及心率血氧检测系统结构
109
电子技术
Electronic Technology
电子技术与软件工程
Electronic Technology & Software Engineering
3.1 驾驶员身份识别
识别驾驶员身份信息时,因为OpenCV [8]读取的图像数据为BGR 格式,所以首先要对树莓派获取视频中每一帧的图像利用cv2.cvtcolor ()函数进行预处理,把BGR 格式的图像转换为RGB 格式。处理完成后调用face_recognition 模块对图像中驾驶员人脸信息进行定位并生成128-dimensional 面部编码列
表,通过与已知人脸库编码对比得到一个欧式距离(euclidean distance )[9],通过这个距离得到最相似驾驶员人脸信息并将驾驶员姓名显示在屏幕上,若距离相差过大,未在人脸库中到驾驶员信息则在屏幕中显示“Unknown ”。
图3,4为驾驶员身份识别效果图。3.2 驾驶员心率血氧检测
该系统设计采用MAX30100用来检测心率血氧。该模块中红光、红外光都用来测量驾驶员血液中的氧含量。含氧血液中传递更多的红光并吸收更多的红外光,而脱氧血液中传递更多的红外光并吸收红光,读取两个光源的吸收电平,通过测量心脏向外泵的血液中的氧合血红蛋白增加和减少之间的时间,确定脉搏率(心率)。SpO2计算公式[10]为:
该模块利用IIC 通信协议与STM32交换数据,其中SCL 连接PC12,SDA 连接PC11读取rawIRValue (红外FIFO 数据)、rawRedValue (红光FIFO 数据)进行处理计算驾驶员心率血氧数据。当驾驶员心率血氧异常时,进行语音报警提醒。
系统主要检测指标,及人体正常情况下的数据如表1
图2:STM32系统原理
3:身份识别驾驶员
1图4:身份识别驾驶员2
图5:眼部特征点标记
图6:嘴部特征点标记
110
电子技术
Electronic Technology
电子技术与软件工程
Electronic Technology & Software Engineering
3.3 驾驶员疲劳检测
驾驶员疲劳检测首先计算的是眼睛与嘴部的长宽比,首先在之前视频流中读取的图片利用size()函数进行维度扩大,并利用cv2.cvtColor ()加图片转化为灰度图,从定位的人脸框中获取脸部特征信息与提取左右眼坐标与嘴部坐标,如图5,图6所示。
构造函数分别计算左右眼的EAR 值,使用左右眼的EAR 平均值作为最终的EAR 值。同理计算出嘴部
的张合度Mouth 值。
当驾驶员眼睛闭合时,EAR 迅速下降,当EAR 低于某个阈值时,
眼睛处于闭合状态。于是可通过帧数算出驾驶员眨眼次数为检测眨眼次数,调试并设置同一次眨眼的连续帧数。通过设定的单位时间内闭眼次数、闭眼时间的阈值判断驾驶员是否已经进入疲劳驾驶。
设定一个阈值M ,当Mouth ≤M 时,没有打哈欠动作,即为驾驶员正常状态,若Mouth ≥M 时,则为打哈欠状态,其判断公式如下:
若T>85%则为疲劳驾驶状态。检测疲劳驾驶流程图如图7所示。3.4 系统测试
如图8、9所示。4 结语
本文针对客车以及货车驾驶员疲劳驾驶问题,利用OpenCV 与Dlib 库等,完成了基于Dlib 库的驾驶员疲劳及心率血氧检测系统的总体设计。该系统能为客车及货车驾驶员提供实时提供本地提醒与报警功能,从而保障了客车以及货车驾驶员的驾驶安全,有效减少因疲劳驾驶所造成的交通安全事故。
参考文献
[1]周洪钰,燕德明,肖长刚.疲劳驾驶检测与风险控制策略研究
[J].科技经济导刊,202028(21):53-55.
[2]尹苍穹,王玉龙,裴锋等.基于深度学习的嵌入式驾驶员疲劳
检测系统[C].2020中国汽车工程学会年会论文集(1),2020:4-6.
[3]王荣本,郭克友,储江伟.一种基于Gabor 小波的驾驶员眼部
疲劳驾驶预警系统状态识别方法的研究[J].中国图象图形学报A 辑,2003(09):76-80.
[4]万源.李欢欢.童恒庆.吴克风.分层CS-LBP 和HOG 特征融
合的人脸识别研究[J].武汉理工大学学报(交通科学与工程版),2014(38):801-805.
[5]赵志强,袁恩昌,张智雄.基于dlib 库的人脸识别考勤系统
设计与实现[J].无线互联科技,2020,v.17;No.192(20):78-80.[6]钟晨帆.基于LD3320芯片的语音识别系统设计与开发[D].南
京大学,2015.
[7]PeterMembrey, DavidHows,豪斯,树莓派学习指南[M].人民
邮电出版社,2014.
[8]刘瑞祯,于仕琪.OpenCV 教程.基础篇[M].OpenCV 教程.基
础篇.北京航空航天大学出版社,2007.
[9]Jinyu H, Huilin Z, Riliang Y, et al. Face Recognition
of LBP Histogram PCA and Euclidean Distance LBP 直方图与PCA 的欧式距离的人脸识别[J].计算机系统应用,2012,21(6):202-204.
[10]万佳喜,邹玉华,韩国成等.反射式脉搏血氧饱和度检测系
统的设计与实现[J].电子科技,2018,031(011):19-23.作者简介
孙洋(1997-),男,山东省淄博市人。滨州学院航空工程学院,本科生。研究方向为单片机程序设计,模式识别。
孙新宇(2002-),女,鲁东大学物理与光电工程学院,本科生。研究方向为模式识别。
李珺珺
(1999-),女,滨州学院航空工程学院,专科生。研究方向为电路设计。
王彩凤(1982-)(通讯作者),女,山东省临沂市人。滨州学院
航空工程学院,副教授,博士,从事电子技术应用研究。
图7:系统疲劳检测流程图
图8:正常行驶状态图9:疲劳驾驶
(注:Number of faces-视频中人脸个数;Blinkresponse-眨眼次数;EAR 、Mouth-眼睛与嘴巴张合度;Time-持续时间;Heart rate-心率;Blood Oxygen-血氧)表1:人体健康参数指标参考表
人体健康指标
正常范围心率60-100次/分钟血氧饱和度
95%~100%
脉搏
新生儿130-140次/分钟,3-5岁儿童100-120次/分钟,10岁左右儿童90-100次/分钟,老年人约
55-60次/分钟

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。