许龙铭

(广州城市理工学院通信工程学院,广东 广州 510800)

0 引 言

随着汽车保有量和路网密度的快速增加,交通事故频发,造成很多人员伤亡和财产损失[1]。疲劳驾驶已经成为影响交通事故不可忽视的隐式因素,因其造成的交通事故数量约占中体事故数量[2]的10%~20%。对驾驶员进行疲劳驾驶检测、提醒,能够有效地降低因疲劳驾驶引发的交通事故。

随着边缘设备算力的提升以及硬件成本的下降,主流的疲劳驾驶检测系统大部分采用的是基于深度学习的检测算法,但是这些算法计算开销较大,导致出现功耗较高、检测速度低等缺点,同时单一的检测指标也容易出现漏检的现象。

为了解决以上问题,本文设计一种基于改进PERCLOS 的疲劳驾驶检测系统,对驾驶员眼部特征、握力特征和汽车横向加速度特征进行多信号的监测,从人体生理信号、动作特征以及汽车运动轨迹的融合信息中进行准确的疲劳驾驶判断。

1 系统总体设计

整个疲劳驾驶检测系统由车载终端、云服务器和远端监测主机三部分组成,系统结构如图1 所示。车载终端的主控为OpenMV[3],CMOS 摄像头、握力检测电路和加速度计组成驾驶信息感知模块,语音识别电路和TTS[4]模块组成交互模块,而NB-IoT[5]模块作为通信模块,通过蜂窝网与云服务器进行信息交互。云服务器作为车载终端和监测主机的数据中转,负责在服务器数据库上存储车载终端发送的驾驶数据,并为监测主机提供数据访问接口。监测主机从云服务器上获取驾驶信息后进行分析处理,当判断驾驶员存在疲劳驾驶行为之后及时触发预警机制。

图1 系统结构图

2 部分电路设计

2.1 摄像头电路设计

车载终端搭载的CMOS 摄像头是OminVision 公司生产的OV7725,采集速率可达150 帧,具有强大的去噪点和抗干扰功能[6],电路如图2 所示。接口由SCCB 通信、FIFO 输出数据(8 位)以及控制组成。SCCB(Serial Camera Control Bus)是串行相机控制,通过I2C1_SCL、I2C1_SDA 接口与主控相连,完成数字图像的传输。

图2 OV7725 电路图

2.2 NB-IoT 电路设计

NB-IoT 电路采用USR-NB75 模组,由于内部封装了IC 核心外围电路,在进行模组电路设计时只需要考虑电源和通信两部分电路,如图3 所示。

图3 NB-IoT 电路图

DC 5~16 V 是直流电源输入,可直接将车载12 V 电源输入;而VCC_BAT 是支持DC 3.1~4.2 V 范围的电池输入,可用于调试和产品化后的太阳能充电池输入。NB - IoT 电路通过TTL 串行接口(UART1_TXD 和UART1_RXD)与主控相连,主控通过发送AT 指令数据完成对模组的控制。

2.3 语音识别电路设计

语音识别IC 采用的是非特定语音辨认芯片[7]——LD3320,电路图如图4 所示。由于IC 内部集成了A/D 电路,因此通过MICN、MICP 引脚接入麦克风组件便可完成语音信号的输入。LD3320 支持并行通信和串行通信,为了提高传输速度,主控选用了并行通信接口(P0~P7)进行驱动。

图4 语音识别电路图

3 系统软件设计

3.1 改进PERCLOS 算法

本文判断驾驶员是否疲劳的第一个指标是眼部特征,具体实现过程是:通过OpenMV 获取眼部图像,利用专门的机器视觉算法来完成判断,而采用的核心算法是在PERCLOS[8]的基础上,根据实际应用情况进行改进。PERCLOS 算法是由Walt Wierwille 于1994 年发表的,算法的工作原理是:通过眼睛闭合时间反映眼部特征,具有几种眼睛不同闭合状态下的检测标准。

其中P80 标准(单位时间内眼睛闭合程度超过80%以上的时间占总时间的百分比)与驾驶员疲劳程度的相关性最好[9]。以P80 为例,算法原理如图5 所示,t1、t2、t3、t4表示人眼瞳孔面积在80%-20%-0%-20%-80%内变化,根据算法定义可知,P80 标准下的PERCLOS 值为:

图5 PERCLOS 算法原理图

PERCLOS 算法由于需要计算眼睛不同开合状态的时间段,因此对处理器的性能要求较高,往往无法降低整个系统的成本。本文针对PERCLOS 算法进行改进,使用眨眼频率替代原算法中的闭合时间指标。改进后的算法通过设置眼睛开合的阈值,然后捕获驾驶员每次眨眼动作进行累计,较原算法的优点在于:无需测量每次眨眼过程中各个不同闭合度的准确时间点,实时性要求更低。

改进后的算法原理如图6 所示,选择t1、t4作为一次检测周期,持续检测人眼的瞳孔面积,当瞳孔面积从大变小并且处于20%以下的面积时记作一次眨眼,即图6中t2、t3所在位置。

图6 本文算法原理图

改进后算法眨眼频率的计算公式为:

式中:c为一个周期内统计到的眨眼次数;t1、t4分别是一次检测周期起始、结束时间点。

PERCLOS 算法改进前后的对比如表1 所示,虽然本文算法检测周期更长,但从算法原理出发对单次检测容错率更高,更加适合对成本和体积有要求的嵌入式车载终端产品。

表1 PERCLOS 算法改进前后的性能对比

OpenMV 封装了常用的机器视觉库,比如进行目标检测的Haar[10]分类器。在算法执行前先通过大量的人眼图片进行模型训练,得到检测模型后转换为专门的Haar 算子,输入到HaarCascade(哈尔特征级联)[11]中,完成人眼检测。在人眼图像中通过提取深色区域的像素面积即可获取不同人眼闭合度下的瞳孔面积。

3.2 基于握力特征值的疲劳判断

驾驶员的握力变化可在一定程度下反映其疲劳程度,因此本文选择的疲劳驾驶第二个判断指标是握力特征值。由于不同个体、不同场合的驾驶状态下驾驶员的握力变化不同,因此在每次驾驶前需要获取握力特征值的判断标准。驾驶过程的前段时间处于疲劳驾驶状态的概率较低,判断标准从该时间段内进行计算。

在每次汽车行驶的前5 min,以2 s/次的频率采集握力样本值,则该时间段内的握力平均值为:

式中:i为单次采集次数;xi为行驶前5 min 内采集到的实时握力样本值,单位为N。

汽车行驶5 min 后,以1 min 为周期,2 s/次的频率采集握力样本值,则每个周期内驾驶员的实时握力平均值为:

式中:i为单次采集次数;yi为行驶后每分钟内采集到的实时握力样本值,单位为N。

经过大量实验观察计算可知,||yˉ-xˉ的值随着驾驶员的疲劳程度增加而变大,驾驶员在不同路段非疲劳状态下驾驶汽车时,该特征值均小于0.5,因此选择握力过小的判断条件为:

3.3 基于加速度特征值的疲劳判断

由于汽车在加减速时也会带来加速度的变化,因此本文选择急动度作为疲劳判断的第三个指标。急动度是一种特殊运动的力学术语,即加速度随时间的变化率[12],计算公式为:

式中:a为加速度,单位为m/s2;t为检测周期,单位为s。

当车辆失控时,水平方向的加速度会在单位时间内突变,即急动度会增大。研究表明,横向急动度大于0.1 m/s3时,车辆很可能处于不可能扭转的状态。因此,急动度过大的判断条件为:

4 实验结果及分析

4.1 眨眼频率测量实验

眨眼动作由OpenMV 完成捕获并进行计数,首先需要检测系统是否能够准确地检测出瞳孔所在位置,因此需要通过IDE 观察系统是否能够准确捕获到瞳孔并显示,捕获实验的IDE 运行结果如图7 所示。为了降低主控的计算开销,在检测到两个人眼后本文只选取其中一个用于瞳孔检测,由IDE 上输出的实时视频流数据以及相关图像数据表明,系统能够准确地从实时画面中检测到瞳孔并进行标注,同时完成目标的颜色特征提取以及显示,能够满足后续的眨眼检测需求。

图7 瞳孔捕获实验IDE 运行截图

在进行具体的眨眼频率检测实验时,通过主动改变不同的眨眼频率,将系统输出的检测结果保存到TF 卡中,然后与人为计数的结果进行对比,部分典型数据如表2 所示。

表2 眨眼频率典型数据对比

实验结果表明,系统对于眨眼频率的检测主要受频率高低和环境光照度的影响。虽然眨眼频率过高时会影响数据准确性,但总体的准确率均在95%以上,能够满足检测需求。

4.2 握力特征值测量实验

实验时在汽车方向盘上粘贴薄膜压力传感器,然后驾车在不同的路段行驶,驾驶过程中各测量100 组数据进行分析处理,部分典型数据如表3 所示。

表3 握力特征值典型数据对比

实验结果表明,汽车在不同路段中的握力特征值变化范围不同,但由于实验时均处于非疲劳驾驶状态,因此都比本文设置的阈值(0.5 N)小。

4.3 急动度测量实验

实验时在不同的非直线行驶路段各测量100 组数据并进行分析处理,部分典型数据如表4 所示。

表4 急动度典型数据对比

实验结果表明,汽车在过急弯时急动度变化范围最大,各路段非疲劳驾驶时的急动度最大值小于本文设置的阈值(0.1 m/s3)。

4.4 系统交互实验

本文使用Qt[13]开发专门的监测主机PC 软件,用于对获取车载终端的实时驾驶数据进行监测,软件运行图如图8 所示。软件可绑定车辆相关信息,当车载终端检测到驾驶员处于疲劳驾驶状态时,除了本地报警外,PC 软件会主动向车主绑定的电话发送网络短信,通知车主或其亲友。

5 结 语

本文以一种低成本的方案搭建一个疲劳驾驶检测系统,以搭载改进PERCLOS 机器视觉算法为主,结合握力特征、加速度特征等数据,多传感器信息融合后进行综合判断。实验结果表明,系统对于模拟疲劳驾驶的判断准确率达到90%以上,能够满足各种不同路段下驾驶场合的需求,为安全驾驶提供了一种新的解决方案。