融合DCNN的面部特征检测在驾驶员危险驾驶中的应用研究

2022-06-12 02:07王容霞杨伟煌赵林玲
商丘职业技术学院学报 2022年2期
关键词:精确定位关键点人脸

王容霞,贺 芬,杨伟煌,赵林玲

(广州南洋理工职业学院 信息工程学院,广东 广州 510925)

近几年,人工智能技术在诸多领域得到了较为广泛的应用.针对视频等动态图片的处理,相关专家和学者也进行了许多研究,在跟踪识别、动作识别、视频分类等方面具有突出的贡献[1-3].深度卷积神经网络(Dynamic Convolutional Neural Network,DCNN)作为一种经典的深度学习网络,能够很好实现视频特征的有效提取[4-6].本研究提出一种融合DCNN的面部特征定位模型,并利用驾驶员危险驾驶状态检测算法实现危险状态的识别,旨在为驾驶员的疲劳检测系统开发奠定基础.

1 融合DCNN的面部特征检测在驾驶员危险驾驶中的应用

1.1 融合DCNN的面部特征定位模型

人脸关键点检测方法主要包括活动外观模型(Active Appearance Models,AAM)、主动形状模型(Active Shape Models ,ASM)、级联回归、深度学习4种.ASM检测方法对环境的适应能力弱,运行效率非常低.AAM模型在构建模型阶段会引入纹理模型,运行效率和适应性均有明显的提升.级联回归检测方法能完成对预测结果的细化分类.深度学习检测方法拥有较好的精确度和速度.人眼定位算法能很好地实现驾驶员的疲劳检测,包括人脸区域分割法、模板匹配法、Hough变换法、灰度投影法[7-8].人脸区域分割法能较好地获取眼睛位置,但在驾驶员戴眼镜或光照强度较低的情况下,定位效果欠佳.模板匹配法非常简单,但实时性非常差且会受到人脸表情的影响.Hough变换法在驾驶员正常睁眼的情况下的定位效果较好,但当驾驶员眼睛睁开程度较小或戴眼镜情况下的精确度很低.

DCNN人脸关键点检测网络主要由23个CNN子网络级联组成,DCNN包括S0、S1、S2这3种不同的网络结构,第1阶段F1网络采用S0,EM1、EN1使用S1;第2阶段和第3阶段20个CNN均采用S2.尽管该网络能精确检测人脸关键点,但对嘴巴和眼睛定位存在以下不足:DCNN仅能完成5个人脸关键点检测,可定位嘴巴和眼睛的大概位置,但没法准确知道嘴巴和眼睛的大小.DCNN网络通过级联CNN能保证检测精度,但因结构复杂导致检测速度慢[9-11].BL-DCNN能够完成20个人脸关键点的检测,其中下巴和鼻子各1个,嘴巴、眼睛、眉毛分别4个、8个、6个.BL-DCNN定位模型包括精确定位和粗定位,粗定位阶段利用1个CNN网络获取20个人脸关键点,精确定位阶段使用1个CNN网络精确定位1个器官单元.BL-DCNN中人脸关键点粗定位网络参数如表1所示.粗定位网络结构采用轻量级网络MobileNetV2中的bottleneck层替代卷积层,输入图像大小为96*96*3,相邻bottleneck层增加add层整合特征,bottleneck层卷积核移动步长为2,最后利用dropout层连接两个全连接层防止过拟合.

表1 BL-DCNN中人脸关键点粗定位网络参数

BL-DCNN中人脸关键精确定位网络结构如图1所示.精确定位网络结构输入图像的大小为40*40*3,且在传输过程中图像大小依次减小,不同部位的关键点精确定位使用的输出层神经元数量不同,取值为6或8.利用均方误差计算模型的损失值,损失函数的计算公式为式(1).

图1 BL-DCNN中人脸关键精确定位网络结构

(1)

通过人脸关键点预测值和真实值的欧式距离与人脸大小的比值R确定检测误差,计算公式为式(2).

(2)

(3)

lex和ley分别表示坐标空间内眼睛边框矩形顶角对应的位置信息,第i个和第j个关键点的横坐标分别用xi和yj指代,第m个和第n个关键点的纵坐标分别用yn和ym指代.嘴巴定位需借助下巴和鼻子的位置,计算公式为式(4).

(4)

嘴巴边框矩形顶点对应的横纵坐标用mouthx和mouthy指代,第k个关键点的横坐标用xk指代,第i个和第j个关键点的纵坐标分别用yi和yj指代.

1.2 驾驶员危险驾驶状态检测算法

现阶段常用的眼睛状态识别方法有灰度投影法和Hough找圆法.Hough找圆法在驾驶员眼睛瞳孔近乎为圆形或戴眼镜的情况下的检测效果很差,而灰度投影法在眼睛被光源直射或光照不均匀的情况下的检测效果不理想.本研究提出一种基于CNN眼睛状态识别方法,该方法能检测驾驶员打哈欠动作、闭眼时间、眼睛眨眼频率.该识别网络包括8层,输入图像的尺寸为30*60.首先通过最大池化层和两个卷积完成对局部特征的提取,接着采用两个全连接层会整合获取到的局部特征,最后根据输出层最终的结果确定眼睛的状态[12-15].输出层神经元的数量为1,激活函数为sigmoid函数,激活值的取值范围为[0,1],正样本用睁眼标签值1表示,负样本用闭眼标签值0表示.预测阶段,当预测值超过0.5,则断定眼睛为睁眼;当预测值低于0.5,则断定眼睛为闭眼.损失函数计算公式为式(5).

(5)

图2 融合多特征的疲劳驾驶检测

2 融合DCNN的面部特征在驾驶员危险驾驶状态检测效果分析

2.1 融合DCNN的面部特征定位效果的分析

实验的训练样本为CeleA人脸数据集,数量为60 000张,测试集和训练集的比例为1∶11.依据人脸关键点完成20个人脸关键点的图像标注,数据格式为.txt,文件总共60 000行,每行41列.人脸图像路径为第1列,其余为人脸关键点的坐标位置.网络模型需要ton过归一化完成数据模型训练,训练过程中粗定位的网络损失值如图3(a),眉毛、眼睛、嘴巴精确定位的网络损失值分别如图3(b)、图3(c)、图3(d)所示.人脸关键点粗定位的网络损失值随着迭代次数的增加而不断下降,损失值变化范围为0.0032—0.3405.而在精确定位网络中,嘴巴、眼睛、眉毛位置关键点的损失值随着迭代次数的增加而不断下降,最终分别稳定在0.0038、0.0036、0.0041. BL-DCNN模型中粗定位的人脸关键点的平均误差值为0.07,而精确定位后嘴巴、眼睛、眉毛的误差值分别为0.034、0.032、0.037.

图3 BL-DCNN训练过程中粗定位和精确定位的网络损失值

BL-DCNN与常见的人脸关键点检测方法效果对比如表2所示.BL-DCNN人脸关键检测方法在运行时间和平均误差方面均具有明显的优势.BL-DCNN检测方法在运行时间和人脸关键点平均误差两个方面均优于DCNN检测方法.该研究对比人脸关键点的眼睛定位方法的性能提出的BL-DCNN检测方法、模板匹配法、Hough变换法、灰度投影法的准确率分别为94.2%、84.7% 、80.5%、90.2%.因此,眼睛定位方法的检测效果最佳.与此同时,嘴巴和眼睛定位方法无论在任何情况下均能准确获取位置.

表2 BL-DCNN与常见的人脸关键点检测方法效果

2.2 驾驶员危险驾驶状态检测分析

驾驶员闭眼和睁眼数据样本分别来源CEW数据集和CeleA数据集与sider face数据集,数量分别为15 000张和20 000张,打哈欠数据集来源于YawDD.训练集和测试集的比例为4∶1.数据集通过2600次迭代训练,眼睛状态识别网络的损失值从1.08下降至0.07,而眼睛状态识别的准确率从60%增加至94%.本研究提出的CNN+张角眼睛状态识别方法对驾驶员睁眼和闭眼的准确率分别为95.2%和94.5%,而CNN、灰度水平投影、Hough投圆3种眼睛状态识别的准确率均低于CNN+张角眼睛状态识别方法,CNN眼睛状态识别驾驶员睁眼和闭眼准确率分别为95.1%和91.4%.本研究选取4名不戴眼镜、4名戴眼镜共8名驾驶员来分析疲劳驾驶状态,疲劳驾驶检测方法结果如图4所示.无特征、闭眼时间、闭眼时间+眨眼频率、融合多特征的4种检测方法分别用检测A-D表示. 疲劳总数量为50个,通过融合多特征的疲劳特征检测方法能成功检测的数量为47个,准确率高达94%.

图4 疲劳驾驶检测方法的结果

3 结论

针对现阶段驾驶员疲劳检测存在效率慢、精度低等问题,提出一种BL-DCNN人脸关键点检测模型.通过粗定位和精确定位实现人脸关键点和嘴巴、眼睛、眉毛等特征位置的定位,并依据定位结果构建融合多特征的疲劳驾驶检测方法.人脸关键点粗定位网络损失值的变化范围为0.0032—0.3405.而精确定位驾驶员嘴巴、眼睛、眉毛位置关键点分别稳定在0.0038、0.0036、0.0041. 粗定位的人脸关键点的平均误差值为0.07,而精确定位后嘴巴、眼睛、眉毛的误差值分别为0.034、0.032、0.037.BL-DCNN人脸关键检测方法在运行时间和平均误差方面均优于其他检测方法.本研究提出的眼睛定位方法、模板匹配法、Hough变换法、灰度投影法的准确率分别为94.2%、84.7% 、80.5%、90.2%.眼睛状态识别网络的损失值从1.08下降至0.07,而眼睛状态识别的准确率从60%增加至94%.

猜你喜欢
精确定位关键点人脸
聚焦金属关键点
数控铣削精确定位加工方法在起落架修理中的应用
精确定位
肉兔育肥抓好七个关键点
有特点的人脸
一起学画人脸
三国漫——人脸解锁
精确定位
精确定位
医联体要把握三个关键点