论文部分内容阅读
摘 要:针对汽车驾驶员疲劳驾驶易导致交通事故这一问题,该文提出了基于YOLOv3目标检测算法的驶员疲劳检测实现方案。YOLOv3算法主要采用Darknet53作为主特征提取网络,在保证检测精度的同时提高检测精准度。YOLOv3算法作为获取驾驶员面部体征提取算法,将得到的眼部数据,计算判断的得出眨眼频率,PERCLOS算法分析判断驾驶员是否疲劳。试验表明,所提出的检测模型的mAP为90.30%,帧率58fps,能够适应实时监测的要求。
关键词:疲劳监测;YOLOv3;PERCLOS
介绍:随着汽车数量的逐渐增多,随之而来的是交通事故的增加,国家统计局数据显示,2018 年全国交通事故高达 2.4万起。在的交通事故中,由疲劳驾驶引起的事故比例逐渐增加,驾驶员疲劳驾驶已经成为导致交通事故的主要原因[1]
当前,国内外众多研究学者针对于如何对汽车驾驶员是否疲劳开展广泛深入研究。主要分为三类主要方法。第一类,基于驾驶员人体体征数据参数[2]。该方法主要通过人体体征数据分析驾驶员是否疲劳。虽对是否疲劳检测的准确性较高,但由于检测设备过于庞大且检测过程较为复杂,导致了可能会对驾驶员正常的驾驶汽车造成一定的影响。第二类,基于车辆行为检测检测[3-4]。该方法通过对行驶中汽车的行驶的车速、加速度、方向盘转角等汽车行驶信息来进行判断。不同品牌的汽车参数性能各不相同,同时不同地形的路况也会对汽车的表现造成一定影响,因此方法存在一定的局限性。第三类,基于计算机机器视觉检测[5-7]。主要通过车影像设备能够实时获取驾驶员行驶汽车过程中的脸部信息,再通过训练好的算法模型对采集到的脸部信息进行面部特征提取,然后通过分析正常情况下眨眼的频率与频率状态下的眨眼频率,分析判定驾驶员的当前是否处于疲劳状态。此方法能够最大程度上的减少对驾驶员正常驾驶汽车的影响,并具有一定的准确性。
驾驶员的疲劳检测,因为应用于汽车行驶的过程中,需要的是实时数据,因此对目标检测算法的实时性有着很高的要求。目前基于深度卷积神经网络(Convolution Neural Network,CNN)的算法应用于三大类目标检测算法:第一类方法是基于学习搜索的检测算法,这类算法与其他算法的不同点在于,是通过将图像特征提取任务转换为动态视觉搜索任务,这样虽然能够很好的提高了特征提取的速度,但是也会出现检测精度不足的问题。第二类方法,基于候选区域目标检测器的目标识别算法。如 Fast R-CNN[8]、Faster R-CNN[9]等,这类算法检测精度较高,但检测速度较慢,需要占用大量计算资源;第三类方法是基于回归方式的目标检测算法,如 YOLO(You Only LiveOnce)[10][11]系列算法等,此系列算法在不仅在保证目标检测准确率高的同时,在检测速度方面也表现出优越的性能。目前YOLO 系列算法已经发展到第三版本即 YOLO V3,在对实时性要求比较高的目标检测任务当中表现相当出色。本文基于YOLOv3[12]目标检测算法的实现对驾驶员疲劳状态的检测。
二、算法
2.1 YOLOv3 算法
YOLOv3 算法相比较于前两个版本,主要进行了三方面的改进:
(1)新的网络结构 Darknet53,主要借鉴 ResNet 残差网络思想。在原有的基础网络中大量使用残差连接,缓解了训练中梯度小时的问题,使得能够将网络设计很深,当网络层次越深,特征表达的效果就越好,分类与预测的性能就能得到提高;
(2)新的特征提取网络,主要采用多尺度融合预测方法。YOLOv3 算法使用 13*13、26*26、52*52 这三种不同尺度的特征图进行预测,采用金字塔网络[13]进行提取特征,通过上采样特征合并,能够得到更丰富的语义信息,极大的提高检测算法对微型目标检测精度。
(3)分类损失函数替换。YOLOv3 算法替换了原来的Softmax 函数改为 Logistic 函数。Softmax 函数输出多个类别预测之间会互相抑制,Logistic 分类器相互独立,可实现多类别预测。
2.2 特征提取网络 Darknet – 53
YOLOv3 算法采用 Darknet – 53 为特征提取网络,Darknet – 53 网络中有 53 个卷积层,采用 LeakyReLu 作为修正函数。网络结构如图 1 所示。图中各块意义如下:
DBL:代表卷积、BN 及 Leaky ReLU 三层的结合。
Res:代表残差块。
上采样:上采样使用的方式为池化,即元素赋值扩充的方法使得特征尺寸扩大。
Concat:上采样后将深层与浅层的特征图进行 Conncat操作,即通道的拼接。
从图 1 中可以看出 Darknet – 53 结构的一些新特性:残差思想、多层特征图、无池化层。
2.3 疲劳识别
PERCLOS(percentage of eyeIid cIosure over the pupiI)[14],PERCLOS 算法指的是在一定单位时间内眼睛闭合时间所占单位时间的比例,当眼睛闭合比例达到 70%或 80%时,则认为出现疲劳。
计算公式如下:
其中单位时间 T 取 ?单位时间 = 20s,??为每次眨眼时眼睛闭合所用的时间。
三、实验结果与分析
3.1 实验环境
本文的实验模型训练环境配置:
Intel(R) Core(TM) i7-8700
處理器,64G 内存,NVIDIA RTX2080Ti 显卡,CUDA 版本10.0,CUDNN 版本 7.4,OpenCV 版本为 3.3,操作系统为windows10。 网络参数配置如下:动量为 0.9,权重衰减为 0.0005, 迭代次数为 500200,学习率使用分步策略,初始值设置为 0.001,变化的次数为 400000 和 450000,比率为 0.1 和 0.1。
3.2 评价指标
在实际对于驾驶员是否疲劳状态检测的实际应用中,识别的准确率和速度尤为重要。若实际检验中出现状态不准确,则十分容易导致对驾驶员疲劳检测出现错误。当驾驶员已经处于疲劳状态,但系统仍然未能做出检测,则依旧会存在安全上的隐患。
本文采用每个类别相互独立的平均精确率均值 mAP(meanaverage precision),与每秒机器能够检测到图像数量的帧数 FPS(frames per second)作为目标检测模型性能好坏的评价指标。
精确率与召回率的定义如下:
以本文为例,TP(True Position):表示预测框正确地与标签匹配,即能够准确预测出眼睛状态的数量;FP(FalsePositon):表示将背景预测成物体,即指将脸部部位识别为眼睛数量;FN(False Negative):表示本来需要检测出的物体,模型没有检测出,即眼睛没有检测出的数量;TN(TrueNegative):表示检测目标本无背景,检测模型也没能够识别出背景,即指脸部,并没有识别出的数量。以召回率为横坐标,以识别的精准度为纵坐标,最终绘制出一条 P-R 曲线。曲线下的面积即为 AP ,AP 综合考量了不同召回率下的准确率,不会对 P 与 R 有任何偏好。每个类别的 AP 是相互独立的,将每个类别的 AP 进行平均,即可以得到 mAP。
3.3 测试结果
根据以上计算指标得出模型的综合性能如表 1 所示,从表中可以看出检测精度与召回率都比较高,F1-score 也高达 89%整体的应用性能较强。
另外,从图 1 模型训练的 loss 曲线中可以看出,随着迭代次数逐渐的增加,十分明显的可以看出收敛速度较快,同时也能够达到很不错的学习效果,因此这一个具有代表性意义的典型特征结果可以得出结论模型的学习能力较强。
针对于采集到的数据集,采用 YOLOv3 检测模型进行检测,P-R 曲线如图 2 所示,mAP 达到了 90.30%,一系列可靠实验的结果表明模型具有良好的普适性。
如表 2 所示,采用同一数据集与其他主流目标检测模型的性能对比后发现,YOLOv3 与 Faster R-CNN 在精准度上都达到 了 90% , 但 Faster R-CNN 在 检 测 的 帧 率 上 远 远 不 如YOLOv3,达不到实时检测的需求。虽然 YOLOv3 在检测速度上比 YOLOv2 略低,但在满足实时检测的帧的同时还保证了检测的精准度。
四、 结束语
本文主要研究,提出了基于 YOLOv3 目标检测算法实现对驾驶员疲劳状态检测方法。通过一系列大量具有重复性的精准良好的结果均证明 YOLOv3 在目标检测任务中在检测速度与精度的上表现出良好的优越性。同时,结合 PERCLOS 疲劳判断方法在是否判断上具有的普适性,能够实现对驾驶员是否疲劳的实时检测。通过实时数据检测表明,该方法在检测精度与实时性两个方面均展现出良好的性能。在后续研究中,将会考虑将模型移植到移动设备中,以适应生产应用。
参考文献:
[1]Mandal B , Li L , Wang G S , et al. Towards Detection ofBus Driver Fatigue Based on Robust Visual Analysis of Eye State[J].Intelligent Transportation Systems, IEEE Transactions on, 2017,18(3):545-557.
[2]胥川, 王雪松, 陳小鸿,等. 基于决策树的驾驶疲劳等级分析与判定[J]. 同济大学学报(自然科学版), 2013, 43(1).
[3]Gustavo Lenis, Patrick Reichensperger, David Sommer,等. Detection of microsleep events in a car driving simulation studyusing electrocardiographic features[C]// Current Directions inBiomedical Engineering. 2016.
[4]Xiaoliang Z , Jiali L , Yugang L , et al. Design of a FatigueDetection System for High-Speed Trains Based on DriverVigilance Using a Wireless Wearable EEG[J]. Sensors, 2017,17(3):486.
[5]李锐, 蔡兵, 刘琳,等. 基于模型的驾驶员眼睛状态识别[J]. 仪器仪表学报, 2016, 037(001):184-191.
[6]Feng D , Feng M Q . Computer vision for SHM of civilinfrastructure: From dynamic response measurement to damagedetection-Areview[J].EngineeringStructures,2018,156(FEB.1):105-117.
[7]Xiaoyun J , Lingyu Z , Jiang R , et al. Research onFatigue Driving Detection Method of Facial Features Fusion[J].Power System and Clean Energy, 2016.
关键词:疲劳监测;YOLOv3;PERCLOS
介绍:随着汽车数量的逐渐增多,随之而来的是交通事故的增加,国家统计局数据显示,2018 年全国交通事故高达 2.4万起。在的交通事故中,由疲劳驾驶引起的事故比例逐渐增加,驾驶员疲劳驾驶已经成为导致交通事故的主要原因[1]
当前,国内外众多研究学者针对于如何对汽车驾驶员是否疲劳开展广泛深入研究。主要分为三类主要方法。第一类,基于驾驶员人体体征数据参数[2]。该方法主要通过人体体征数据分析驾驶员是否疲劳。虽对是否疲劳检测的准确性较高,但由于检测设备过于庞大且检测过程较为复杂,导致了可能会对驾驶员正常的驾驶汽车造成一定的影响。第二类,基于车辆行为检测检测[3-4]。该方法通过对行驶中汽车的行驶的车速、加速度、方向盘转角等汽车行驶信息来进行判断。不同品牌的汽车参数性能各不相同,同时不同地形的路况也会对汽车的表现造成一定影响,因此方法存在一定的局限性。第三类,基于计算机机器视觉检测[5-7]。主要通过车影像设备能够实时获取驾驶员行驶汽车过程中的脸部信息,再通过训练好的算法模型对采集到的脸部信息进行面部特征提取,然后通过分析正常情况下眨眼的频率与频率状态下的眨眼频率,分析判定驾驶员的当前是否处于疲劳状态。此方法能够最大程度上的减少对驾驶员正常驾驶汽车的影响,并具有一定的准确性。
驾驶员的疲劳检测,因为应用于汽车行驶的过程中,需要的是实时数据,因此对目标检测算法的实时性有着很高的要求。目前基于深度卷积神经网络(Convolution Neural Network,CNN)的算法应用于三大类目标检测算法:第一类方法是基于学习搜索的检测算法,这类算法与其他算法的不同点在于,是通过将图像特征提取任务转换为动态视觉搜索任务,这样虽然能够很好的提高了特征提取的速度,但是也会出现检测精度不足的问题。第二类方法,基于候选区域目标检测器的目标识别算法。如 Fast R-CNN[8]、Faster R-CNN[9]等,这类算法检测精度较高,但检测速度较慢,需要占用大量计算资源;第三类方法是基于回归方式的目标检测算法,如 YOLO(You Only LiveOnce)[10][11]系列算法等,此系列算法在不仅在保证目标检测准确率高的同时,在检测速度方面也表现出优越的性能。目前YOLO 系列算法已经发展到第三版本即 YOLO V3,在对实时性要求比较高的目标检测任务当中表现相当出色。本文基于YOLOv3[12]目标检测算法的实现对驾驶员疲劳状态的检测。
二、算法
2.1 YOLOv3 算法
YOLOv3 算法相比较于前两个版本,主要进行了三方面的改进:
(1)新的网络结构 Darknet53,主要借鉴 ResNet 残差网络思想。在原有的基础网络中大量使用残差连接,缓解了训练中梯度小时的问题,使得能够将网络设计很深,当网络层次越深,特征表达的效果就越好,分类与预测的性能就能得到提高;
(2)新的特征提取网络,主要采用多尺度融合预测方法。YOLOv3 算法使用 13*13、26*26、52*52 这三种不同尺度的特征图进行预测,采用金字塔网络[13]进行提取特征,通过上采样特征合并,能够得到更丰富的语义信息,极大的提高检测算法对微型目标检测精度。
(3)分类损失函数替换。YOLOv3 算法替换了原来的Softmax 函数改为 Logistic 函数。Softmax 函数输出多个类别预测之间会互相抑制,Logistic 分类器相互独立,可实现多类别预测。
2.2 特征提取网络 Darknet – 53
YOLOv3 算法采用 Darknet – 53 为特征提取网络,Darknet – 53 网络中有 53 个卷积层,采用 LeakyReLu 作为修正函数。网络结构如图 1 所示。图中各块意义如下:
DBL:代表卷积、BN 及 Leaky ReLU 三层的结合。
Res:代表残差块。
上采样:上采样使用的方式为池化,即元素赋值扩充的方法使得特征尺寸扩大。
Concat:上采样后将深层与浅层的特征图进行 Conncat操作,即通道的拼接。
从图 1 中可以看出 Darknet – 53 结构的一些新特性:残差思想、多层特征图、无池化层。
2.3 疲劳识别
PERCLOS(percentage of eyeIid cIosure over the pupiI)[14],PERCLOS 算法指的是在一定单位时间内眼睛闭合时间所占单位时间的比例,当眼睛闭合比例达到 70%或 80%时,则认为出现疲劳。
计算公式如下:
其中单位时间 T 取 ?单位时间 = 20s,??为每次眨眼时眼睛闭合所用的时间。
三、实验结果与分析
3.1 实验环境
本文的实验模型训练环境配置:
Intel(R) Core(TM) i7-8700
處理器,64G 内存,NVIDIA RTX2080Ti 显卡,CUDA 版本10.0,CUDNN 版本 7.4,OpenCV 版本为 3.3,操作系统为windows10。 网络参数配置如下:动量为 0.9,权重衰减为 0.0005, 迭代次数为 500200,学习率使用分步策略,初始值设置为 0.001,变化的次数为 400000 和 450000,比率为 0.1 和 0.1。
3.2 评价指标
在实际对于驾驶员是否疲劳状态检测的实际应用中,识别的准确率和速度尤为重要。若实际检验中出现状态不准确,则十分容易导致对驾驶员疲劳检测出现错误。当驾驶员已经处于疲劳状态,但系统仍然未能做出检测,则依旧会存在安全上的隐患。
本文采用每个类别相互独立的平均精确率均值 mAP(meanaverage precision),与每秒机器能够检测到图像数量的帧数 FPS(frames per second)作为目标检测模型性能好坏的评价指标。
精确率与召回率的定义如下:
以本文为例,TP(True Position):表示预测框正确地与标签匹配,即能够准确预测出眼睛状态的数量;FP(FalsePositon):表示将背景预测成物体,即指将脸部部位识别为眼睛数量;FN(False Negative):表示本来需要检测出的物体,模型没有检测出,即眼睛没有检测出的数量;TN(TrueNegative):表示检测目标本无背景,检测模型也没能够识别出背景,即指脸部,并没有识别出的数量。以召回率为横坐标,以识别的精准度为纵坐标,最终绘制出一条 P-R 曲线。曲线下的面积即为 AP ,AP 综合考量了不同召回率下的准确率,不会对 P 与 R 有任何偏好。每个类别的 AP 是相互独立的,将每个类别的 AP 进行平均,即可以得到 mAP。
3.3 测试结果
根据以上计算指标得出模型的综合性能如表 1 所示,从表中可以看出检测精度与召回率都比较高,F1-score 也高达 89%整体的应用性能较强。
另外,从图 1 模型训练的 loss 曲线中可以看出,随着迭代次数逐渐的增加,十分明显的可以看出收敛速度较快,同时也能够达到很不错的学习效果,因此这一个具有代表性意义的典型特征结果可以得出结论模型的学习能力较强。
针对于采集到的数据集,采用 YOLOv3 检测模型进行检测,P-R 曲线如图 2 所示,mAP 达到了 90.30%,一系列可靠实验的结果表明模型具有良好的普适性。
如表 2 所示,采用同一数据集与其他主流目标检测模型的性能对比后发现,YOLOv3 与 Faster R-CNN 在精准度上都达到 了 90% , 但 Faster R-CNN 在 检 测 的 帧 率 上 远 远 不 如YOLOv3,达不到实时检测的需求。虽然 YOLOv3 在检测速度上比 YOLOv2 略低,但在满足实时检测的帧的同时还保证了检测的精准度。
四、 结束语
本文主要研究,提出了基于 YOLOv3 目标检测算法实现对驾驶员疲劳状态检测方法。通过一系列大量具有重复性的精准良好的结果均证明 YOLOv3 在目标检测任务中在检测速度与精度的上表现出良好的优越性。同时,结合 PERCLOS 疲劳判断方法在是否判断上具有的普适性,能够实现对驾驶员是否疲劳的实时检测。通过实时数据检测表明,该方法在检测精度与实时性两个方面均展现出良好的性能。在后续研究中,将会考虑将模型移植到移动设备中,以适应生产应用。
参考文献:
[1]Mandal B , Li L , Wang G S , et al. Towards Detection ofBus Driver Fatigue Based on Robust Visual Analysis of Eye State[J].Intelligent Transportation Systems, IEEE Transactions on, 2017,18(3):545-557.
[2]胥川, 王雪松, 陳小鸿,等. 基于决策树的驾驶疲劳等级分析与判定[J]. 同济大学学报(自然科学版), 2013, 43(1).
[3]Gustavo Lenis, Patrick Reichensperger, David Sommer,等. Detection of microsleep events in a car driving simulation studyusing electrocardiographic features[C]// Current Directions inBiomedical Engineering. 2016.
[4]Xiaoliang Z , Jiali L , Yugang L , et al. Design of a FatigueDetection System for High-Speed Trains Based on DriverVigilance Using a Wireless Wearable EEG[J]. Sensors, 2017,17(3):486.
[5]李锐, 蔡兵, 刘琳,等. 基于模型的驾驶员眼睛状态识别[J]. 仪器仪表学报, 2016, 037(001):184-191.
[6]Feng D , Feng M Q . Computer vision for SHM of civilinfrastructure: From dynamic response measurement to damagedetection-Areview[J].EngineeringStructures,2018,156(FEB.1):105-117.
[7]Xiaoyun J , Lingyu Z , Jiang R , et al. Research onFatigue Driving Detection Method of Facial Features Fusion[J].Power System and Clean Energy, 2016.