SCI论文(www.lunwensci.com)
摘要:为解决驾驶过程中出现疲劳的问题,提出了一种基于卷积神经网络的疲劳驾驶检测算法。在原始YOLOv5网络的基础上,提出一种Mosaic-8数据增强的方法提高网络训练的学习效率;并在骨干网络C3层中引入SE注意力机制模块,增加网络中通道之间的相关性;最后通过EIOU损失函数替换原网络中的损失函数。相比于原始算法,改进算法对人体的眼睛和嘴巴部位有着更好的检测效果,可以准确地提取驾驶员的眼睛嘴巴开合特征。在驾驶疲劳的评判标准上选择PERCLOS指标对驾驶员的疲劳进行判定,能够客观准确地对驾驶员的疲劳状态进行预警。相较于其他深度学习的疲劳检测算法,所提方法在精度上有所提高,实验证明其准确率可以达到97.8%。
关键词:疲劳驾驶检测;YOLOv5;深度学习;PERCLOS
Research on Driver Fatigue Detection Based on Deep Learning Zhang Zhenli,Li Liang,Song Jingjing,Fu Hao,Chen Yuan
(School of Electrical Engineering and Automation,Jiangxi University of Science and Technology,Ganzhou,Jiangxi 341000,China)
Abstract:In order to solve the problem of fatigue in the process of driving,this paper proposes an algorithm based on convolutional neural network for fatigue driving detection.Based on the original YOLOv5 network,a Mosaic-8 data enhancement method is proposed to improve the learning efficiency of network training.The SE attention mechanism module is introduced into C3 layer of backbone network to increase the correlation between channels in the network.Finally,the EIOU loss function is used to replace the original network loss function.Compared with the original algorithm,the improved algorithm has a better detection effect on the human eyes and mouth,and can accurately extract the opening and closing features of the driver′s eyes and mouth.In the evaluation criteria of driver fatigue,PERCLOS index is selected to judge driver fatigue,which can objectively and accurately give early warning to the fatigue state of drivers.Compared with other deep learning fatigue detection algorithms,the accuracy of the proposed method is improved.Experiments show that the accuracy of the proposed method can reach 97.8%.
Key words:fatigue driving detection;YOLOv5;deep learning;PERCLOS
0引言
随着我国经济的高速增长,人们生活质量的提高,家用汽车已经成为人们生活中不可或缺的一部分,截至2021年底,全国汽车保有量达到3.02亿辆,且每年以将近10%的速度增长。随着道路上的车辆越来越多,发生事故的概率也大大增加,其中30%以上的事故是因驾驶员疲劳驾驶[1],所以对驾驶员的疲劳驾驶检测与预警对保护驾驶员的生命财产具有重要意义。
疲劳驾驶是指驾驶人员在长时间的行车后,产生的生理机能和心理机能的失调,而在客观上出现驾驶技能下降的现象。近年来很多学者和团队对疲劳驾驶检测做出了研究。王琳[2]等提出一种根据驾驶员行车过程中的生理颈腰部和脑电信号来检测疲劳驾驶方法,优点是精度较高、实时性好,缺点是在复杂且狭小的驾驶环境很难布置检测装置,同时会妨碍驾驶员的驾驶体验。陈志军[3]提出通过传感器采集车辆的运动特征样本来预测驾驶疲劳,该方法在路况多变的场景中鲁棒性较差,且实时性不高。施冬梅[4]提出一种基于改进的SSD算法的疲劳驾驶检测网络,相比前两种算法具有较好的实时性和鲁棒性,但是精度略有不足。因此本文将利用深度学习的方法对驾驶员眼睛的特征进行疲劳驾驶检测。
现阶段深度学习检测算法主要分为单阶段目标检测算法和双阶段目标检测算法,其中单阶段目标检测以YOLO系列[5]、SSD算法[6]等为代表,双阶段目标检测算法以Faster R-CNN[7]系列为代表。双阶段的检测算法虽然有较高的检测精度,但是限于算法本身实时性很难满足部分实际检测场景需求。随着单阶段算法YOLO的不断发展,新算法YOLOv5相比于其他算法有着更高的精确度,从而兼顾了检测任务结果的准确性和实时性。本文将基于YOLOv5,通过Mosaic-8数据增强、EIOU损失函数替换,以及选择PERCLOS评价指标等,对疲劳驾驶检测进行研究,最终提出了一种基于卷积神经网络的疲劳驾驶检测算法。
1 YOLOv5网络
1.1模型结构
YOLOv5检测网络一共有YOLOv5s,YOLOv5m,YOLOv5l,YOLOv5x四种模型,其中YOLOv5s是YO⁃LOv5系列中深度最小,特征图的宽度最小的网络,后面3种网络都是在此基础上不断加深,加宽的[8]。YOLOv5的网络结构主要有Input,Backbone,Neck,prediction 4个部分,其中Input部分主要是进行Mosaic数据增强、自适应锚框计算、自适应图片缩放等训练准备工作;Back⁃bone部分主要是进行特征提取,包括一系列卷积层;Neck部分主要是使用FPN+PAN的方法将不同尺度的特征进行融合;Prediction部分是对特征进行分类及回归预测。YOLOv5.1、YOLOv5.2、YOLOv5.3版本主要由Focus模块、CBL(ConV+BN+LeakyRelu)模块、Bottleneck CSP模块和特征金字塔SPP模块组成[9]。后续的YO⁃LOv5.6版本相比于之前的版本删除了Focus模块,使用结构参数更少的C3结构代替原先的Bottleneck CSP结构,并使用更高效的SPPF(Spatial Pyramid Pooling-Fast)结构替换原算法的空间金字塔池化SPP(Spatial Pyramid Pooling)结构,YOLOv5.6网络结构如图1所示。
C3模块是在YOLOv5作者基于之前版本中的CSP模块改进的,C3结构引入了残差思想,改变了前向和后向信息的传递方式从而促进了网络的优化,具体结构首先是经过一个CBS层,然后通过x个Resunit[10]模块和上一层的输出进行拼接,最后通过一个CBS层得到输出结果,C3模块结构图如图2所示。
1.2激活函数
激活函数是神经网络中非常重要的概念,激活函数的非线性使得神经网络能够处理非常复杂的任务,解决了网络中信息传递的线性问题[11],最新的YOLOv5算法几乎全部使用了SiLU(Sigmoid Weighted Liner Unit)激活函数如式(1)所示。
SiLU激活函数的良好的数学性质能够有效地防止训练期间梯度接近于0并导致饱和,同时在模型的优化和泛化起到了重要作用,相比于ReLU激活函数,SiLU激活函数能够提供更多的非线性因素,从而使模型达到更好的效果[9]。
2改进的YOLOv5.6算法
本文将在YOLOv5.6版本的目标检测算法[12-13]的基础上进行改进,为了让模型获得更多的训练数据,本文在mosaic数据增强[14]方法的基础上使用mosaic-8数据增强的方法;在骨干网络的C3层中添加SE(Squeeze-and-Excitation)注意力模块[15],增加网络通道之间的相关性;同时在损失函数的计算上选择了EIOU损失函数[12]代替原算法的GIOU损失函数提高了模型精度解决了难样本不易平衡的问题。下面将从这3个方面进行详细分析。
2.1 Mosaic-8数据增强
在深度学习网络训练中,模型的样本越充足训练出来的网络模型泛化能力强,鲁棒性越高,同时一定程度上能解决过拟合的问题。但是收集大量的数据样本需要耗费大量的人力物力,因此数据增强技术就被提了出来。数据增强是指通过对图像的几何变换和颜色变换等其他操作增强数据,达到增加数据量的效果,从而提高训练网络的相关性能。
YOLOv5.6中不仅使用了普通的数据增强操作,还使用了Mosaic数据增强的方法,主要步骤是一次性从数据集中随机抽取4张图片进行放缩或裁剪,然后将初步处理的4张图片按照左上,左下,右上,右下的顺序进行位置分布,组合成一张新的图片,并将标签数据处理后进行对应。Mosaic-8数据增强是在Mosaic的基础上改进的,采用8张图片随机放缩、裁剪、排列,然后组成一张新的图片,增加数据量的同时合理引入一些噪声,提高模型的泛化能力。
2.2 SE注意力机制模块
由于在疲劳检测的过程中,驾驶环境复杂,使得模型很容易受到其他因素的干扰。如今注意力机制已经广泛地使用在计算机视觉任务中,其目的是使模型更关注权重高的点,忽略掉权重低的噪声点。通常引入注意力机制模块会增加网络的参数量,提高网络的训练时间,因此本文通过引入SE注意力机制模块对模型进行改进,同时能减少网络的参数计算,提高网络的训练效率。
SENet由两部分组成,分别是压缩部分(Squeeze)和激励部分(Excitation),其中压缩部分是把输入维度为(H、W、C)的特征图(Feature map)压缩为(1、1、C)维度大小,相当于将H、W压缩成1维,使得这一维参数获得了之前H*W的全局视野,从而使得模型的感受野大大增加;激励部分是在(1、1、C)一维向量之后添加一个FC全连接层(Fully Connected),对每个通道的重要性进行预测,得到的结果再作用到之前的Feature map上,最后进行相乘特征融合,将SE模块计算出来的各通道的权值分别和原特征图,具体结构如图3。
2.3损失函数
3实验结果和分析
3.1实验平台
本实验是在Windows操作系统下基于Pytorch1.8.0框架,在Pycharm平台上进行测试,实验过程中,利用Py⁃thon语言搭建改进的YOLOv5模型,模型训练迭代通过Nvidia RTX 3060 GPU(6 GB)加速,在CUDA 11.0环境下完成。同时YOLOv5根据网络深度和模型复杂程度分为YOLOv5-s、YOLOv5-m、YOLOv5-l、YOLOv5-x,其中YOLOv5-s模型结构最简单,所以本文在YOLOv5-s的基础上进行实验。
3.2模型训练
本文使用随机梯度下降(SGD)的方法对模型进行训练,冲量设置为0.937。初始学习率设置为0.01,最终学习率为0.2,权重衰减系数设置为0.000 5,训练迭代为150代,并使用预训练模型提高训练效率。模型训练过程中的损失曲线如图5所示,可以看到使用了新的损失函数后,模型收敛速度较快;模型最终的精度如图6所示,最终检测的精度可以达到92.3%。
改进算法的实际检测效果如图7所示,通过引入注意力机制和改进损失函数后,改进模型相较于原始算法有着更好的检测效果,且能够满足疲劳驾驶检测的需要。
4疲劳模型的搭建
描述驾驶员疲劳程度的状态是在时间上不断变化的。目前,世界上大部分研究人员采用卡内基梅隆大学研究中心提出的闭眼百分比(PERCLOS)来作为有效的疲劳驾驶指标[16]。PERCLOS是测量驾驶员单位时间内眼睛闭合时间的物理量,其数据可以反映疲劳状态。PERCLOS的定义是:
4.2疲劳检测
本文使用YAWDD(Yawning Detection Dataset)数据集[17]来评估疲劳驾驶检测模型。YAWDD数据集是在不同光照条件下拍摄的,总计351个视频,视频分为驾驶员正面和侧面两部分。
由于YAWDD数据集包含的视频数目较多,本文随机抽取了60条视频数据,并将每20条视频作为一组进行算法测试,如表1所示,其中实际疲劳数表示测试样本中疲劳的视频数目、检测疲劳数为算法判定疲劳数目、误检表示算法错误判定驾驶员的状态,可以看出本文最终的准确率可以达到97.8%,同时有着较高的疲劳检出率;疲劳的实际检测效果如图8所示。对比其他的疲劳检测算法,本文算法在精度上更有的优势,不同算法的疲劳检测精度如表2所示。
5结束语
本文提出一种改进的YOLOv5疲劳检测算法,使用Mosaic-8数据增强的方法进行数据预数据,增加模型的鲁棒性;通过引入注意力机制和EIOU损失函数,提高了算法对驾驶员眼睛和嘴巴的检测效果,最后使用PER⁃CLOS指标对驾驶员的疲劳程度进行分析,对驾驶员的疲劳状态进行预警,实验证明本文算法具有较高的疲劳检出精度,在YAWDD数据集上可达到95.7%的疲劳检出率。本文算法是通过分析驾驶员的面部疲劳特征进行疲劳判定的,因此在面部被遮挡条件下还是存在一定的局限性,后续的工作将会增加一些功能,比如在检测不到人脸时对驾驶员进行提醒和增加其他的疲劳特征如头部姿态辅助疲劳的判定,进一步提高算法的检测精度。
参考文献:
[1]FAN L,LI X Y,LÜT Y,et al.A review of driver fatigue detec⁃tion:progress and prospect[C]//2019 IEEE International Confer⁃enceon Consumer Electronics(ICCE),January 11-13,2019,Las Vegas,USA.New York:IEEE,2019.
[2]王琳,化成城,姜鑫,等.基于颈腰部肌电及脑电信号的疲劳驾驶检测[J].东北大学学报(自然科学版),2018,39(1):102-107.
[3]陈志军.基于运动特征的车辆危险行为识别方法研究[D].武汉:武汉理工大学,2016.
[4]施东梅.基于改进SSD算法的安全驾驶行为识别方法研究[J].现代电子技术,2021,44(11):67-72
[5]赵永强,饶元,董世鹏,等.深度学习目标检测方法综述[J].中国图象图形学报,2020,25(4):629-654
[6]WEI L,DRAGOMIR A,DUMITRU E,et al.SSD:single shot multibox detector[C]//European conference on computer vision,October 8-16,2016,Amsterdam,Netherlands.Springer Cham⁃bridge,2016.
[7]REN S,HE K,GIRSHICK R,et al.Faster R-CNN:towards real-time object detection with region proposal networks[J].IEEE Transactions on Pattern Analysis&Machine Intelligence,2017,39(6):1137-1149.
[8]郑楚伟,林辉,吴晓明,等.基于自适应空间特征融合的YOLOv5安全帽检测系统设计[J].机电工程技术,2022,51(9):37-42.
[9]黄绍欣,田秀云.基于深度学习的人脸检测算法研究[J].机电工程技术,2022,51(1):126-129.
[10]SZEGEDY C,IOFFE S,VANHOUCKE V,et al.Inception-v4,Inception-ResNet and the impact of residual connections on learning[EB/OL].https://arxiv.org/abs/1602.07261?context=cs.
[11]江俊君,李震宇,刘贤明.基于深度学习的单目深度估计方法综述[J].计算机学报,2022,45(6):1276-1307.
[12]CLEVERT D A,UNTERTHINER T,HOCHREITER S.Fast and accurate deep network learning by exponential linear units(ELUs)[J].arXivpreprint,arXiv:1511.07289,2015.
[13]陶旸,刘昱君,聂时贵.一种基于Mosaic Dataset的海量影像数据处理方法[J].现代测绘,2014,37(2):36-37.
[14]HU J,SHEN L,SAMUEL A,et al.Squeeze-and-excitation net⁃works[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2019,42(8):2011-2023.
[15]王兰美,褚安亮,梁涛,等.一种基于EIoU改进的YOLOv3算法:,CN112418212A[P].
[16]DINGES D F,GRACE R.Perclos:A valid psychophysiological measure of alertness as assessed by psychomotor vigilance[R].Washington DC:Federal Highway Administration,1998.
[17]ABTAHI S,OMIDYEGANEH M,SHIRMOHAMMADI S,et al.YawDD:A yawning detection dataset[C]//ACM Multimedia Sys⁃tems(MMSys),March 19-21,2014,Singapore.New York:ACM,2014,24-28.
[18]朱玉斌,延向军,申旭奇,等.基于级联宽度学习的疲劳驾驶检测[J].计算机工程与设计,2020,41(2):537-541.
[19]李昭慧,张玮良.基于改进YOLOv4算法的疲劳驾驶检测[J].电子测量技术,2021,44(13):73-78.
[20]胡习之,黄冰瑜.基于面部特征分析的疲劳驾驶检测方法[J].科学技术与工程,2021,21(4):1629-1636.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网! 文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/ligonglunwen/77421.html