1. 引言
根据2023年公安部交通管理局最新的数据,我国截至当年底的机动车保有量已达4.35亿辆,与上年相比增长了0.05% [1]。然而,随着机动车数量的不断增加,我们面临着交通拥堵和交通事故频发等问题。英国的统计数据显示,有70%的致命交通事故是由驾驶人注意力不集中引起的。研究表明,驾驶人在开车时接打电话会使交通事故发生概率增加2.8倍,而发信息时这一概率则增加了23倍[2]。分心驾驶还可能导致事故的严重程度加剧,因此对驾驶员分心状态进行识别和检测的研究具有重要意义。
目前有基于生理信号的驾驶行为监测技术,如Chu等[3]通过监测分析驾驶员分心驾驶时的脑电信号(EEG)的变化,发现α、β、γ等脑电波与驾驶员分心状态有着显著联系;有基于深度学习的驾驶行为监测技术,如Tran等人[4]分析比较了AlexNet、GoogleNet、VGG-16和ResNet四种深度卷积神经网络[5] [6]在分心驾驶任务中的表现,实验结果表明GoogleNet的检测效果最好。但上述检测算法中都存在检测速度慢,准确率低等问题,本文采用改进的YOLOv8算法,以权衡驾驶分心行为识别的实行性和精度为目标,实现快速、准确的驾驶员分心驾驶行为识别[7]-[9]。
2. 方法
2.1. YOLO8n网络结构
Figure 1. Structure diagram of YOLOv8n [11]
图1. YOLOv8n的结构图[11]
YOLOv8是一种基于回归技术的单阶段目标检测算法,旨在进一步提高检测性能。该模型包含四种不同的网络结构:YOLOv8n、YOLOv8s、YOLOv8m、YOLOv8l和YOLOv8x [10]。这些架构在深度和广度方面都得到了支持,以提高检测精度,尽管代价是增加了计算复杂性。鉴于分心驾驶检测所需的高速响应能力,我们选择了以速度快著称的YOLOv8n模型作为基准,并随后对其进行了优化。YOLOv8s模型由四个关键组件组成:输入层、骨干网络层、颈部结构和输出层,如图1所示。
2.2. 改进的YOLO8n网络结构
2.2.1. SimAM注意力机制
在实际驾驶场景中,驾驶员背景的多样性使得准确识别分心驾驶行为成为相当大的挑战。在这种情况下,为了更有效地提取关键信息,注意力机制已被广泛用于分心驾驶行为的研究。然而,现有的注意力模块存在两个问题:首先,它们只能在通道或空间维度上细化特征,这种限制使得它们难以灵活地学习不同通道和空间位置中的注意力权重。下图呈现了两种常见的注意力模块:(1) 通道注意力模块该模块对相同通道的不同位置的特征同等对待,从而区别对待不同通道的特征。(2) 空间注意力模块该模块对某一位置的不同通道同等对待,而对同一通道上的不同位置区别对待。然而,人类的注意力应当是空间、通道两种注意力协同工作,即每个神经元都应当区别对待。
此外,目前注意力机制的结构通常是由一系列复杂的单元组合而成,常见的注意力机制往往采用额外的子网络生成注意力权值,如SENet (Squeeze and Excitation Networks),其结构由全局平均池化、全连接层、Sigmoid模块、ReLu激活函数[12]-[14]等单元组成,这些网络结构复杂,其中包含大量全连接、池化等操作,众多单元的计算需要大量算力。表1展示了目前几个主流的注意力模块额外引入的参数量,从中可以看出,SimAM注意力机制是一种无参注意力机制,相比其他注意力机制,SimAM在增加模型特征提取能力的同时,不会带来模型参数量的增加。
Table 1. Comparison of different attention mechanisms
表1. 不同注意力机制对比表
注意力机制 |
参数量 |
SE |
|
CBAM |
|
GC |
|
ECA |
k |
SRM |
6C |
SimAM |
0 |
因此,这项研究引入了SimAM注意力机制[15]-[17],如图2所示。SimAM是一种三维注意力模块,通过使用能量函数计算注意力权重,是一个简单但非常有效的卷积神经网络的注意力模块。通过设计能量函数来计算注意力权重,能够灵活、有效地提升神经网络的表征能力。SimAM注意力模块将空间注意力与通道注意力以并行或串联的方式相结合,在不引入额外参数的情况下,从特征图中提取3D注意力权重,提出了优化能量函数以探索每个神经元的重要性。利用统一权重的注意力模块改善了能量函数以揭示神经元的重要性,推导出了能量函数的解析解,加速了注意力权重的计算,并设计了一种轻量级注意力模块。
Figure 2. SimAM attention structure [18]
图2. SimAM注意力结构[18]
SimAM算法首先对每个神经元的重要性进行评估。在神经科学领域中,信息丰富的神经元通常展现出与周围神经元不同的放电模式。此外,激活的神经元往往会抑制周围的神经元,即存在空域抑制效应。因此,具有空域抑制效应的神经元应被视为具有更高的重要性。SimAM算法通过衡量神经元之间的线性可分性来识别重要神经元,从而定义以下能量函数:
(1)
(2)
(3)
其中,t表示输入特征矩阵中某一通道的目标神经元,
是该通道中的其他神经元,M则是该通道中神经元的总数量,i为空间维度索引,
是关于t的线性变换,
是关于
的线性变换,
是线性变换的权重,bt则是线性变换的偏置项。公式(1)中的变量都是标量,yt不等于y0,因此当yt =
且y0 =
时,公式(1)达到最小值,而最小化公式(1)代表着找到了同一个通道中目标神经元t和其他神经元的线性可分性。对yt和y0进行二进制表达(−1和1),并在公式(1)中引入正则项,最终的能量函数的表达式如下。
(4)
理论上,每个通道上的能量函数都有M个。如果使用SGD等迭代算法来求解,那么计算将是繁重的。幸运的是,公式(4)有
和bt的解析解,如公式(5)和公式(6)所示。
(5)
(6)
其中,
是目标通道中除神经元t之外其他神经元的平均值,
是目标通道中除神经元t之外其他神经元的方差,其计算公式如下:
(7)
(8)
由于公式(7)和公式(8)代表的是在单个通道上获得的解析解,因此Yang等人对此做了一个合理的假设,即假设在单个通道中,每个像素都服从相同的分布。基于这个假设,可以计算出该通道上所有神经元输出值的平均值和方差。通过这种方式可以赋予该通道上的所有神经元更高的重要性,因为它们共享相似的数据特征,这有助于模型更好地理解和利用通道内的信息。同时,它可以防止预测模型迭代计算每一个位置上的
和
,显著地降低了模型的计算量。综上,最小能量的计算表,达式如下所示:
(9)
其中
是单个通道中所有神经元的平均值,
是单个通道所有神经元的方差,计算公式如下:
(10)
(11)
公式(9)表明,当神经元t的能量越低时,神经元t与它附近的神经元之间存在的差异越大,在视觉处理中预测模型对神经元t的关注就越多。因此,各个神经元的权重可以通过计算
得到。最后,经过SimAM注意力机制增强后的特征
的最终结果如式(12)所示。
(12)
X为输入的特征图,
为增强后的特征图。E为特征图中所有
值的集合。⊙为点积运算。为防止E值出现过大的情况,通过sigmoid函数来限制E值。
具体来说,SimAM计算能量,并推断当特定神经元的能量较低时,其与其他神经元的差异越大,表明其重要性较高。因此,SimAM注意机制在不引入额外参数的情况下,能够准确捕获图像特征中的关键信息,具有较大的实际应用价值。改进后的网络结构如图3所示。
Figure 3. Comparison of the structure of the Backbone network before and after improvement
图3. 改进前后BackBone端的结构对比
在YOLOv8的BackBone结构中引入SimAM注意力模块,使模型充分利用有限的GPU资源,筛选出更为有价值的目标特征信息,通过引入SimAM注意力模块,实现在不增加模型参数、网络模型深度的前提下,增加特征的提取效率,提高模型的检测性能。在目标检测任务中,主干网络对不同目标关注的特征是多样的。初始阶段以相同的重视程度处理每个特征图可以加快网络的收敛速度。同时,在保持实时性的同时,SimAM无参注意力模块不引入额外参数,有助于保持模型的紧凑性,并且在不损害性能的情况下提高了平均精度(mAP),因此选择SimAM无参注意力模块是一个明智的选择。
2.2.2. 小目标检测层
小目标检测一直是目标检测领域的一个挑战,因为小目标通常具有较低的分辨率和较少的特征信息,容易被忽略或误分类。在原始的YOLOv8中,由于采用了相对于原图较大的下采样倍率,即较大的感受野,虽然可以预测一些尺度较大的目标,但较小的目标往往无法得到充分地注意和精确地定位,因此,YOLOv8原始模型在检测小目标方面表现不佳。该模型的输入图像大小为640 × 640,最小检测尺度为80 × 80,每个网格的感受野为8 × 8。如果原始图像中的目标尺寸小于8像素,原始网络将很难识别网格内的目标特征信息[19]。
因此,本研究提出了增加小目标检测层的方法,在模型中增加了一个160 × 160尺度的小目标检测层,如图4中的黑色框所示。该层包括额外的融合特征层和新增的检测头,旨在增强小目标的语义信息和特征表达能力。首先,将主干网络(Backbone)中的第五层的80 × 80尺度特征层与特征金字塔网络(Neck)中的上采样特征层继续向上堆叠,经过通道到空间的处理和上采样操作后,得到一个深层语义特征层,其中包含小目标的特征信息。接着,将这一深层特征层与主干网络中第三层的浅层位置特征层进行堆叠,以完善160 × 160尺度的融合特征层,以增强对小目标的语义特征和位置信息表达能力。最后,通过一个额外的解耦头(Decoupled Head)将这些特征送入模型的输出层[20]。
Figure 4. Small object detection layer network
图4. 小目标检测层网络
因此,通过在Head部分进行补充,小目标的特征信息得以通过结构传递至其他三个尺度的特征层,从而增强网络的特征融合能力,提高小目标的检测准确性。同时,引入额外的解耦头可扩大对驾驶员分心行为的检测范围,另外,通过增加专门的小目标检测头,可以提供更多的定位信息,从而减少目标定位的误差。检测精度以及范围的改进,使得网络更加精确地识别驾驶员的分心行为。
2.2.3. 改进Loss损失函数
边界框回归的损失函数在目标检测中扮演着关键角色,其良好定义将显著提升模型性能。在YOLOv8中,采用了CIoU作为边界框回归损失函数,它综合考虑了预测框与真实框的长宽比、中心点距离和重叠面积,从而提高了回归定位的准确性,如图5所示。然而,对于小标注框和低质量标注框的回归,CIoU仍存在一定局限性。为解决这一问题,提出了(Focal Efficient Intersection over Union, Focal EIOU) v1,但由于其静态聚焦机制(FM),未充分发挥非单调FM的潜力。因此,本研究引入了具有动态非单调聚焦机制的WIoU损失函数来优化模型。通过动态非单调聚焦机制,将IoU替换为离群度来评估锚框质量,以减弱几何因素对模型的过度惩罚,降低对模型训练的干预,从而增强模型的泛化能力,即:
(13)
(14)
(15)
式中,Wg和Hg代表预测框和真实框的最小外接框的宽度和高度,而Wi和Hi则是预测框和真实框相交区域的宽度和高度,Su表示预测框和真实框的联合区域。为了避免WIoU产生阻碍收敛的梯度,Wg和Hg被分离出来(上标*表示此操作)。这种分离操作有效地消除了阻碍收敛的因素,无需引入新的度量,如纵横比。因此,这降低了CIoU损失函数中长宽比对函数收敛的影响。
Figure 5. Schematic diagram of predicted bounding boxes and ground truth bounding boxes
图5. 预测框与真实框示意图
Wise-IoU不仅考虑了目标之间的相对位置和大小差异,还引入了一种智能权重调整机制,可以自适地调整权重系数,提高驾驶员分心检测的灵活性和鲁棒性本文使用WIoU损失函数替换原始YOLOv8中的边界框回归损失函数对模型进行优化。
3. 实验和结果
3.1. 数据集
为了更好地表现机动车行驶场景下驾驶员的疲劳状态和检验模型的性能,本文通过公开数据集State Farm Distracted Driver Detection数据集和自行从网上收集的真实驾驶环境中的司机图像进行训练,其中包含了驾驶员抽烟、玩手机和喝饮料三类。这三类行为在真实驾驶中不仅出现频率高、危险系数大,是引发交通事故的主要分心因素,而且其识别过程往往涉及对手部小目标物体(如手机、香烟、饮料瓶)的检测,能够有效验证本文所引入的小目标检测层与注意力机制在复杂背景下的特征提取与定位能力。因此,研究聚焦于上述三类行为进行实验。筛选后,对这三类行为的图像进行统一标注,并与自行收集的真实驾驶场景图像进行合并,构建最终用于训练与测试的数据集。如图6所示,即为数据集的部分样本图像。
Figure 6. Sample images
图6. 部分样本图像
3.2. 实验环境和评估指标
本实验使用所搭建的分心驾驶行为检测系统完成测试实验,在训练卷积神经网络的模型时,使用的是具有GPU计算加速功能的服务器,服务器配置环境如表2所示。该实验采取了以下一组超参数:初始学习率为0.01,权重衰减系数为0.0005,迭代次数为300,批次大小为16。
Table 2. Server configuration environment
表2. 服务器配置环境
名称 |
配置 |
系统 |
ubuntu20.04 |
CPU版本 |
Intel (R) Xeon (R) Gold 6330 |
GPU版本 |
RTX 3090 |
内存 |
80GB |
显存 |
24GB x 1 |
深度学习框架 |
PyTorch 1.10.0 |
为了确保更精确地评估目标检测性能,引入了四个基本指标:精确率(P)、召回率(R)、FPS和平均精度均值(mAP)。这些指标的具体计算公式如下(等式(16)~(18)):
(16)
(17)
(18)
3.3. 实验结果分析
3.3.1. 消融实验
归纳总结本章的实验结果,应用在YOLOv8上的各项改进措施与之对应的准确率如图表3所示。
Table 3. Ablation study
表3. 消融实验
模型 |
注意力机制 |
小目标检测层 |
损失函数 |
精确率(%) |
召回率(%) |
YOLOv8 |
|
|
|
86.2 |
86.4 |
改进模型一 |
√ |
|
|
87.8 |
88.1 |
改进模型二 |
√ |
√ |
|
88.3 |
88.1 |
改进模型三 |
√ |
√ |
√ |
90.4 |
90.12 |
从表中可以得出以下结论:与原YOLOv8相比,增加注意力机制后、加入了P2小目标检测层和改进损失函数后,模型的精确率和召回率都有所提高。说明改进后的YOLOv8驾驶员分析状态识别模型具有可靠性和实用性,具有明显的优势。
Figure 7. Comparison of network loss functions
图7. 网络损失函数对比图
网络的损失函数对比图如图7所示。
由上图可以看出,训练过程中四个网路的损失值都逐渐减小。并且都是在前200个epoch时损失函数下降较快,在第250个epoch时模型慢慢收敛,改进后的YOLOv8网络即YOLOv8 + SimAM + P2 + WIoU网络的收敛效果最好,损失值为0.232。
3.3.2. 对比实验
为了体现本文改进的模型具有良好的性能,使用相同的数据训练Faster-RCNN、SSD、YOLOv7、YOLOv8等模型进行对比,本文所改进的模型在mAP和检测速度上均有一定的优势。各模型的检测结果如表4所示。
Table 4. comparison of experimental results
表4. 对比实验结果
模型 |
mAP |
face |
smoke |
phone |
drink |
检测速度(FPS) |
Faster-RCNN |
75.44 |
91.38 |
51.41 |
65.44 |
93.51 |
36 |
SSD |
72.73 |
93.54 |
37.90 |
69.70 |
89.76 |
47 |
YOLOv7 |
85.71 |
93.13 |
77.37 |
82.10 |
91.24 |
67 |
YOLOv8 |
87.18 |
92.60 |
79.90 |
84.20 |
92.00 |
75 |
本文算法 |
90.50 |
94.50 |
82.80 |
88.80 |
95.80 |
73 |
由表中数据可看出,本文算法的mAP相较于原YOLOv8提升了3.32个百分点,主要体现在香烟和手机等小物体的检测上。对比两种算法的每秒帧率,改进后的YOLOv8相较于原YOLOv8下降了2FPS。这是由于改进后的YOLOv8模型添加了小目标检测层,增加了网络的深度和宽度,从而导致模型参数数量的增加,但提升了小目标的检测效果。
4. 结论
为了及时发现驾驶员的分心驾驶行为以减少交通事故的发生,本文提出了改进的YOLOv8模型。为了筛选出更为有价值的目标特征信息,添加了SimAM注意力机制;针对YOLOv8原模型对小目标的检测能力较差,对较小的目标往往无法得到充分的注意和精确地定位,所以增加小目标检测层;并通过损失函数的改进,提高模型的性能。该模型在分心驾驶行为检测方面优于较新的YOLOv8模型,获得了更准确的检测结果[21] [22]。
未来,为了确保我们的模型能够有效地部署在计算资源有限的车辆设备上,我们的目标是探索模型压缩技术,如量化和修剪,以进一步减小模型参数和权重文件的大小。考虑到车辆应用对延迟敏感的性质,我们也在考虑使用边缘计算解决方案。这将使数据处理更接近数据源,确保更快的响应时间。此外,为了提高模型的检测性能,我们正在考虑将注意力机制的概念与轻量级网络架构相结合,在不增加计算成本的情况下提高检测性能。