基于深度学习的疲劳驾驶检测系统

2021-05-16 10:33饶睿
科学技术创新 2021年13期
关键词:先验重度卷积

饶睿

(广西科技大学,广西 柳州545026)

中国每年因疲劳驾驶引起的交通事故占总体交通事故的20%[1]。应进行驾驶员的疲劳状态检测,从而使得有效预警和干预成为可能,这是提高行车安全、尤其是长途驾驶安全的重要保障技术。

传统疲劳检测方法主要使用类似HOG 特征,Haar 特征等[2]用于特征描述,分类器主要使用SVM 分类器等[3]。如今深度学习在目标检测领域取得很大进步,基于CNN 的疲劳检测已成为当前的热点[4],例如,张芳等[5]使用面部关键点提取眼睛图像,使用CNN 来确定眼睛位置和形态,提取眼部特征用于检测疲劳驾驶。本文采用单发多框检测器(Single Shot Multibox Detector,SSD),同时对人眼睛和嘴巴进行定位与状态的识别,这种方法检测效果更为稳定,且识别率更高。

1 样本库的建立

本文自制数据集包括来自7 名被采集对象的4823 张图像,其中包括不同头部状态、是否佩戴眼镜、不同场景以及2353 张来源于现实驾驶场景的视频录像的图片。采用标注工具LabelImg 对图像中的眼部和嘴部特征进行标注[6],一共四个分为四个类别,其中O_eye 代表眼睛张开、C_eye 代表眼睛闭合、类似的、O_mouth 和C_mouth 分别对应与嘴巴张开或闭合。完成标注并保存后LabelImg 将为图片生成相对应的XML 格式的标注文件。

2 网络结构

2.1 SSD 网络介绍

SSD 全称为单发多框检测器,是一种深度卷积神经网络。常见目标检测算法有区域卷积神经网络(R-CNN)系列、YOLO 系列等,而SSD 兼顾精度和检测速度[7]。

2.2 网络结构

其基础网络是一个在ImageNet 上针对图像分类预训练后的VGG-16 模型,为了使该网络结构能够进行目标检测,对部分网络层进行微调。微调后的网络图(图1)包括:使用卷积并替换全连接层、移除dropout 层、使用一个扩张卷积替换最后的最大池化层。

为了得到感受野变化的特征图,在基础网络层后,叠加卷积核大小依次缩小的卷积层以生成更小的特征图,这样就构成了完整的SSD 网络(图2)。

2.3 SSD 网络的核心思想

2.3.1 对多个尺度的特征图进行操作

图1 VGG-16 基础网络

图2 SSD300 模型

首先在输入图像中通过卷积提取出特征图,并以提取后的特征图的像素为中心生成先验框以减少数据量。通过提取较多区域来检测小目标,提取较少区域来检测的目标的方法产生多个尺度的特征图。

2.3.2 在位置确定和类别判定中应用CNN

在通过辅助CNN 层后将生成大小各异的特征图(对应于不同感受野),该操作不但能降低参数规模,还能提高对不同大小目标的检测准确率。

2.4 训练方法

2.4.1 匹配策略

通过计算像素重合的交并比来衡量此时先验框和真实物体的相似度。

2.4.2 损失函数

总体损失函数为定位损失(loc)和置信度损失(conf)的加权和:

其中c 表示分类标签,l 表示先验框,g 表示实际目标所在的矩形框,N 表示与真实边框匹配的先验框的数量,α 默认为1,为权重调整参数。

位置的偏离程度采用平滑后的范数损失进行衡量:

其中x 是0 到1 之间的实数,d 为目标检测的先验框。如果x=1,表示第i 个先验框与第j 个实际目标位置一致,P 为此时实际目标框的类别,如果x=0,则先验框和实际目标框的类别不一致,此时将其视为负例,且不再计算其位置偏移值。(cx,cy),w,h分别表示矩形框的中心位置,宽度和高度。

分类错误的惩罚采用交叉熵损失函数:

3 疲劳状态评估方法

PERCLOS 是驾驶疲劳判定的重要指标,原理是通过计算一段时间的眼睛闭合时间所占比例判断疲劳状态,我们选择P80标准判断驾驶员是否疲劳[8]。

图3 人眼睁开程度示意图

通过图3 可得到PERCLOS 值的计算公式为

通过计算一段连续视频中的闭眼状态的单帧图像数K 和视频单帧图像总数N 可计算计算PERCLOS 值:

本文提出一种基于模糊综合评价的疲劳,对于人的不同疲劳状态特征划分疲劳状态,通过对不同特征给予不同权重计算加权和,来判定是否存在疲劳驾驶,将最终的驾驶员状态确定为三者之一:为清醒、疲劳与重度疲劳。状态评估值计算公式如下:

其中P 代表PERCLOS 值,B 统计闭眼次数,C 记录眼睛持续保持闭合状态的最长时间,Y 代表张嘴次数,VP、VB、VC、VY为不同状态下的指标P、B、C、Y 所处评级的评价,设F1 为疲劳状态下阈值,F2 为重度疲劳状态下的阈值,将计算得到的评估值F与F1 和F2 进行比较,若F 的值小于F1 则判定驾驶员处于清醒状态,若F 的值在F1 和F2 之间,则将当前驾驶员分类为第一种状态(疲劳),若F>F2,则认为当前驾驶人员已经处于第三种状态(重度疲劳)。根据实验结果,F1 设定为5.6,F2 设定为7.8。

4 系统评估

为了验证算法的有效性,我们让5 名测试者在不同条件下,模拟疲劳和重度疲劳状态下并用摄像机采集视频。

表1 检测结果

如表1 所示,检测算法在数据集上的检测结果,当驾驶员为重度疲劳时,检测的准确率达到了100%,当驾驶员在疲劳和清醒状态时的准确率稍低,分别有一个判断错误,这是因为哈欠的时候错误判断了驾驶员的状态,算法的总体正确率达到了96%,表现出了较好的准确性。

结束语

本文实现了一种基于深度卷积神经网络SSD 的疲劳检测算法,本算法将目标检测运用到疲劳特征的检测当中以此获得驾驶员眼部和嘴部实时状态信息,判定驾驶员状态。测试结果表明基于SSD 的疲劳检测算法能够在速度、准确度、鲁棒性上达到较好的平衡。

猜你喜欢
先验重度卷积
基于全卷积神经网络的猪背膘厚快速准确测定
重度牙周炎牙齿的牙髓治疗时机及牙周牙髓联合治疗对重度牙周炎的疗效观察
康德定言命令的演绎是一种先验演绎吗?——论纯粹知性与实践理性在先天原则证成方面之异同
基于暗通道先验的单幅图像去雾算法研究与实现
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
先验想象力在范畴先验演绎中的定位研究
宫斗剧重度中毒