基于人眼状态信息的疲劳检测方法研究*

2022-11-09 02:35许小鹏黄巧亮
计算机与数字工程 2022年9期
关键词:人眼中心点人脸

许小鹏 黄巧亮

(江苏科技大学 镇江 212003)

1 引言

国家统计年鉴(2019)显示,2019年,全国机动车保有量达到3.4亿辆,汽车驾驶人达到3.8亿。汽车的高保有量导致了每年大约20万起的交通事故,其中死亡人数6万多人,其中疲劳驾驶是交通事故的主要原因[1]。所以主动安全预警装置(ADAS)的研发对减少交通事故具有重要的意义。目前,ADAS主要以基于生理特征信号检测和基于视觉特征检测的疲劳驾驶检测为主,生理信号的检测的设备安装环境复杂而且需要亲密接触驾驶员皮肤,这会影响驾驶。而基于视觉的检测,设备简单无接触,检测精度也能达到要求。所以本文采用将边界框定位转化为回归问题的目标检测算法,该算法采用端到端[2]的目标检测可以直接预测目标的坐标以及类别的概率如YOLO[3~6]系列算法和SSD[7]算法等。为满足嵌入式[8]开发需求,本文用基于端到端的算法,保证在嵌入式开发板上实时运行的同时,提高检测精度。

2 人脸检测

2.1 优化anchors参数

为了加快收敛速度来提高检测的精度,本文通过增强初始聚类算法来对人工标注目标的高宽进行聚类,原始聚类算法随机选择初始值会导致局部最小值和形成空簇[9],因此选用改进后的k-means算法进行聚类分析,主要增强方面就是选择初始质心要尽可能地相互远离,这样有助于反应数据的分布和加快收敛。设定样本集为D={x1,x2,…xm},从中选取k个质心为U={u1,u2,…uk},每个质心对应的类别为C={c1,c2,…ck}。在D中随机选取一个中心点k1,计算D中每个点到k1的距离,通过概率公式计算概率最大的点为下一个k2点,随机选取k3点再计算k3到前两点的距离S。

若距离S小于某一阈值β(本文根据先验值设定为30)则舍弃。以此类推计算剩下的质心,直至留下9个点为止。若出现某个簇的实例为0,则计算其余簇的均值作为这个空簇的新簇心uˉ。计算样本点xi到质心的最小距离,然后一直迭代,聚类算法核心就是使SSE最小化:

优化后的尺寸为

(4,6)、(5,8)、(5,10)

(6,12)、(8,15)、(11,21)

(16,30)、(29,50)、(71,112)

再把Anchor Box和预测结果关联起来,预测框和某一类别的Anchor Box接近时,则预测出该类别的BBox。

每个预测框返回值参数计算公式:

式中:cx、cy是目标物体中心点所在单元格的坐标;δ(ty)、δ(ty)是中心点在单元格中的偏移量;bx、by、bw、bh是预测的BBox的坐标和宽高;pw、ph是Anchor Box的宽高;etw、eth是缩放比例函数;tx、ty、tw、th、to是要学习的参数。

2.2 损失函数

由回归框的均方差(MSE)损失函数来看,MSE把预测框A和真实框B的中心点和宽高作为了独立的变量来对待,把中心点和宽高写到两个不同的式子,就直接地估计了bounding box中每个点的坐标值并将这些点作为自变量处理,没有考虑到对象本身的完整性,独立函数如下:

所以现在就是尽可能地把它们联系起来,而目前所知的联系关系最好的就是交并比(IOU),如图1所示。

图1 交并比示意图

如果真实框与预测框没有重叠,则会出现梯度消失的情况,所以再把欧氏距离作为惩罚项给加上去,两个框的中心点为其中k为AB的最小包围框的对角线长度。然后再根据需要增加约束系数,公式如下:

这样可以加快收敛的速度,这不仅考虑了重叠面积还考虑了中心点的欧式距离。当两个框不重叠的时候,就会计算欧氏距离。这样不仅解决了上面所说的梯度消失问题,还加速了收敛速度。

目标置信度交叉熵误差:

上式分别是有和无目标预测的置信度预测值。其中Ci表示目标类别,noobj表示没有目标的预测框的约束系数。有目标和没有目标,其中没有目标损失部分进行增加权重系数的计算[10]。这主要原因就是图像的大部分区域是不包含目标物体的,这样会导致没有目标的计算部分贡献会大于有物体的计算部分,这会导致网络倾向于预测单元格不含有物体。因此,要减少没有物体计算部分的贡献权重。

类别交叉熵误差:

3 增加模型尺度连接

YOLOV3-tiny使用最新的金字塔网络[11]和全卷积网络(FCN),精确度更高,速度更快[12]。本文为检测目标相对较小的目标,增加了8倍输出层,并在网络中采用像素相加和维度相加相结合的方式来增加特征融合[13],让深层特征和浅层特征进行融合检测来解决梯度下降的问题。改进的tiny算法通过一系列的增强最终得到相对于原模型更高的精度、查全率、回归率以及IOU。

本文通过叠加DenseNet来针对梯度消失问题并加强了特征传播和鼓励特征重用,并直接将前面的一层输出通过卷积池化等操作与后面的层进行维度相加来提升精度,这就利用了深度特征融合和特征金字塔[14]的思想,在13×13的特征层上通过上采样到26×26大小与主干上的尺寸相匹配,然后进行维度相加,得出新的尺度输出。再利用这一融合继续进行上采样到52×52大小,再与主干网络上的尺寸进行维度相加,得到8倍输出。结构图如图2所示。

图2 特征提取模型

改进后的网络模型为37层,精度和召回率比原始模型都得到了提高,同时速度也下降了,但是再可控范围内。在嵌入式中需要GPU和指令集加速来进行实时检测[15]。实车人脸检测结果如图3所示。

图3 人脸检测

4 人眼特征点回归

再检测和定位人脸后进行人眼特征点检测,由于本文的检测红外摄像头安装再汽车的A柱上,所以在识别人眼的时候右眼很容易被遮挡,所以本文以检测左眼为主,右眼为辅。人眼特征点检测主要运用GBDT算法是一种基于回归树的人脸对齐算法,摄像头位置和检测结果过程如下图。

图4 摄像头位置示意图

图5 红外穿透效果

图6 人眼特征点

然后用PERCLOS标准来判别是否疲劳驾驶,PERCLOS的测量参数是指单位时间内眼睛闭合程度超过某一闭合值的时间所占总时间的百分比[16]。

5 实验与分析

此次实验训练环境和测试环境不同,训练环境使用Ubuntu 20.04操作系统,darknet深度学习框架,CUDA10.2进行加速,硬件配置为CPU是Intel i5-10500,GPU为GeForce RTX 2060,显存为6GB的服务器。测试环境为嵌入式Linux操作系统,硬件采用瑞芯微的RK3399六核芯片方案,摄像头采用光敏电阻来调节红外灯是设备能夜晚进行识别。此测试环境需要从PC端进行交叉编译得到openCV的lib包和可执行文件移植到嵌入式设备。具体调试设备如图7~8所示。

图7 室内调试

此次实验,将使用多种标准来评价不同算法的性能,主要有精确率、召回率、模型检测速度、等目前主流评价指标,将本文算法与YOLOV3-tiny和最近刚出来的最新版本YOLOV4-tiny进行各方面的对比。主要对比人脸检测部分,只有人脸检测框准确了,才能更好的定位人眼特征点。

图8 红外摄像头和开发板

本文训练集采用8000幅图片,对网络进行的最大迭代次数为10000,初始学习率设置为0.001,权值衰减系数为0.005。为了检测人脸的性能,通过增加图像的旋转、曝光和饱和度来对原始样本进行扩增,并采用多尺度训练。本文分别对YOLOV3-tiny、YOLOV4-tiny和本文改进算法进行测试实验,并进行对比。首先利用改进的k-means算法对数据集进行聚类分析得出模型需要的9个anchors。然后进行模型训练。利用模型对测试集进行测试并对比结果,采用的评价指标是平均精度[17](precision,P)和召回率(recall,R),公式如下:

式中:TP正预测为真;FN正预测为假;FP反预测为真;实验结果如表1所示。

表1 各种模型对比

从表中可以看出本文改进的算法MAP比初始模型和YOLOV4-tiny模型都分别提高了大约18%和1%。PR曲线如图9所示。

图9 PR曲线图

图中虚线表示原始YOLOV3-tiny模型,实线是YOLOV4-tiny的模型,点划线是本文改进的网络模型。三种训练效果图如图10~12所示。

图10 YOLOV3-tiny

图11 YOLOV4-tiny

图12 本文模型

综合可知,本文改进的YOLOV3-tiny算法比原始的tiny算法和最新的YOLOV4-tiny算法有较高的准确率和召回率,并且用在人眼特征点定位上具有良好的效果,可以进行疲劳驾驶检测。本文改进算法可能在速度上有所降低,但是可以在嵌入式开发板上进行实时检测。

6 结语

基于嵌入式的目标检测一直是重点话题,本文在YOLO-tiny的基础上加入了多层特征融合和三尺度输出,并对初始聚类算法进行了优化然后利用GBDT算法进行人眼特征点检测,并用PERCLOS准则进行疲劳驾驶判定。实验结果表明,本文提出的算法相较于原始算法和最新的YOLOV4-tiny算法有了较大的提升,检测的平均精度从59%提高到了76%,召回率从60%提高到80%。满足嵌入式的实时性要求,可以进行实时疲劳驾驶检测。

猜你喜欢
人眼中心点人脸
有特点的人脸
Scratch 3.9更新了什么?
如何设置造型中心点?
人眼X光
人眼为什么能看到虚像
三国漫——人脸解锁
闪瞎人眼的,还有唇
看人,星光璀璨缭人眼
汉字艺术结构解析(二)中心点处笔画应紧奏
寻找视觉中心点