李春华,王玲玲,左 珺,付睿智
(1.河北科技大学文法学院,河北石家庄 050018; 2.河北科技大学信息科学与工程学院,河北石家庄 050018;3.河北工业职业大学工商管理系, 河北石家庄 050091)
随着人口老龄化趋势的日益加剧,老年群体的健康问题备受关注。跌倒是造成老年人伤害甚至死亡的重要原因,不仅会给老人自身带来痛苦和困扰,还给家庭、社会和国家带来了许多影响[1]。为了应对处置这些危险,需要进行快速准确的跌倒检测。
近年来,随着深度学习[2]的发展,目标检测算法取得了重大进展。现有算法可以分为二阶段(two-stage)检测算法和一阶段(one-stage)检测算法2类[3]。二阶段检测算法需要先通过CNN(convolutional neural networks)[4]网络等方法锚定候选区域(region proposal)[5],再在候选区域上进行分类与回归。一阶段检测算法有SSD(single shot multibox detector)[6],YOLO(you only look once)[7]等,可以仅使用一个CNN网络直接预测不同目标的类别与位置,经过单次检测得到最终的检测结果。其中YOLO算法提供end-to-end的检测,即一端输入原始数据一端输出最后的结果,检测速度更快,能实时检测跌倒行为,快速响应,降低跌倒带来的损害。由于跌倒行为在不同的环境和姿势下呈现出多样性,YOLO算法可能会受到这些变化的影响,导致检测结果的不稳定性和不准确性。
针对上述问题,提出一种实时准确的跌倒检测算法,在YOLOv5算法[8]基础上引入改进的RepVGG模块,以提高检测特征的可靠性,采用K-Means++算法聚类优化训练数据集,以增强分类特征的显著性。
YOLOv5网络模仿人体大脑对数据进行学习和分析的过程,通过人工智能网络训练,自动提取行为特征,得到模型分类最佳的权重,高效分类跌倒行为和非跌倒行为。在YOLOv5算法中,YOLOv5s模型相对较小,具有参数少和计算量低、检测速度更快的优势,所以能够在资源受限的移动设备上高效运行,以高精度和低成本实现目标检测任务[9]。改进算法以YOLOv5s为基础模型并对其进行改进,算法框架如图1所示。首先,对原始图像进行填充、自适应锚框预处理等;然后,经过主干网络的Focus结构和C3卷积网络进行行为特征提取;再次,基于SPP结构生成分类特征,将Neck颈部层PAN+ FPN[10]的网络结构与C3_1×N进行特征融合后,在网络输出端预测跌倒行为是否发生;最后,筛选出目标框,输出跌倒检测结果图像。
YOLOv5s的网络结构主要分为输入端、Backbone主干网络、Neck颈部层、Prediction预测层4个部分。其中Backbone主干网络又包括Focus,C3和SPP(spatial pyramid pooling)3个模块[11]。Focus模块实现了自我复制和切片操作,以减少计算量和加快特征提取的速度,它通过将输入图像分割成4个较小的图像块,并将它们连接在一起,形成了一个更深的特征图。在C3模块中,通过卷积、归一化和激活操作对输入图像进行处理,其中使用了CSP(cross stage partial)残差结构来优化网络中的梯度信息,并减少推理的计算量,从而加快网络的计算速度[12]。CSP结构将特征图分成2部分,其中一部分进行卷积操作,另一部分直接与卷积结果相加,以增强特征的表示能力。SPP模块用于解决输入图像尺寸不统一的问题[13],通过对输入特征图进行空间金字塔池化操作,将不同尺度的特征图转换为相同尺度的特征图,增强目标检测的能力。颈部层位于主干网络和预测层之间,主要负责特征融合。YOLOv5s使用了PAN(path aggregation network)和FPN(feature pyramid network)的结构来融合不同层次的特征图,这种融合方式有助于综合不同层次的特征信息,提高目标检测的精度和鲁棒性。预测层是YOLOv5s的最后一部分,它分别在网络的第18层、21层和24层作为输出端进行预测,这些预测层会产生大量的预测框,并通过非极大值抑制(NMS)[14]筛选目标框。
复杂应用场景下,传统的YOLOv5模型易出现漏检和错检的问题,检测精度不高。在YOLOv5s模型的基础上,一方面在Backbone主干网络添加RepVGGs模块,以便增强目标特征提取能力,降低复杂背景的干扰;另一方面改进损失函数,实现对High IoU(high intersection over union)目标高精度的回归。改进后的网络结构如图2所示。
图2 改进后的YOLOv5s网络结构Fig.2 Improved YOLOv5s network architecture
1.2.1 引入RepVGGs模块
RepVGGs[15]是一种简单而有效的卷积神经网络结构,RepVGG模块如图3所示。它的主要特点是采用了重复使用的块结构,其中每块由一个或多个3×3卷积层和ReLU激活函数组成。每个块与一个1×1卷积层并行处理,用于调整通道数。通过这样的设计,RepVGG块可以在保持较少参数的同时,提供更丰富的特征表示能力。RepVGG还引入了一种与ResNet[16]类似的设计思想,即引入shortcut连接。这些shortcut连接通过跳跃连接的方式,将输入直接连接到输出,能够捕获更丰富的特征。这种设计使得RepVGG可以在更深的层次上学习和利用信息,增强了模型的表示能力,特别适用于在GPU和专用推理芯片上进行高效的目标识别和分类任务。
图3 RepVGG模块示意图Fig.3 Schematic diagram of RepVGG module
RepVGG采用的ReLU激活函数可能出现梯度消失的问题,导致在训练过程中无法进行有效的权重更新。因此提出的算法在RepVGG的基础上进行改进,使用SiLU激活函数代替ReLU函数,如图4所示。
图4 改进RepVGG模块示意图Fig.4 Schematic diagram of improved RepVGG module
相较于传统的ReLU激活函数,SiLU具有更加平滑的特性,在整个输入范围内都具有连续的导数,这有助于更好地传播梯度和提高模型的训练效果,减轻梯度消失问题,并且SiLU的平滑特性有助于更好地保留和融合特征信息,提高了网络的表示能力和学习能力[17]。这种改进可以帮助模型更好地捕捉和利用特征之间的相关性,从而提高目标检测的准确性和鲁棒性。
改进后的RepVGG模块结合了多分支模型训练的优势和单路模型推理的高效。在模型训练阶段,多分支残差结构使得网络具有多条梯度流通路径,从而提高训练的精度和速度,实验结果表明,精确率提高了0.83%。
1.2.2 改进损失函数
损失函数是衡量模型预测结果准确性的一种方法。早期损失函数主要用于边界框回归,然而随着目标检测方法的发展,近年来更多地采用IoU作为定位损失。IoU损失是一种衡量预测框与真实框重叠程度的指标。它通过计算预测框和真实框的交集面积与并集面积之比评估定位的准确性。当预测框与真实框不重叠时,IoU损失梯度消失接近于0,无法提供足够的更新信号来调整模型的参数,导致模型收敛减慢。由此也就激发了几种改进的基于IoU的损失函数,为了解决当IoU Loss恒等于0时,梯度恒为0,导致无法反向传播的问题,REZATOFIGI等[18]提出了GIoU Loss。ZHENG等[19]认为衡量预测框的好坏应该考虑预测框与真实框的中心点距离以及长宽比之间的差异等因素,于是提出了DIoU和CIoU。然而它们都无法对High IoU的目标实现高精度的回归,因此本文使用损失函数Alpha IoU Loss[20],通过引入power变换,将现有的基于IoU的损失函数(包括GIoU,DIoU和CIoU)综合到一个新的power IoU损失函数中,以实现更准确的边界框回归和目标检测效果。实验结果表明,通过调整损失函数中的超参数α,可以有针对性地增加High IoU目标的损失和梯度,从而提高边界框回归精度。
Alpha IoU Loss的定义为
(1)
加入惩罚项时,上述公式可以扩展到更加一般的形式:
lα-IoU=1-IoUα1+pα2(B,Bgt) ,
(2)
式中:α-IoU可以通过压缩表示出GIoU,DIoU,CIoU。实验结果表明,参数α(α>1)增加了High IoU目标的损失和梯度,进而提高了bbox回归精度。为了提高High IoU 目标的回归精度,本文使用Alpha IoU Loss代替CIoU Loss,经过实验测试表明,α参数为3取得的效果最好,并且精确率较改进前提高了0.56%。
在训练时,YOLOv5s采用K-means算法对COCO数据集进行聚类预处理并生成目标物体的锚框。K-means算法虽然简单,易于实现,但在聚类之前需要自主选择初始化的k个样本作为初始聚类中心,这些初始中心是需要人为确定的,并且在实际应用过程中不同的初始聚类中心可能导致完全不同的聚类结果。当k值较小时,K-means算法产生的锚框的值较大,容易导致模型无法定位较小的目标;当k值较大时,运算量增大降低效率。
确定合适的锚框大小是实现高精度检测的前提,由于K-means算法的初始化样本数量难以预见,影响预测模型性能。因此,采用K-means++算法对所用数据集进行聚类优化,以获取适合不同尺寸的目标物体的锚框。K-means++算法的聚类中心通过“轮盘法”生成,轮盘法的基本思想是将一系列对象(通常是候选解或个体)与一个带权重的轮盘相联系,其中每个对象的权重与其被选择的概率成正比,可以克服K-means的不足,更好地选择初始化聚类中心,提高聚类的质量和稳定性。K-means++算法步骤如下。
1) 在数据点中随机选择一个中心点mi。
2) 使用欧式距离平方计算其余采样点x与中心点mi的距离D(x):
(3)
3)分别计算每个采样点成为新聚类中心点的概率,选取概率值最大的点成为新的聚类中心。
4)重复步骤2)和步骤3),直到选出k个初始聚类中心点,对于每个初始聚类中心点i∈{1,2,…,k},定义最近点集M并更新M集的质心。
K-means++聚类优化算法对比实验结果,如图5所示。图5 a)为K-means算法检测得到的目标物体的锚框,尺寸为[23,22,17,27,32,23],[39,71,77,51,60,114],[129,93,197,244,403,239],相对于目标对象偏大;图5 b)为K-means++算法检测得到的目标物体的锚框,尺寸为[8,24,10,45,14,34],[20,55,23,80,26,38],[38,68,59,112,98,198],锚框缩小,较为准确地框定目标对象。
图5 聚类对比结果图Fig.5 Cluster comparison result graph
实验中使用的数据集分为2类,一类选取通用数据集UR-Fall-Detection和Le2i Fall Detection Dataset中的跌倒图像,共3 500多张图片;另一类为自建数据集,从网络收集跌倒图片进行创建,共500多张图片。图片分为2个子集:训练集和测试集,其中训练集占总数的92%,测试集占总数的8%,数据标注格式统一为VOC数据格式,标注了人体框的3个姿态:up(站立)、bending(弯腰,蹲下)和down(躺下)。
实验训练环境和框架等具体配置如表1所示。实验使用YOLOv5s优化算法进行训练,训练迭代轮数epochs=200,batchsize=4,输入图像大小为640×640。为了客观评价提出网络模型的性能,使用精确率(precision,P)、召回率(recall,R)、平均精度(average precision,AP)、平均精度均值(mAP),计算公式如下:
表1 实验环境配置Tab.1 Experimental environment configuration
(4)
(5)
式中:TP(true positives)表示正确识别为正样本的正样本数量;FP(false positives)表示错误识别为正样本的负样本数量;FN(false negatives)表示错误识别为负样本的正样本数量;N表示目标类别的数量;AP表示IoU阈值为0.5情况下模型的检测性能,代表P-R曲线与坐标系围成的面积,AP值越高,表明模型越准确地检测出目标;mAP表示各类别AP的平均值,该值越高网络性能越好。
为了更充分地分析所提的K-means++聚类锚框、改进RepVGG模块、Alpha IoU Loss对最终模型检测的贡献度,设计了7组消融实验,系统分析每个改进部分对最终跌倒检测算法的影响,从而更全面地评估优化算法的有效性和优势。
为了验证所提方法的有效性和可靠性,本文将模型的检测结果与目前一些主流的深度学习算法—YOLOv3算法、YOLOv4,YOLOv5s和CBAM-YOLOv5s算法[21]进行对比分析。
实验结果如表2所示。由表2可知,基准模型YOLOv5s添加RepVGGs模块和K-means++聚类后,精确率提升了1.49%,mAP0.5值提升了1.57%,mAP(0.5~0.95)值提升了1.27%;基准模型YOLOv5s添加RepVGGs模块和Alpha IoU Loss后,精确率提升了1.02%,mAP0.5值提升了1.17%,mAP(0.5~0.95)值提升了1.08%。相较于基准模型,本文算法精确率提升了2.36%,mAP0.5值提升了1.84%,mAP(0.5~0.95)值提升了4.68%。综上可知,提出的3种改进方式均能够提升模型的性能,同时与基准模型或者使用任一种以上模块的模型相比,使用本文所提出的完整模型性能最优,检测效果最好。
表2 消融实验结果Tab.2 Ablation experiment result table
对比结果如表3所示。由表3可知,所提YOLOv5s优化模型相较于其他模型检测效果最好。其中P比YOLOv3,YOLOv4,YOLOv5和CBAM-YOLOv5s分别提高了8.75%,8.02%,2.96%和1.12%;R比YOLOv3,YOLOv4,YOLOv5和CBAM-YOLOv5s分别提高了7.55%,7.31%,2.19%和1.60%;mAP0.5比YOLOv3,YOLOv4,YOLOv5和CBAM-YOLOv5s分别提高了8.07%,7.09%,1.84%和0.70%;mAP(0.5~0.95)比YOLOv3,YOLOv4,YOLOv5和CBAM-YOLOv5s分别提高了7.26%,6.40%,4.68%和3.15%,各项指标显著高于其他模型。优化算法的训练时长为10.5 h,模型大小为15.4 MB,由于引入新的网络模块,网络变得更深且参数更多,相较于 YOLOv5s算法,训练时间和模型大小略微增加。
表3 不同模型实验结果对比表Tab.3 Comparison table of experimental results of different models
使用网上随机选取场景下老人跌倒情况的视频或者图片作为测试样本,分单目标和多目标2种情况测试检测算法的性能,检测结果分别如图6和图7所示。所提算法标注了人体框的3个姿态,其中跌倒状态单目标和多目标的平均置信度为92.2%,明显优于其余4类算法的80.4%,84.5%,88.2%,90.5%。可见,所提算法在不同场景下的检测性能均得到改善,鲁棒性得到提升。
图6 家庭场景模型检测结果Fig.6 Home scene model detection results
图7 通用场景模型检测结果Fig.7 Generic scenario model detection results
最终的模型评估结果如图8所示。经过200轮(epoch)的模型训练,模型精确率达到97%;整个训练过程中,R和mAP0.5持续提升,并逐渐接近于100%。在RTX 3090(24 GB) ×1上,识别速度达到30帧/s,能够较好地满足实时检测的要求。
图8 模型评估结果Fig.8 Model evaluation results
所提YOLOv5s改进模型的P-R曲线如图9所示。通过P-R曲线,可以得出以下结论。在大部分情况下,绿色曲线(down)更接近坐标(1,1)的位置,相比于浅蓝色曲线(up)和黄色曲线(bending),绿色曲线表示的类别更具准确性。同时,深蓝色曲线表示的所有类别的mAP也高于up类别曲线和bending类别曲线,这表明改进后的YOLOv5s模型显著提升了检测准确性。图10为改进后的算法与其他4类算法在训练时的mAP对比。从图10可以清楚看出,改进后模型的检测精度优于其他4个模型,且有了显著的提升,取得了更好的检测效果。
图9 改进YOLOv5s算法的P-R曲线Fig.9 Improved the P-R curve of YOLOv5s algorithm
图10 改进YOLOv5s与其他算法训练时mAP对比图Fig.10 Comparison of mAP during training between the improved algorithm and other algorithms
为了改善YOLOv5s算法在人体跌倒检测方面仍存在实时性和准确性较差,不同场景易出现误判和漏检的情况,所提算法针对YOLOv5s在特征提取等部分存在的不足进行了改进,使用K-means++算法对所用数据集进行聚类优化,改进损失函数,使得模型更关注于高质量的正样本信息,因此提升了检测精度和检测速度。结果表明,所提算法的准确率高于YOLOv5s算法,能够满足现实中不同场景对老人跌倒行为的检测需求,可以应用于移动设备或者监控设备中,完成跌倒检测和报警工作。但所提算法在检测人物出现遮挡或者光线较暗情况下的检测效果还需进一步研究。今后将致力于提升算法对遮挡人物和光线情况下的鲁棒性研究,以便能够适用更加复杂的检测场景。