王 彬,徐俊杰,赵作鹏
(1.中国矿业大学 计算机科学与技术学院,江苏 徐州 221116;2.江苏联合职业技术学院徐州财经分院 信息技术系,江苏 徐州 221008)
疲劳作为一种生理现象会降低工作效率和身体机能,通常是由于长时间的体力或脑力劳动所导致。在交通领域,疲劳驾驶会增加道路事故发生率[1-2]。据统计,疲劳驾驶是我国高速公路交通事故的主要原因之一,约占10%[3]。
为减少疲劳驾驶带来的安全隐患,研究人员多采用基于生理特征和面部特征的疲劳检测方法。基于生理特征的检测方法是通过监测驾驶者的生理指标,如心率、眼动、肌电信号等来评估其疲劳程度[4-5]。该类方法优势在于可以实时监测驾驶者的身体状况。而基于面部特征的检测方法以驾驶者的面部表情、头部姿态、眼睑闭合率等为判断疲劳程度的指标。该方法一般使用计算机视觉技术进行疲劳检测,具有非接触性、实时性和经济性等优势,现已成为主流的检测方法。以卷积神经网络(Convolutional Neural Network,CNN)为代表的深度学习模型在计算机视觉领域取得了巨大的成功,借助CNN在人脸检测和人体姿态估计方面取得的优良效果,大大提高了疲劳检测的准确性,并逐渐取代传统的机器学习算法。
疲劳检测可视为目标检测问题。2019年,Xiao等[6]提出了一种通过驾驶员眼睛的时空特征检测疲劳状态的有效方法,设计了具有长短期记忆单元的端到端可训练卷积神经网络。在深度学习方法层面上,Liu等[7]提出了一种基于多人脸特征的双流网络模型的驾驶员疲劳检测算法。Gu等[8]提出了一种用于疲劳检测系统的多任务分层CNN方案,并提出了一种多任务的卷积神经网络模型。
本研究将疲劳检测问题直接视为人脸和眼嘴的目标检测任务,以降低检测过程中的计算量。但大部分目标检测网络往往更加关注检测精度的提升,从而忽略了模型计算量、参数量大小的问题。2014年,将卷积神经网络运用在目标检测领域的模型R-CNN被提出,该模型将mAP在VOC2012最好结果的基础上提高了30%以上,达到了53.3%。
随着R-CNN的进一步发展,产生了两种不同的演变。第一种是基于候选区域网络方法的目标检测模型,第二种是基于回归方法的目标检测模型。这些新的变种在R-CNN的基础上进行了改进和优化,提高了目标检测的精度和效果。
此类模型可分为两种。(1)Faster R-CNN模型。它源于R-CNN和Fast R-CNN。2017年,Ren等[9]提出了Faster R-CNN,该模型在结构上整合了特征抽取、候选区域提取、边框回归和分类器的全过程,并将它们都集成在一个网络中。这种整合架构使得Faster R-CNN在综合性能上取得了优秀的表现,尤其是在检测速度方面。(2)R-FCN模型。该模型基于目标检测的需求,对ResNet进行了改进,将其转变为一种全卷积网络,以实现目标位置的准确定位。R-FCN在PASCAL VOC 2007测试集上的mAP为83.6%,单张图像检测时间为170 ms。
此类模型也可分为两种。(1)SSD模型。SSD是由谷歌团队于2016年提出的一种通用物体检测模型,它以VGG16为主干网络。相较于VGG16基础网络,SSD在最后一层卷积层之后添加了多个不同尺度的特征层,使得SSD能够处理不同大小的目标。SSD采用了一种单神经网络多边界框检测的方法,可以直接进行候选区域选取和区域分类,从而大大缩短了检测时间,但这种方式也会导致模型准确度的降低。(2)YOLO模型。同SSD一样,YOLO也是一种one-stage的检测模型,YOLO和YOLO9000于2016年和2017年先后面世,随后陆续迭代出了YOLOv2至YOLOv5 4个版本。YOLOv3结合了YOLOv2和ResNet的特点,并借鉴了特征金字塔网络FPN的设计思路,实现了多尺度预测。为了构建该模型,YOLOv3采用了Darknet-53的深层网络结构,其中包含了53层卷积层。此外,YOLOv3模型还通过使用多个逻辑分类器来取代softmax进行分类,以适应复杂目标类别或多标签分类任务,这也导致了YOLOv3模型参数量大且检测速度较慢。为了在算力有限的嵌入式设备上运行,需要提高模型检测的精度和速度。
为了达到实时检测的要求,同时满足移动端的内存限制,本研究提出了YM_SSH网络,整体结构如图1所示。该网络分为两部分:前半部分使用MobileViT替换YOLOv3的主干网络,后半部分为改进的SSH网络和检测层。为了完成轻量化的目标,选择MobileViT作为前半部分模型的主干网络;后半部分为改进的SSH网络。SSH网络借鉴了Inception结构,利用多个卷积维度拓展特征提取感受野,通过多分支、不同大小卷积核提取特征。对于深度可分离卷积,使用若干3×3卷积核来替换5×5和7×7卷积核。形式上,给定输入形状(H,W,M)和输出形状(H,W,N),让C5×5和C3×3分别表示5×5和3×3深度可分离卷积的计算代价:
图1 YM_SSH网络结构
C3×3=H×W×M×(9+N)
(1)
C5×5=H×W×M×(25+N)
(2)
C7×7=H×W×M×(49+N)
(3)
对于相同的有效感受野,当输入深度N<7时,两个3×3的卷积核比一个5×5的卷积核具有更少的计算量;当输入深度N<11时,3个3×3的卷积核比一个7×7的卷积核具有更少的计算量。将SSH模块中的Conv-1单元卷积为一个3×3卷积核,通道数缩减为原来的1/2,Conv-2单元卷积利用2个3×3卷积核替换一个5×5卷积核,通道数缩减为原来的1/4,Conv-3单元卷积利用3个3×3卷积核替换1个7×7卷积核,合并之后总通道数不变。
在YOLOv3检测层的基础上,将检测层的filter数量减半,通道数缩小为原来的1/2。为了弥补减少参数量的精度损失,引入SSH模块扩展感受野,使模型在减少参数量的同时,保持较高精度。
本文实验平台为 Intel Core I5 10400F处理器,NVIDIA GTX 1660 S 8G显存,软件环境为 Windows10,PyTorch深度学习框架,使用VOC2007、VOC2012数据集、KITTI数据集对模型进行训练,测试本模型以及其他流行目标检测模型的性能。
VOC2007和VOC2012数据集包括了20个目标物体类别。本文选择VOC2007和VOC2012的训练数据集作为本模型的训练集,并使用VOC2007的测试集来评估模型性能。此外,本研究还使用了KITTI数据集,该数据集包含了在不同场景下采集的真实图像数据,涵盖了市区、乡村和高速公路等场景,共计8个类别。在实验中,本研究将KITTI数据集中的pedestrian和person sitting合并为pedestrian类,并将tram和truck合并为truck类。因此,本研究的数据集包含了car、van、truck、pedestrian、cyclist和background 6个类别,总共有7 400张带有标签的图像,其中6 660张用作训练集,剩下的740张作为测试集。
本文从检测精度、检测效率和模型大小3个方面对目标检测效果进行评估。在评估模型性能上,采用准确率(Accuracy)、精确率(Precision)、召回率(Recall rate)、mAP(mean Average Precision)指标。使用每秒帧检测数(FPS)来评估检测效率,使用MB评估模型的大小。研究通过实验测量这些性能指标,综合讨论出更适用于嵌入式移植的模型。
本节通过控制变量分别使用不同的基础网络和YOLOv3结构,对比不同组合模型的效果。基础网络使用MobileNet、MobileNetV2、MobileViT和YOLOv3结构组合,在KITTI数据集上验证。结果如表1所示。通过第1、2行结果可知,在检测网络使用YOLOv3时,MobileNetV2相比于MobileNet,作为基础网络时可有效缩减模型大小,减少了2.8 MB,同时检测精度基本保持不变。通过第2、3行结果可知,MobileViT作为基础网络,相较于MobileNetV2,使用了标准卷积和Transformer,具有更少的计算量。此外,MobileViT作为基础网络要比MobileNetV2有更高的检测精度,mAP提升了1.2%,因此MobileViT在特征提取方面也比MobileNet更优秀。
表1 各模型在KITTI数据集上的效果
本节实验分别使用轻量化目标检测网络MobileNet-YOLOv3、MobileNetV2-YOLOv3以及本文提出的YM_SSH网络,在VOC、KITTI和Fatigue_Imgs数据集上进行实验。
在VOC和KITTI数据集上的实验结果如表2所示,通过第1、2行结果可知,MobileNetV2-YOLOv3相对于MobileNet-YOLOv3,在缩小模型大小的同时,拥有更高的检测精度。通过2、3行结果可知,本文提出的YM_SSH相对于MobileNetV2-YOLOv3,在大幅缩减模型大小的情况下,检测精度mAP仅下降了0.9%,用较少的精度代价换取了比MobileNetV2-YOLOv3更小的模型。在检测效率上,3款模型的FPS相近。
表2 各模型在VOC2007+2012数据集上的效果
本节实验分别使用YOLOv3、YOLOv3-MobileViT以及本文提出的YOLO-SSH网络,在疲劳数据集Fatigue_Imgs上进行试验。
在疲劳数据集上的实验结果如表3所示,YM_SSH相对于YOLOv3和MobileViT-YOLOv3,在缩小模型的同时,获得了更高的精度。
表3 各模型在Fatigue_Imgs数据集上的效果
为分析MobileViT-YOLOv3和YM_SSH两种模型的性能,本节在相同实验条件下,使用Fatigue_Imgs数据集比较了两种模型在不同阈值下的准确率。如图2所示,当阈值从0.25逐渐增加到0.55时,MobileViT-YOLOv3的检测性能下降幅度明显。但对于YM_SSH而言,当阈值为0.55时,准确率仍然达到91.39%,表明YM_SSH具有良好的抗干扰能力。
图2 两种网络在不同阈值下的准确率
本文针对算力受限的系统基于YOLOv3-MobileViT,提出了一种轻量化网络YM-SSH,它能够实现高效实时的疲劳检测。经过KITTI、VOC、Fatigue _Imgs数据集实验测试,综合考虑精度、速度和模型大小等因素,本文所提的轻量化疲劳检测网络,相比以往的轻量化目标检测模型,在收缩模型大小的同时,精确度更高。未来,本研究会将算法部署到嵌入式平台中,并在嵌入式模型根据不同的检测场景针对性地优化模型。